diff --git a/pom.xml b/pom.xml index 1a84b3d..306ad58 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ org.gcube.vremanagement smart-executor-client - 1.7.0-SNAPSHOT + 2.0.0-SNAPSHOT Smart Executor Service Client Library jar @@ -57,7 +57,15 @@ org.gcube.vremanagement smart-executor-api - [1.7.0-SNAPSHOT, 2.0.0-SNAPSHOT) + [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) + + + org.gcube.common + gxHTTP + + + org.glassfish.jersey.core + jersey-client org.slf4j diff --git a/src/main/java/org/gcube/vremanagement/executor/client/Constants.java b/src/main/java/org/gcube/vremanagement/executor/client/Constants.java index 7629cb4..ef3069e 100644 --- a/src/main/java/org/gcube/vremanagement/executor/client/Constants.java +++ b/src/main/java/org/gcube/vremanagement/executor/client/Constants.java @@ -1,10 +1,5 @@ package org.gcube.vremanagement.executor.client; -import javax.xml.namespace.QName; - -import org.gcube.common.calls.jaxws.GcubeService; -import org.gcube.vremanagement.executor.api.SmartExecutor; - /** * @author Luca Frosini (ISTI - CNR) */ @@ -15,27 +10,4 @@ public class Constants { public static final String SERVICE_NAME = "SmartExecutor"; public static final String SERVICE_ENTRY_NAME = "org.gcube.vremanagement.executor.ResourceInitializer"; - - /* Used for SOAP */ - - /* Must be the same of generated WEB-INF/gcube-app.xml */ - /** - * Use SERVICE_CLASS instead - */ - @Deprecated - public static final String GCUBE_SERVICE_CLASS = SERVICE_CLASS; - /** - * Use SERVICE_NAME instead - */ - @Deprecated - public static final String GCUBE_SERVICE_NAME = SERVICE_NAME; - - @Deprecated - public static final QName SMART_EXECUTOR_QNAME = new QName(SmartExecutor.TARGET_NAMESPACE, SmartExecutor.WEB_SERVICE_SERVICE_NAME); - @Deprecated - public static final GcubeService smartExecutor = GcubeService.service().withName(SMART_EXECUTOR_QNAME).andInterface(SmartExecutor.class); - - - - } diff --git a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClient.java b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClient.java new file mode 100644 index 0000000..994f93a --- /dev/null +++ b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClient.java @@ -0,0 +1,7 @@ +package org.gcube.vremanagement.executor.client; + +import org.gcube.vremanagement.executor.api.rest.SmartExecutor; + +public interface SmartExecutorClient extends SmartExecutor { + +} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientFactory.java b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientFactory.java index 7dd0cc5..40b5cca 100644 --- a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientFactory.java +++ b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientFactory.java @@ -5,30 +5,20 @@ import java.util.Map; import java.util.Random; import org.gcube.vremanagement.executor.api.rest.SmartExecutor; -import org.gcube.vremanagement.executor.client.plugins.ExecutorPlugin; -import org.gcube.vremanagement.executor.client.plugins.query.SmartExecutorPluginQuery; import org.gcube.vremanagement.executor.client.query.Discover; -import org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter; -import org.gcube.vremanagement.executor.client.query.filter.ServiceEndpointQueryFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) */ -@SuppressWarnings("deprecation") public class SmartExecutorClientFactory { - private static final Logger logger = LoggerFactory.getLogger(SmartExecutorClientFactory.class); - private static String FORCED_URL = null; protected static void forceToURL(String url) { FORCED_URL = url; } - public static SmartExecutor create(String pluginName, Map capabilites, - ServiceEndpointQueryFilter serviceEndpointQueryFilter, GCoreEndpointQueryFilter gCoreEndpointQueryFilter) { + public static SmartExecutor create(String pluginName, Map capabilites) { if(FORCED_URL != null) { return new SmartExecutorClientImpl(pluginName, FORCED_URL); @@ -37,36 +27,15 @@ public class SmartExecutorClientFactory { Discover discover = new Discover(Constants.SERVICE_ENTRY_NAME); discover.filterByPluginName(pluginName); discover.filterByCapabilities(capabilites); - discover.setServiceEndpointQueryFilter(serviceEndpointQueryFilter); - discover.setGCoreEndpointQueryFilter(gCoreEndpointQueryFilter); List addresses = discover.getAddresses(); - if(addresses == null || addresses.isEmpty()) { - logger.debug("No REST smart-executor found. Looking for old SOAP Version"); - - ExecutorPlugin executorPlugin = new ExecutorPlugin(); - discover = new SmartExecutorPluginQuery(executorPlugin); - discover.filterByPluginName(pluginName); - discover.filterByCapabilities(capabilites); - discover.setServiceEndpointQueryFilter(serviceEndpointQueryFilter); - discover.setGCoreEndpointQueryFilter(gCoreEndpointQueryFilter); - - addresses = discover.getAddresses(); - if(addresses == null || addresses.isEmpty()) { - String error = String.format("No %s:%s found in the current context", Constants.SERVICE_CLASS, - Constants.SERVICE_NAME); - throw new RuntimeException(error); - } - return new SmartExecutorClientSOAPWrapper((SmartExecutorPluginQuery) discover, executorPlugin); - } - Random random = new Random(); int index = random.nextInt(addresses.size()); return new SmartExecutorClientImpl(pluginName, addresses.get(index)); } - public static SmartExecutor create(String pluginName) { - return create(pluginName, null, null, null); + public static SmartExecutor create(String pluginName, String address) { + return new SmartExecutorClientImpl(pluginName, address); } } diff --git a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java index 919bec6..11ecb88 100644 --- a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java +++ b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientImpl.java @@ -1,16 +1,23 @@ package org.gcube.vremanagement.executor.client; -import java.io.StringWriter; -import java.net.MalformedURLException; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import javax.ws.rs.ForbiddenException; +import javax.ws.rs.NotFoundException; +import javax.ws.rs.WebApplicationException; + +import org.gcube.common.gxhttp.reference.GXConnection; +import org.gcube.common.gxhttp.reference.GXConnection.HTTPMETHOD; +import org.gcube.common.gxhttp.request.GXHTTPStringRequest; import org.gcube.vremanagement.executor.api.rest.RestConstants; -import org.gcube.vremanagement.executor.api.rest.SmartExecutor; import org.gcube.vremanagement.executor.api.types.LaunchParameter; -import org.gcube.vremanagement.executor.client.util.HTTPCall; -import org.gcube.vremanagement.executor.client.util.HTTPCall.HTTPMETHOD; import org.gcube.vremanagement.executor.exception.ExecutorException; import org.gcube.vremanagement.executor.exception.InputsNullException; import org.gcube.vremanagement.executor.exception.LaunchException; @@ -24,7 +31,7 @@ import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) */ -public class SmartExecutorClientImpl implements SmartExecutor { +public class SmartExecutorClientImpl implements SmartExecutorClient { private static final Logger logger = LoggerFactory.getLogger(SmartExecutorClientImpl.class); @@ -32,7 +39,6 @@ public class SmartExecutorClientImpl implements SmartExecutor { protected final String pluginName; protected final String address; - protected HTTPCall httpCall; public SmartExecutorClientImpl(String pluginName, String address) { this.pluginName = pluginName; @@ -40,11 +46,51 @@ public class SmartExecutorClientImpl implements SmartExecutor { } - private HTTPCall getHTTPCall() throws MalformedURLException { - if(httpCall == null) { - httpCall = new HTTPCall(address, SmartExecutorClientImpl.class.getSimpleName()); + protected static StringBuilder getStringBuilder(InputStream inputStream) throws IOException { + StringBuilder result = new StringBuilder(); + try(BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { + String line; + while((line = reader.readLine()) != null) { + result.append(line); + } + } + + return result; + } + + protected String parseHttpURLConnection(HttpURLConnection connection) throws WebApplicationException { + try { + int responseCode = connection.getResponseCode(); + // String responseMessage = connection.getResponseMessage(); + + if(connection.getRequestMethod().compareTo(HTTPMETHOD.HEAD.toString()) == 0) { + if(responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + return null; + } + if(responseCode == HttpURLConnection.HTTP_NOT_FOUND) { + throw new NotFoundException(); + } + if(responseCode == HttpURLConnection.HTTP_FORBIDDEN) { + throw new ForbiddenException(); + } + } + + if(responseCode >= HttpURLConnection.HTTP_BAD_REQUEST) { + InputStream inputStream = connection.getErrorStream(); + StringBuilder result = getStringBuilder(inputStream); + String res = result.toString(); + throw new WebApplicationException(res, responseCode); + } + + StringBuilder result = getStringBuilder(connection.getInputStream()); + return result.toString(); + } catch (WebApplicationException e) { + throw e; + } catch (Exception e) { + throw new WebApplicationException(e); + } finally { + connection.disconnect(); } - return httpCall; } @Override @@ -53,14 +99,16 @@ public class SmartExecutorClientImpl implements SmartExecutor { try { logger.info("Going to launch {} ", launchParameter); - StringWriter stringWriter = new StringWriter(); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(RestConstants.PLUGINS_PATH_PART); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(pluginName); - HTTPCall httpCall = getHTTPCall(); - String uuid = httpCall.call(String.class, stringWriter.toString(), HTTPMETHOD.POST, launchParameter); + GXHTTPStringRequest gxHTTPStringRequest = GXHTTPStringRequest.newRequest(address); + gxHTTPStringRequest.from(SmartExecutorClient.class.getSimpleName()); + gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + gxHTTPStringRequest.header("Accept", "text/plain"); + gxHTTPStringRequest.path(RestConstants.PLUGINS_PATH_PART); + gxHTTPStringRequest.path(pluginName); + + HttpURLConnection httpURLConnection = gxHTTPStringRequest.post(launchParameter); + String uuid = parseHttpURLConnection(httpURLConnection); logger.debug("{} launched with UUID {} ", pluginName, uuid); return uuid; @@ -88,21 +136,22 @@ public class SmartExecutorClientImpl implements SmartExecutor { public String getPluginStateEvolution(String executionIdentifier, Integer iterationNumber) throws PluginInstanceNotFoundException, ExecutorException { try { logger.info("Going to get {} of {} with UUID {} ", PluginStateEvolution.class.getSimpleName(), pluginName, executionIdentifier); - StringWriter stringWriter = new StringWriter(); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(RestConstants.PLUGINS_PATH_PART); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(pluginName); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(executionIdentifier); - HTTPCall httpCall = getHTTPCall(); - Map parameters = new HashMap<>(); + GXHTTPStringRequest gxHTTPStringRequest = GXHTTPStringRequest.newRequest(address); + gxHTTPStringRequest.from(SmartExecutorClient.class.getSimpleName()); + gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + gxHTTPStringRequest.path(RestConstants.PLUGINS_PATH_PART); + gxHTTPStringRequest.path(pluginName); + gxHTTPStringRequest.path(executionIdentifier); + if(iterationNumber!=null) { - parameters.put(RestConstants.ITERATION_NUMBER_PARAM, iterationNumber.intValue()); + Map parameters = new HashMap<>(); + parameters.put(RestConstants.ITERATION_NUMBER_PARAM, Integer.toString(iterationNumber)); + gxHTTPStringRequest.queryParams(parameters); } - String pluginStateEvolution = httpCall.call(String.class, stringWriter.toString(), HTTPMETHOD.GET, parameters); + HttpURLConnection httpURLConnection = gxHTTPStringRequest.get(); + String pluginStateEvolution = parseHttpURLConnection(httpURLConnection); return pluginStateEvolution; } catch(ExecutorException e) { throw e; @@ -127,18 +176,21 @@ public class SmartExecutorClientImpl implements SmartExecutor { public boolean delete(String executionIdentifier, boolean globally) throws ExecutorException { try { logger.info("Going to stop plugin with UUID {} ", executionIdentifier); - StringWriter stringWriter = new StringWriter(); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(RestConstants.PLUGINS_PATH_PART); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(pluginName); - stringWriter.append(PATH_SEPARATOR); - stringWriter.append(executionIdentifier); - HTTPCall httpCall = getHTTPCall(); - Map parameters = new HashMap<>(); - parameters.put(RestConstants.GLOBALLY_PARAM, globally); - Boolean stopped = httpCall.call(Boolean.class, stringWriter.toString(), HTTPMETHOD.DELETE, parameters); + GXHTTPStringRequest gxHTTPStringRequest = GXHTTPStringRequest.newRequest(address); + gxHTTPStringRequest.from(SmartExecutorClient.class.getSimpleName()); + gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + gxHTTPStringRequest.path(RestConstants.PLUGINS_PATH_PART); + gxHTTPStringRequest.path(pluginName); + gxHTTPStringRequest.path(executionIdentifier); + + Map parameters = new HashMap<>(); + parameters.put(RestConstants.GLOBALLY_PARAM, Boolean.toString(globally)); + gxHTTPStringRequest.queryParams(parameters); + + HttpURLConnection httpURLConnection = gxHTTPStringRequest.delete(); + String stoppedString = parseHttpURLConnection(httpURLConnection); + Boolean stopped = Boolean.valueOf(stoppedString); logger.debug("Plugin with UUID {} {} stopped", executionIdentifier, stopped ? "successfully" : "was not"); return stopped; diff --git a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientSOAPWrapper.java b/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientSOAPWrapper.java deleted file mode 100644 index f2f1574..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/SmartExecutorClientSOAPWrapper.java +++ /dev/null @@ -1,121 +0,0 @@ -package org.gcube.vremanagement.executor.client; - -import java.util.UUID; - -import org.gcube.vremanagement.executor.api.rest.SmartExecutor; -import org.gcube.vremanagement.executor.api.types.LaunchParameter; -import org.gcube.vremanagement.executor.client.plugins.ExecutorPlugin; -import org.gcube.vremanagement.executor.client.plugins.query.SmartExecutorPluginQuery; -import org.gcube.vremanagement.executor.client.proxies.SmartExecutorProxy; -import org.gcube.vremanagement.executor.exception.ExecutorException; -import org.gcube.vremanagement.executor.exception.InputsNullException; -import org.gcube.vremanagement.executor.exception.LaunchException; -import org.gcube.vremanagement.executor.exception.PluginNotFoundException; -import org.gcube.vremanagement.executor.json.SEMapper; -import org.gcube.vremanagement.executor.plugin.PluginStateEvolution; - -/** - * @author Luca Frosini (ISTI - CNR) - * Added to launch plugins running on SOAP only old smart-executor - */ -@SuppressWarnings("deprecation") -class SmartExecutorClientSOAPWrapper implements SmartExecutor { - - public static final String PATH_SEPARATOR = "/"; - - protected SmartExecutorProxy smartExecutorProxy; - - public SmartExecutorClientSOAPWrapper(SmartExecutorProxy smartExecutorProxy) { - this.smartExecutorProxy = smartExecutorProxy; - } - - public SmartExecutorClientSOAPWrapper(SmartExecutorPluginQuery query, ExecutorPlugin executorPlugin) { - this.smartExecutorProxy = ExecutorPlugin.getExecutorProxy(query, executorPlugin).build(); - } - - @Override - public String launch(String launchParameter) - throws InputsNullException, PluginNotFoundException, LaunchException, ExecutorException { - try { - LaunchParameter lp = SEMapper.unmarshal(LaunchParameter.class, launchParameter); - try { - return smartExecutorProxy.launch(lp); - }catch (Exception e) { - throw (Exception) e.getCause(); - } - } catch(ExecutorException e) { - throw e; - } catch(Exception e) { - throw new ExecutorException(e); - } - } - - @Override - public UUID launch(LaunchParameter launchParameter) - throws InputsNullException, PluginNotFoundException, LaunchException, ExecutorException { - try { - try { - String uuid = smartExecutorProxy.launch(launchParameter); - return UUID.fromString(uuid); - }catch (Exception e) { - throw (Exception) e.getCause(); - } - } catch(ExecutorException e) { - throw e; - } catch(Exception e) { - throw new RuntimeException(e); - } - } - - @Override - public String getPluginStateEvolution(String executionIdentifier, Integer iterationNumber) throws ExecutorException { - try { - try { - PluginStateEvolution pluginStateEvolution = null; - if(iterationNumber!=null) { - pluginStateEvolution = smartExecutorProxy.getIterationStateEvolution(executionIdentifier, iterationNumber); - }else { - pluginStateEvolution = smartExecutorProxy.getStateEvolution(executionIdentifier); - } - return SEMapper.marshal(pluginStateEvolution); - }catch (Exception e) { - throw (Exception) e.getCause(); - } - } catch(ExecutorException e) { - throw e; - } catch(Exception e) { - throw new ExecutorException(e); - } - } - - @Override - public PluginStateEvolution getPluginStateEvolution(UUID executionIdentifier, Integer iterationNumber) throws ExecutorException { - try { - try { - PluginStateEvolution pluginStateEvolution = null; - if(iterationNumber!=null) { - pluginStateEvolution = smartExecutorProxy.getIterationStateEvolution(executionIdentifier.toString(), iterationNumber); - }else { - pluginStateEvolution = smartExecutorProxy.getStateEvolution(executionIdentifier.toString()); - } - return pluginStateEvolution; - }catch (Exception e) { - throw (Exception) e.getCause(); - } - } catch(ExecutorException e) { - throw e; - } catch(Exception e) { - throw new RuntimeException(e); - } - } - - @Override - public boolean delete(String executionIdentifier, boolean globally) throws ExecutorException { - return smartExecutorProxy.unSchedule(executionIdentifier, globally); - } - - @Override - public boolean delete(UUID executionIdentifier, boolean globally) throws ExecutorException { - return delete(executionIdentifier.toString(), globally); - } -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/plugins/AbstractPlugin.java b/src/main/java/org/gcube/vremanagement/executor/client/plugins/AbstractPlugin.java deleted file mode 100644 index a24dd94..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/plugins/AbstractPlugin.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.gcube.vremanagement.executor.client.plugins; - -import org.gcube.common.clients.Plugin; -import org.gcube.vremanagement.executor.api.SmartExecutor; -import org.gcube.vremanagement.executor.client.Constants; - -/** - * @author Luca Frosini (ISTI - CNR) - * - * @param - * @param

- */ -@Deprecated -public abstract class AbstractPlugin implements Plugin { - - public final String name; - - public AbstractPlugin(String name) { - this.name=name; - } - - @Override - public String serviceClass() { - return Constants.GCUBE_SERVICE_CLASS; - } - - @Override - public String serviceName() { - return Constants.GCUBE_SERVICE_NAME; - } - - @Override - public String namespace() { - return SmartExecutor.TARGET_NAMESPACE; - } - - @Override - public String name() { - return name; - } - -} \ No newline at end of file diff --git a/src/main/java/org/gcube/vremanagement/executor/client/plugins/ExecutorPlugin.java b/src/main/java/org/gcube/vremanagement/executor/client/plugins/ExecutorPlugin.java deleted file mode 100644 index 8932c9b..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/plugins/ExecutorPlugin.java +++ /dev/null @@ -1,120 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.plugins; - -import javax.xml.ws.EndpointReference; - -import org.gcube.common.calls.jaxws.StubFactory; -import org.gcube.common.clients.ProxyBuilder; -import org.gcube.common.clients.ProxyBuilderImpl; -import org.gcube.common.clients.config.ProxyConfig; -import org.gcube.common.clients.delegates.ProxyDelegate; -import org.gcube.vremanagement.executor.api.SmartExecutor; -import org.gcube.vremanagement.executor.client.Constants; -import org.gcube.vremanagement.executor.client.SmartExecutorClientFactory; -import org.gcube.vremanagement.executor.client.plugins.query.SmartExecutorPluginQuery; -import org.gcube.vremanagement.executor.client.plugins.query.filter.EndpointDiscoveryFilter; -import org.gcube.vremanagement.executor.client.plugins.query.filter.ServiceEndpointQueryFilter; -import org.gcube.vremanagement.executor.client.proxies.DefaultSmartExecutorProxy; -import org.gcube.vremanagement.executor.client.proxies.SmartExecutorProxy; -import org.gcube.vremanagement.executor.client.util.Tuple; - -/** - * @author Luca Frosini (ISTI - CNR) - * Use {@link SmartExecutorClientFactory} instead - */ -@Deprecated -public class ExecutorPlugin extends AbstractPlugin { - - /** - * Use {@link SmartExecutorClientFactory#create(String, java.util.Map, org.gcube.vremanagement.executor.client.query.filter.ServiceEndpointQueryFilter, org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter)} - * instead - * @param pluginName - * @param tuples - * @param serviceEndpointQueryFilter - * @param endpointDiscoveryFilter - * @return - */ - public static ProxyBuilder getExecutorProxy(String pluginName, Tuple[] tuples, - ServiceEndpointQueryFilter serviceEndpointQueryFilter, EndpointDiscoveryFilter endpointDiscoveryFilter) { - ExecutorPlugin executorPlugin = new ExecutorPlugin(); - SmartExecutorPluginQuery query = new SmartExecutorPluginQuery(executorPlugin); - query.addConditions(pluginName, tuples); - query.setServiceEndpointQueryFilter(serviceEndpointQueryFilter); - query.setEndpointDiscoveryFilter(endpointDiscoveryFilter); - return new ProxyBuilderImpl(executorPlugin, query); - } - - /** - * Use {@link SmartExecutorClientFactory#create(String, java.util.Map, org.gcube.vremanagement.executor.client.query.filter.ServiceEndpointQueryFilter, org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter)} - * instead - * @param pluginName - * @param tuples - * @return - */ - @SafeVarargs - public static ProxyBuilder getExecutorProxy(String pluginName, Tuple... tuples) { - ExecutorPlugin executorPlugin = new ExecutorPlugin(); - SmartExecutorPluginQuery query = new SmartExecutorPluginQuery(executorPlugin); - query.addConditions(pluginName, tuples); - return new ProxyBuilderImpl(executorPlugin, query); - } - - /** - * Use {@link SmartExecutorClientFactory#create()} instead - * @return - */ - public static ProxyBuilder getExecutorProxy() { - ExecutorPlugin executorPlugin = new ExecutorPlugin(); - return new ProxyBuilderImpl(executorPlugin); - } - - /** - * For internal use only to support backward compatibility - * @param query - * @param executorPlugin - * @return - */ - @Deprecated - public static ProxyBuilder getExecutorProxy(SmartExecutorPluginQuery query, - ExecutorPlugin executorPlugin) { - return new ProxyBuilderImpl(executorPlugin, query); - } - - /** - * For internal use only to support backward compatibility - * - */ - public ExecutorPlugin() { - super(SmartExecutor.WEB_SERVICE_SERVICE_NAME); - } - - /** - * For internal use only to support backward compatibility - * Use {@link SmartExecutorClientFactory} instead - */ - @Override - public Exception convert(Exception fault, ProxyConfig proxyConfig) { - return fault; - } - - /** - * For internal use only to support backward compatibility - * Use {@link SmartExecutorClientFactory#create(String)} instead - */ - @Override - public SmartExecutorProxy newProxy(ProxyDelegate proxyDelegate) { - return new DefaultSmartExecutorProxy(proxyDelegate); - } - - /** - * For internal use only to support backward compatibility - * Use {@link SmartExecutorClientFactory} instead - */ - @Override - public SmartExecutor resolve(EndpointReference endpoint, ProxyConfig proxyConfig) throws Exception { - return StubFactory.stubFor(Constants.smartExecutor).at(endpoint); - } - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/SmartExecutorPluginQuery.java b/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/SmartExecutorPluginQuery.java deleted file mode 100644 index 87d81b7..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/SmartExecutorPluginQuery.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.plugins.query; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.ws.EndpointReference; -import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder; - -import org.gcube.common.clients.Plugin; -import org.gcube.common.clients.exceptions.DiscoveryException; -import org.gcube.common.clients.queries.Query; -import org.gcube.vremanagement.executor.client.query.Discover; -import org.gcube.vremanagement.executor.client.query.filter.impl.RandomGCoreEndpointQueryFilter; - -/** - * @author Luca Frosini (ISTI - CNR) - * For internal use only to maintain backward compatibility - */ -public class SmartExecutorPluginQuery extends Discover implements Query { - - public SmartExecutorPluginQuery(Plugin plugin){ - super(plugin.name()); - this.endpointDiscoveryFilter = new RandomGCoreEndpointQueryFilter(); - this.containsFormat = "contains($entry/string(),'%1s')"; - } - - @Override - public List fire() throws DiscoveryException { - List refs = new ArrayList(); - try { - List addresses = getAddresses(); - for(String address : addresses) - refs.add(new W3CEndpointReferenceBuilder().address(address).build()); - } catch(org.gcube.resources.discovery.client.api.DiscoveryException ex) { - throw new DiscoveryException(ex); - } - - return refs; - } - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/EndpointDiscoveryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/EndpointDiscoveryFilter.java deleted file mode 100644 index 1faa5a7..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/EndpointDiscoveryFilter.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.plugins.query.filter; - -import java.util.List; - -import org.gcube.common.resources.gcore.ServiceEndpoint; -import org.gcube.resources.discovery.client.queries.api.SimpleQuery; -import org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter; - -/** - * @author Luca Frosini (ISTI - CNR) - * Use {@link GCoreEndpointQueryFilter} instead - */ -@Deprecated -public interface EndpointDiscoveryFilter { - - /** - * @param simpleQuery - * @param serviceEndpoints - */ - @Deprecated - void filter(SimpleQuery simpleQuery, List serviceEndpoints); - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/ListEndpointDiscoveryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/ListEndpointDiscoveryFilter.java deleted file mode 100644 index 582f25a..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/ListEndpointDiscoveryFilter.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.plugins.query.filter; - -import java.util.List; - -import org.gcube.common.resources.gcore.ServiceEndpoint; -import org.gcube.resources.discovery.client.queries.api.SimpleQuery; - -/** - * @author Luca Frosini (ISTI - CNR) - */ -@Deprecated -public class ListEndpointDiscoveryFilter implements EndpointDiscoveryFilter { - - protected static final String containsFormat = "contains($entry/string(),'%1s')"; - - @Override - public void filter(SimpleQuery simpleQuery, List serviceEndpoints) { - - String expression = ""; - int size = serviceEndpoints.size(); - for(int i=0; i serviceEndpoints) { - /* - * Generating a random number, assuring that is positive and - * and limiting from 0 to the number of discovered ServiceEndpoints - * Please note that there is only one ServiceEndpoints for each running - * ghn - */ - Random random = new Random(); - int number = random.nextInt(); - while(number == Integer.MIN_VALUE){ - number = random.nextInt(); - } - number = Math.abs(number); - int i = number % serviceEndpoints.size(); - - /* Getting random hosts using the generated random number*/ - String hostedOn = serviceEndpoints.get(i).profile().runtime().hostedOn(); - simpleQuery.addCondition(format(containsFormat, hostedOn)); - - - } - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/ServiceEndpointQueryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/ServiceEndpointQueryFilter.java deleted file mode 100644 index fa5292a..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/ServiceEndpointQueryFilter.java +++ /dev/null @@ -1,17 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.plugins.query.filter; - -import org.gcube.resources.discovery.client.queries.api.SimpleQuery; - -/** - * @author Luca Frosini (ISTI - CNR) - * Use {@link org.gcube.vremanagement.executor.client.query.filter.ServiceEndpointQueryFilter} instead - */ -@Deprecated -public interface ServiceEndpointQueryFilter { - - public void filter(SimpleQuery simpleQuery); - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/SpecificEndpointDiscoveryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/SpecificEndpointDiscoveryFilter.java deleted file mode 100644 index fbc3246..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/plugins/query/filter/SpecificEndpointDiscoveryFilter.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.plugins.query.filter; - -import static java.lang.String.format; - -import java.util.List; - -import org.gcube.common.resources.gcore.ServiceEndpoint; -import org.gcube.resources.discovery.client.queries.api.SimpleQuery; -import org.gcube.vremanagement.executor.client.query.filter.impl.SpecificGCoreEndpointQueryFilter; - -/** - * @author Luca Frosini (ISTI - CNR) - * Use {@link SpecificGCoreEndpointQueryFilter} instead - */ -@Deprecated -public class SpecificEndpointDiscoveryFilter implements EndpointDiscoveryFilter { - - protected static final String containsFormat = "contains($entry/string(),'%1s')"; - - private String endpointURI; - - public SpecificEndpointDiscoveryFilter(String endpointURI){ - this.endpointURI = endpointURI; - } - - @Override - public void filter(SimpleQuery simpleQuery, List serviceEndpoints) { - simpleQuery.addCondition(format(containsFormat, endpointURI)); - } - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/proxies/DefaultSmartExecutorProxy.java b/src/main/java/org/gcube/vremanagement/executor/client/proxies/DefaultSmartExecutorProxy.java deleted file mode 100644 index 913ee9a..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/proxies/DefaultSmartExecutorProxy.java +++ /dev/null @@ -1,176 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.proxies; - -import static org.gcube.common.clients.exceptions.FaultDSL.again; - -import org.gcube.common.clients.Call; -import org.gcube.common.clients.delegates.ProxyDelegate; -import org.gcube.vremanagement.executor.api.SmartExecutor; -import org.gcube.vremanagement.executor.api.types.LaunchParameter; -import org.gcube.vremanagement.executor.client.SmartExecutorClientFactory; -import org.gcube.vremanagement.executor.exception.ExecutorException; -import org.gcube.vremanagement.executor.exception.InputsNullException; -import org.gcube.vremanagement.executor.exception.LaunchException; -import org.gcube.vremanagement.executor.exception.PluginInstanceNotFoundException; -import org.gcube.vremanagement.executor.exception.PluginNotFoundException; -import org.gcube.vremanagement.executor.plugin.PluginState; -import org.gcube.vremanagement.executor.plugin.PluginStateEvolution; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Luca Frosini (ISTI - CNR) - * Use {@link SmartExecutorClientFactory} instead to obtain {@link org.gcube.vremanagement.executor.api.rest.SmartExecutor} - * instead - */ -@Deprecated -public class DefaultSmartExecutorProxy implements SmartExecutorProxy { - - /** - * Logger - */ - private static Logger logger = LoggerFactory.getLogger(DefaultSmartExecutorProxy.class); - - private ProxyDelegate proxyDelegate; - - public DefaultSmartExecutorProxy(ProxyDelegate proxyDelegate) { - this.proxyDelegate = proxyDelegate; - } - - /** {@inheritDoc} */ - @Override - public String launch(final LaunchParameter launchParameter) - throws InputsNullException, PluginNotFoundException, - LaunchException, ExecutorException { - - Call call = new Call() { - @Override - public String call(SmartExecutor endpoint) throws Exception { - logger.debug("Calling launch() function"); - return endpoint.launch(launchParameter); - } - }; - - try { - return proxyDelegate.make(call); - } catch (Exception e) { - logger.debug("Failed to call launch() function"); - throw again(e).asServiceException(); - } - - } - - /** - * It is the same of calling - * unSchedule(String executionIdentifier, boolean globally) - * Passing false to globally - */ - @Override - public boolean unSchedule(final String executionIdentifier) throws ExecutorException { - return this.unSchedule(executionIdentifier, false); - } - - /** {@inheritDoc} */ - @Override - public boolean unSchedule(final String executionIdentifier, final boolean globally) throws ExecutorException { - Call call = new Call() { - @Override - public Boolean call(SmartExecutor endpoint) throws Exception { - logger.debug("Calling unSchedule(String,boolean) function"); - return endpoint.unSchedule(executionIdentifier, globally); - } - }; - - try { - return proxyDelegate.make(call); - } catch (Exception e) { - logger.debug("Failed to call unSchedule(String,boolean) function"); - throw again(e).asServiceException(); - } - - } - - /** {@inheritDoc} */ - @Deprecated - @Override - public PluginState getState(final String executionIdentifier) - throws PluginInstanceNotFoundException, ExecutorException { - return getStateEvolution(executionIdentifier).getPluginState(); - } - - /** {@inheritDoc} */ - @Override - public PluginStateEvolution getStateEvolution(final String executionIdentifier) - throws PluginInstanceNotFoundException, ExecutorException { - - Call call = new Call() { - @Override - public PluginStateEvolution call(SmartExecutor endpoint) throws Exception { - logger.debug("Calling getState(String) function"); - return endpoint.getStateEvolution(executionIdentifier); - } - }; - - try { - return proxyDelegate.make(call); - } catch (Exception e) { - logger.debug("Failed to call getState(String) function"); - throw again(e).asServiceException(); - } - - } - - /** {@inheritDoc} */ - @Deprecated - @Override - public PluginState getIterationState(final String executionIdentifier, final int iterationNumber) - throws PluginInstanceNotFoundException, ExecutorException { - return getIterationStateEvolution(executionIdentifier, iterationNumber).getPluginState(); - } - - /** {@inheritDoc} */ - @Override - public PluginStateEvolution getIterationStateEvolution(final String executionIdentifier, final int iterationNumber) - throws PluginInstanceNotFoundException, ExecutorException { - - Call call = new Call() { - @Override - public PluginStateEvolution call(SmartExecutor endpoint) throws Exception { - logger.debug("Calling getIterationState(String, int) function"); - return endpoint.getIterationStateEvolution(executionIdentifier, iterationNumber); - } - }; - - try { - return proxyDelegate.make(call); - } catch (Exception e) { - logger.debug("Failed to call getIterationState(String, int) function"); - throw again(e).asServiceException(); - } - } - - - @Override - public boolean stop(final String executionIdentifier) throws ExecutorException { - - Call call = new Call() { - @Override - public Boolean call(SmartExecutor endpoint) throws Exception { - logger.debug("Calling stop(String) function"); - return endpoint.stop(executionIdentifier); - } - }; - - try { - return proxyDelegate.make(call); - } catch (Exception e) { - logger.debug("Failed to call stop(String) function"); - throw again(e).asServiceException(); - } - } - - - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/proxies/SmartExecutorProxy.java b/src/main/java/org/gcube/vremanagement/executor/client/proxies/SmartExecutorProxy.java deleted file mode 100644 index e3a2775..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/proxies/SmartExecutorProxy.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.proxies; - -import org.gcube.vremanagement.executor.api.SmartExecutor; -import org.gcube.vremanagement.executor.client.SmartExecutorClientFactory; -import org.gcube.vremanagement.executor.exception.ExecutorException; - -/** - * @author Luca Frosini (ISTI - CNR) - * Use {@link SmartExecutorClientFactory} instead to obtain {@link org.gcube.vremanagement.executor.api.rest.SmartExecutor} - * instead - */ -@Deprecated -public interface SmartExecutorProxy extends SmartExecutor { - - /** - * It is the same of calling - * unSchedule(String executionIdentifier, boolean globally) - * Passing false to globally - */ - public boolean unSchedule(final String executionIdentifier) throws ExecutorException; - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java b/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java index fa67d43..2c9e6e1 100644 --- a/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java +++ b/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java @@ -1,9 +1,7 @@ package org.gcube.vremanagement.executor.client.query; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Random; import org.gcube.common.clients.exceptions.DiscoveryException; import org.gcube.common.resources.gcore.GCoreEndpoint; @@ -11,16 +9,10 @@ import org.gcube.common.resources.gcore.ServiceEndpoint; import org.gcube.resources.discovery.client.queries.api.SimpleQuery; import org.gcube.resources.discovery.icclient.ICFactory; import org.gcube.vremanagement.executor.client.Constants; -import org.gcube.vremanagement.executor.client.plugins.query.filter.EndpointDiscoveryFilter; -import org.gcube.vremanagement.executor.client.plugins.query.filter.SpecificEndpointDiscoveryFilter; -import org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter; -import org.gcube.vremanagement.executor.client.query.filter.ServiceEndpointQueryFilter; -import org.gcube.vremanagement.executor.client.util.Tuple; /** * @author Luca Frosini (ISTI - CNR) */ -@SuppressWarnings("deprecation") public class Discover { private static String classFormat = "$resource/Profile/ServiceClass/text() eq '%1s'"; @@ -33,9 +25,6 @@ public class Discover { private final SimpleQuery serviceEndpointQuery; - protected org.gcube.vremanagement.executor.client.plugins.query.filter.ServiceEndpointQueryFilter serviceEndpointQueryFilter; - protected EndpointDiscoveryFilter endpointDiscoveryFilter; - protected SimpleQuery getGCoreEndpointQuery() { return ICFactory.queryFor(GCoreEndpoint.class) .addCondition(String.format(classFormat, Constants.SERVICE_CLASS)) @@ -74,68 +63,8 @@ public class Discover { } } - @SuppressWarnings("unchecked") - @Deprecated - public void addConditions(String pluginName, Tuple... tuples) { - - filterByPluginName(pluginName); - - if(tuples == null) { - return; - } - Map capabilities = new HashMap<>(); - for(int i = 0; i < tuples.length; i++) { - capabilities.put(tuples[i].getName(), tuples[i].getValue()); - } - } - - public void setServiceEndpointQueryFilter(ServiceEndpointQueryFilter serviceEndpointQueryFilter) { - this.serviceEndpointQueryFilter = serviceEndpointQueryFilter; - } - - @Deprecated - public void setServiceEndpointQueryFilter(org.gcube.vremanagement.executor.client.plugins.query.filter.ServiceEndpointQueryFilter serviceEndpointQueryFilter) { - this.serviceEndpointQueryFilter = serviceEndpointQueryFilter; - } - - public void setGCoreEndpointQueryFilter(GCoreEndpointQueryFilter gCoreEndpointQueryFilter) { - if(gCoreEndpointQueryFilter != null) { - this.endpointDiscoveryFilter = gCoreEndpointQueryFilter; - } - } - - @Deprecated - public void setEndpointDiscoveryFilter(EndpointDiscoveryFilter endpointDiscoveryFilter) { - if(endpointDiscoveryFilter != null) { - this.endpointDiscoveryFilter = endpointDiscoveryFilter; - } - } - - @Deprecated - public List discoverEndpoints(EndpointDiscoveryFilter endpointDiscoveryFilter) throws DiscoveryException { - if(serviceEndpointQueryFilter != null) { - serviceEndpointQueryFilter.filter(serviceEndpointQuery); - } - - List serviceEndpoints = ICFactory.clientFor(ServiceEndpoint.class) - .submit(serviceEndpointQuery); - - if(serviceEndpoints.size() == 0) { - throw new DiscoveryException("No running SmartExecutor wich match the requested conditions"); - } - - SimpleQuery gCoreEndpointQuery = getGCoreEndpointQuery(); - endpointDiscoveryFilter.filter(gCoreEndpointQuery, serviceEndpoints); - - return ICFactory.client().submit(gCoreEndpointQuery); - - } - public List getAddresses() throws DiscoveryException { - if(serviceEndpointQueryFilter != null) { - serviceEndpointQueryFilter.filter(serviceEndpointQuery); - } - + List serviceEndpoints = ICFactory.clientFor(ServiceEndpoint.class) .submit(serviceEndpointQuery); @@ -144,17 +73,8 @@ public class Discover { } SimpleQuery gCoreEndpointDiscoveryQuery = getGCoreEndpointQuery(); - if(endpointDiscoveryFilter==null) { - Random random = new Random(); - int index = random.nextInt(serviceEndpoints.size()); - ServiceEndpoint serviceEndpoint = serviceEndpoints.get(index); - endpointDiscoveryFilter = new SpecificEndpointDiscoveryFilter(serviceEndpoint.profile().runtime().hostedOn()); - } - endpointDiscoveryFilter.filter(gCoreEndpointDiscoveryQuery, serviceEndpoints); - List addresses = ICFactory.client().submit(gCoreEndpointDiscoveryQuery); return addresses; } - } diff --git a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/GCoreEndpointQueryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/query/filter/GCoreEndpointQueryFilter.java deleted file mode 100644 index 28d7a6a..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/GCoreEndpointQueryFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.gcube.vremanagement.executor.client.query.filter; - -import java.util.List; - -import org.gcube.common.resources.gcore.ServiceEndpoint; -import org.gcube.resources.discovery.client.queries.api.SimpleQuery; -import org.gcube.vremanagement.executor.client.plugins.query.filter.EndpointDiscoveryFilter; - -@SuppressWarnings("deprecation") -public interface GCoreEndpointQueryFilter extends EndpointDiscoveryFilter { - - @Override - void filter(SimpleQuery simpleQuery, List serviceEndpoints); - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/ServiceEndpointQueryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/query/filter/ServiceEndpointQueryFilter.java deleted file mode 100644 index 5e8708f..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/ServiceEndpointQueryFilter.java +++ /dev/null @@ -1,19 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.query.filter; - -import org.gcube.resources.discovery.client.queries.api.SimpleQuery; - -/** - * @author Luca Frosini (ISTI - CNR) - * - */ -@SuppressWarnings("deprecation") -public interface ServiceEndpointQueryFilter - extends org.gcube.vremanagement.executor.client.plugins.query.filter.ServiceEndpointQueryFilter { - - @Override - public void filter(SimpleQuery simpleQuery); - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/impl/RandomGCoreEndpointQueryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/query/filter/impl/RandomGCoreEndpointQueryFilter.java deleted file mode 100644 index 9fe2d0d..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/impl/RandomGCoreEndpointQueryFilter.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.gcube.vremanagement.executor.client.query.filter.impl; - -import org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter; - -@SuppressWarnings("deprecation") -public class RandomGCoreEndpointQueryFilter - extends org.gcube.vremanagement.executor.client.plugins.query.filter.RandomEndpointDiscoveryFilter - implements GCoreEndpointQueryFilter { - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/impl/SpecificGCoreEndpointQueryFilter.java b/src/main/java/org/gcube/vremanagement/executor/client/query/filter/impl/SpecificGCoreEndpointQueryFilter.java deleted file mode 100644 index d96e111..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/query/filter/impl/SpecificGCoreEndpointQueryFilter.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.gcube.vremanagement.executor.client.query.filter.impl; - -import org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter; - -@SuppressWarnings("deprecation") -public class SpecificGCoreEndpointQueryFilter - extends org.gcube.vremanagement.executor.client.plugins.query.filter.SpecificEndpointDiscoveryFilter - implements GCoreEndpointQueryFilter { - - public SpecificGCoreEndpointQueryFilter(String endpointURI) { - super(endpointURI); - } - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/util/HTTPCall.java b/src/main/java/org/gcube/vremanagement/executor/client/util/HTTPCall.java deleted file mode 100644 index 1d04eee..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/util/HTTPCall.java +++ /dev/null @@ -1,244 +0,0 @@ -package org.gcube.vremanagement.executor.client.util; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLEncoder; -import java.util.Map; - -import org.gcube.common.authorization.library.provider.SecurityTokenProvider; -import org.gcube.common.scope.api.ScopeProvider; -import org.gcube.vremanagement.executor.exception.ExecutorException; -import org.gcube.vremanagement.executor.exception.SmartExecutorExceptionMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class HTTPCall { - - private static final Logger logger = LoggerFactory.getLogger(HTTPCall.class); - - public static final String APPLICATION_JSON_CHARSET_UTF_8 = "application/json;charset=UTF-8"; - - public enum HTTPMETHOD { - HEAD, GET, POST, PUT, DELETE; - - @Override - public String toString() { - return this.name(); - } - } - - public static final String PATH_SEPARATOR = "/"; - public static final String PARAM_STARTER = "?"; - public static final String PARAM_EQUALS = "="; - public static final String PARAM_SEPARATOR = "&"; - public static final String UTF8 = "UTF-8"; - - protected final String address; - protected final String userAgent; - - public HTTPCall(String address, String userAgent) { - this.address = address; - this.userAgent = userAgent; - } - - protected String getParametersDataString(Map parameters) - throws UnsupportedEncodingException { - - if (parameters == null) { - return null; - } - - StringBuilder result = new StringBuilder(); - boolean first = true; - for (String key : parameters.keySet()) { - if (first) { - first = false; - } else { - result.append(PARAM_SEPARATOR); - } - result.append(URLEncoder.encode(key, UTF8)); - result.append(PARAM_EQUALS); - result.append(URLEncoder.encode(String.valueOf(parameters.get(key)), UTF8)); - } - - return result.toString(); - } - - protected URL getURL(String address, String path, String urlParameters) throws MalformedURLException { - - StringWriter stringWriter = new StringWriter(); - stringWriter.append(address); - - if (address.endsWith(PATH_SEPARATOR)) { - if (path.startsWith(PATH_SEPARATOR)) { - path = path.substring(1); - } - } else { - if (!path.startsWith(PATH_SEPARATOR)) { - stringWriter.append(PARAM_SEPARATOR); - } - } - - stringWriter.append(path); - - if (urlParameters != null) { - stringWriter.append(PARAM_STARTER); - stringWriter.append(urlParameters); - } - - return getURL(stringWriter.toString()); - } - - protected URL getURL(String urlString) throws MalformedURLException { - URL url = new URL(urlString); - if (url.getProtocol().compareTo("https") == 0) { - url = new URL(url.getProtocol(), url.getHost(), url.getDefaultPort(), url.getFile()); - } - return url; - } - - protected HttpURLConnection getConnection(String path, String urlParameters, HTTPMETHOD method, String body) - throws Exception { - URL url = getURL(address, path, urlParameters); - return getConnection(url, method, body); - } - - protected HttpURLConnection getConnection(URL url, HTTPMETHOD method, String body) throws Exception { - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - - if (SecurityTokenProvider.instance.get() == null) { - if (ScopeProvider.instance.get() == null) { - throw new RuntimeException("Null Token and Scope. Please set your token first."); - } - connection.setRequestProperty("gcube-scope", ScopeProvider.instance.get()); - } else { - connection.setRequestProperty(org.gcube.common.authorization.client.Constants.TOKEN_HEADER_ENTRY, - SecurityTokenProvider.instance.get()); - } - - connection.setDoOutput(true); - - connection.setRequestProperty("Content-type", APPLICATION_JSON_CHARSET_UTF_8); - connection.setRequestProperty("User-Agent", userAgent); - - connection.setRequestMethod(method.toString()); - - if (body != null && (method == HTTPMETHOD.POST || method == HTTPMETHOD.PUT)) { - - DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); - wr.write(body.getBytes("UTF-8")); - wr.flush(); - wr.close(); - } - - int responseCode = connection.getResponseCode(); - String responseMessage = connection.getResponseMessage(); - logger.trace("{} {} : {} - {}", method, connection.getURL(), responseCode, responseMessage); - - if (responseCode == HttpURLConnection.HTTP_MOVED_TEMP || responseCode == HttpURLConnection.HTTP_MOVED_PERM - || responseCode == HttpURLConnection.HTTP_SEE_OTHER) { - - URL redirectURL = getURL(connection.getHeaderField("Location")); - - logger.trace("{} is going to be redirect to {}", url.toString(), redirectURL.toString()); - - connection = getConnection(redirectURL, method, body); - } - - return connection; - } - - protected StringBuilder getStringBuilder(InputStream inputStream) throws IOException { - StringBuilder result = new StringBuilder(); - try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { - String line; - while ((line = reader.readLine()) != null) { - result.append(line); - } - } - - return result; - } - - - public C call(Class clz, String path, HTTPMETHOD method) throws Exception { - return call(clz, path, method, null, null); - } - - public C call(Class clz, String path, HTTPMETHOD method, Map parameters) - throws Exception { - return call(clz, path, method, parameters, null); - } - - public C call(Class clz, String path, HTTPMETHOD method, String body) throws Exception { - return call(clz, path, method, null, body); - } - - @SuppressWarnings("unchecked") - protected C call(Class clz, String path, HTTPMETHOD method, Map parameters, - String body) throws Exception { - - String urlParameters = getParametersDataString(parameters); - - HttpURLConnection connection = getConnection(path, urlParameters, method, body); - - try { - - int responseCode = connection.getResponseCode(); - String responseMessage = connection.getResponseMessage(); - logger.info("{} {} : {} - {}", method, connection.getURL(), responseCode, responseMessage); - - if (method == HTTPMETHOD.HEAD) { - if (responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - return null; - } - if (responseCode == HttpURLConnection.HTTP_NOT_FOUND || responseCode == HttpURLConnection.HTTP_FORBIDDEN) { - throw new ExecutorException("Not Found"); - } - if (responseCode == HttpURLConnection.HTTP_FORBIDDEN) { - throw new ExecutorException("Forbidden"); - } - } - - if (responseCode >= HttpURLConnection.HTTP_BAD_REQUEST) { - - InputStream inputStream = connection.getErrorStream(); - StringBuilder result = getStringBuilder(inputStream); - - String res = result.toString(); - - ExecutorException rre = null; - try { - rre = SmartExecutorExceptionMapper.unmarshal(ExecutorException.class, res); - } catch (Exception e) { - rre = new ExecutorException(responseMessage); - } - - throw rre; - - } - - StringBuilder result = getStringBuilder(connection.getInputStream()); - - String res = result.toString(); - logger.trace("Server returned content : {}", res); - - if (Boolean.class.isAssignableFrom(clz)) { - return (C) ((Boolean) Boolean.valueOf(res)); - } - - return (C) res; - } finally { - connection.disconnect(); - } - } - -} diff --git a/src/main/java/org/gcube/vremanagement/executor/client/util/Tuple.java b/src/main/java/org/gcube/vremanagement/executor/client/util/Tuple.java deleted file mode 100644 index 56f807b..0000000 --- a/src/main/java/org/gcube/vremanagement/executor/client/util/Tuple.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * - */ -package org.gcube.vremanagement.executor.client.util; - -/** - * @author Luca Frosini (ISTI - CNR) - */ -@Deprecated -public class Tuple { - - protected Name name; - protected Value value; - - public Tuple(){} - - public Tuple(Name name, Value value){ - this.name = name; - this.value = value; - } - - /** - * @return the name - */ - public Name getName() { - return name; - } - - /** - * @param name the name to set - */ - public void setName(Name name) { - this.name = name; - } - - /** - * @return the value - */ - public Value getValue() { - return value; - } - - /** - * @param value the value to set - */ - public void setValue(Value value) { - this.value = value; - } - - /** {@inheritDoc} */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((value == null) ? 0 : value.hashCode()); - return result; - } - - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - @SuppressWarnings("rawtypes") - Tuple other = (Tuple) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (value == null) { - if (other.value != null) - return false; - } else if (!value.equals(other.value)) - return false; - return true; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return String.format("<%s,%s>", name.toString(), value.toString()); - } - -}