Removing OLD SOAP APIs which causes conflicts

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/vre-management/smart-executor@177261 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2019-02-25 17:28:49 +00:00
parent 39ac5332f3
commit b60649a2ee
11 changed files with 43 additions and 259 deletions

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<endpoints
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint
name="smart-executor"
implementation="org.gcube.vremanagement.executor.SmartExecutorImpl"
url-pattern="/gcube/vremanagement/smart-executor"/>
</endpoints>

View File

@ -1,28 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<!DOCTYPE xml>
<web-app>
<servlet>
<servlet-name>smart-executor</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>smart-executor</servlet-name>
<url-pattern>/gcube/vremanagement/smart-executor</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>org.gcube.vremanagement.executor.ResourceInitializer</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>org.gcube.vremanagement.executor.ResourceInitializer</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet-name>org.gcube.vremanagement.executor.ResourceInitializer</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>org.gcube.vremanagement.executor.ResourceInitializer</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

29
pom.xml
View File

@ -1,4 +1,5 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@ -10,7 +11,7 @@
<groupId>org.gcube.vremanagement</groupId>
<artifactId>smart-executor</artifactId>
<version>1.10.0-SNAPSHOT</version>
<version>2.0.0-SNAPSHOT</version>
<name>SmartExecutor</name>
<description>Smart Executor Service</description>
<packaging>war</packaging>
@ -57,7 +58,7 @@
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.gcube.resources.discovery</groupId>
<artifactId>ic-client</artifactId>
@ -73,11 +74,7 @@
<artifactId>common-scope</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-scope-maps</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-smartgears</artifactId>
@ -106,9 +103,9 @@
<dependency>
<groupId>org.gcube.vremanagement</groupId>
<artifactId>smart-executor-client</artifactId>
<version>[1.6.0-SNAPSHOT,2.0.0-SNAPSHOT]</version>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>provided</scope>
@ -124,8 +121,8 @@
<artifactId>jackson-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-generic-clients</artifactId>
@ -141,7 +138,7 @@
<dependency>
<groupId>org.gcube.vremanagement</groupId>
<artifactId>smart-executor-api</artifactId>
<version>[1.7.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
</dependency>
<!-- Jersey -->
@ -161,12 +158,6 @@
</dependency>
<!-- END Jersey -->
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>

View File

@ -3,17 +3,13 @@ package org.gcube.vremanagement.executor;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.MediaType;
import org.gcube.smartgears.annotations.ManagedBy;
import org.gcube.vremanagement.executor.api.rest.RestConstants;
import org.gcube.vremanagement.executor.rest.RestSmartExecutor;
import org.glassfish.jersey.server.ResourceConfig;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@ApplicationPath(RestConstants.REST_PATH_PART)
// UnComment this when the SOAP API will be dismissed
@ManagedBy(SmartExecutorInitializator.class)
@ApplicationPath("/")
public class ResourceInitializer extends ResourceConfig {
public static final String APPLICATION_JSON_CHARSET_UTF_8 = MediaType.APPLICATION_JSON + ";charset=UTF-8";

View File

@ -1,164 +0,0 @@
package org.gcube.vremanagement.executor;
import java.util.UUID;
import javax.jws.WebService;
import org.gcube.vremanagement.executor.api.SmartExecutor;
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
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.exception.SchedulePersistenceException;
import org.gcube.vremanagement.executor.exception.SchedulerNotFoundException;
import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceConnector;
import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceFactory;
import org.gcube.vremanagement.executor.plugin.PluginState;
import org.gcube.vremanagement.executor.plugin.PluginStateEvolution;
import org.gcube.vremanagement.executor.scheduler.SmartExecutorScheduler;
import org.gcube.vremanagement.executor.scheduler.SmartExecutorSchedulerFactory;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Effective implementation of Executor
* @author Luca Frosini (ISTI - CNR)
*/
@WebService(
portName = "SmartExecutorPort",
serviceName = SmartExecutor.WEB_SERVICE_SERVICE_NAME,
targetNamespace = SmartExecutor.TARGET_NAMESPACE,
endpointInterface = "org.gcube.vremanagement.executor.api.SmartExecutor" )
//@ManagedBy(SmartExecutorInitializator.class)
@Deprecated
public class SmartExecutorImpl implements SmartExecutor {
/**
* Logger
*/
private static Logger logger = LoggerFactory.getLogger(SmartExecutorImpl.class);
/**{@inheritDoc}*/
@Override
public String launch(LaunchParameter parameter) throws InputsNullException,
PluginNotFoundException, LaunchException, ExecutorException {
logger.info("Launch requested {}", parameter);
SmartExecutorScheduler smartExecutorScheduler;
try {
smartExecutorScheduler = SmartExecutorSchedulerFactory.getSmartExecutorScheduler();
} catch (SchedulerException e) {
throw new ExecutorException(e);
}
UUID uuid = smartExecutorScheduler.schedule(parameter, null);
logger.info(
String.format(
"The Plugin named %s with UUID %s has been launched %s",
parameter.getPluginName(), uuid.toString(), parameter));
return uuid.toString();
}
/**{@inheritDoc}*/
@Override
public boolean stop(String executionIdentifier) throws ExecutorException {
logger.info("Receinved stop() for {}", executionIdentifier);
boolean ret = unSchedule(executionIdentifier, false);
logger.info("{} was{} stopped successfully", executionIdentifier, ret? "" : " NOT");
return ret;
}
/**{@inheritDoc}*/
@Override
public boolean unSchedule(String executionIdentifier, boolean globally)
throws ExecutorException {
logger.info("UnSchedule requested for {} globally : {}",
executionIdentifier, globally);
boolean ret = reallyUnSchedule(executionIdentifier, globally);
logger.info("{} was{} unscheduled {} successfully", executionIdentifier, ret? "" : " NOT", globally? "globally": "locally");
return ret;
}
// TODO Manage better exception to to advise the caller
protected boolean reallyUnSchedule(String executionIdentifier, boolean globally) throws ExecutorException {
boolean currentStopped = true;
try {
SmartExecutorScheduler smartExecutorScheduler = SmartExecutorSchedulerFactory.getSmartExecutorScheduler();
UUID uuid = UUID.fromString(executionIdentifier);
smartExecutorScheduler.stop(uuid, globally);
} catch (SchedulerNotFoundException e) {
// currentStopped = true;
logger.error("Error unscheduling task {}", executionIdentifier, e);
throw new ExecutorException(e);
} catch(SchedulerException e){
// currentStopped = false;
logger.error("Error unscheduling task {}", executionIdentifier, e);
throw new ExecutorException(e);
} catch(SchedulePersistenceException e){
// currentStopped = true;
logger.error("Error removing scheduled task from persistence.", e);
} catch (ExecutorException e) {
throw e;
} catch (Exception e) {
// currentStopped = false;
logger.error("Error unscheduling task {}", executionIdentifier, e);
throw new ExecutorException(e);
}
return currentStopped;
}
/**{@inheritDoc}*/
@Override
@Deprecated
public PluginState getState(String executionIdentifier)
throws PluginInstanceNotFoundException, ExecutorException {
return getStateEvolution(executionIdentifier).getPluginState();
}
/**{@inheritDoc}*/
@Override
public PluginStateEvolution getStateEvolution(String executionIdentifier)
throws PluginInstanceNotFoundException, ExecutorException {
logger.info("getStateEvolution() requested for {}", executionIdentifier);
try {
SmartExecutorPersistenceConnector persistenceConnector = SmartExecutorPersistenceFactory.getPersistenceConnector();
PluginStateEvolution pluginStateEvolution = persistenceConnector.getPluginInstanceState(UUID.fromString(executionIdentifier), null);
logger.info("getState() for {} is : {}", executionIdentifier, pluginStateEvolution);
return pluginStateEvolution;
} catch (ExecutorException e) {
throw e;
} catch (Exception e) {
throw new ExecutorException(e);
}
}
/**{@inheritDoc}*/
@Override
@Deprecated
public PluginState getIterationState(String executionIdentifier, int iterationNumber)
throws PluginInstanceNotFoundException, ExecutorException {
return getIterationStateEvolution(executionIdentifier, iterationNumber).getPluginState();
}
/**{@inheritDoc}*/
@Override
public PluginStateEvolution getIterationStateEvolution(String executionIdentifier, int iterationNumber)
throws PluginInstanceNotFoundException, ExecutorException {
logger.info("getIterationStateEvolution() requested for {} (iteration n. {})", executionIdentifier, iterationNumber);
try {
SmartExecutorPersistenceConnector persistenceConnector = SmartExecutorPersistenceFactory.getPersistenceConnector();
PluginStateEvolution pluginStateEvolution = persistenceConnector.getPluginInstanceState(UUID.fromString(executionIdentifier), iterationNumber);
logger.info("getIterationState() for {} (iteration n. {}) is : {}", executionIdentifier, iterationNumber, pluginStateEvolution);
return pluginStateEvolution;
} catch (ExecutorException e) {
throw e;
} catch (Exception e) {
throw new ExecutorException(e);
}
}
}

View File

@ -47,7 +47,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author Luca Frosini (ISTI - CNR)
*
*/
public class SmartExecutorInitializator implements ApplicationManager {

View File

@ -52,8 +52,12 @@ public class SmartExecutorPersistenceConfiguration {
public SmartExecutorPersistenceConfiguration(String persistenceClassName) throws Exception {
init();
ServiceEndpoint serviceEndpoint = getServiceEndpoint(SERVICE_ENDPOINT_CATEGORY, SERVICE_ENDPOINT_NAME, persistenceClassName);
setValues(serviceEndpoint,persistenceClassName);
try {
ServiceEndpoint serviceEndpoint = getServiceEndpoint(SERVICE_ENDPOINT_CATEGORY, SERVICE_ENDPOINT_NAME, persistenceClassName);
setValues(serviceEndpoint,persistenceClassName);
}catch (Exception e) {
throw e;
}
}
/**

View File

@ -11,7 +11,6 @@ import org.gcube.common.resources.gcore.HostingNode;
import org.gcube.smartgears.ContextProvider;
import org.gcube.vremanagement.executor.api.rest.SmartExecutor;
import org.gcube.vremanagement.executor.client.SmartExecutorClientFactory;
import org.gcube.vremanagement.executor.client.query.filter.impl.SpecificGCoreEndpointQueryFilter;
import org.gcube.vremanagement.executor.exception.ExecutorException;
import org.gcube.vremanagement.executor.exception.PluginInstanceNotFoundException;
import org.gcube.vremanagement.executor.json.SEMapper;
@ -75,14 +74,11 @@ public abstract class SmartExecutorPersistenceConnector extends PluginStateNotif
}
String address = runOn.getEService().getAddress();
SpecificGCoreEndpointQueryFilter specificGCoreEndpointDiscoveryFilter = new SpecificGCoreEndpointQueryFilter(address);
String pluginName = scheduledTask.getLaunchParameter()
.getPluginName();
try {
SmartExecutor smartExecutor = SmartExecutorClientFactory.create(pluginName, null, null, specificGCoreEndpointDiscoveryFilter);
SmartExecutor smartExecutor = SmartExecutorClientFactory.create(pluginName, address);
smartExecutor.getPluginStateEvolution(uuid, null);
logger.trace("{} is not orphan.", SEMapper
.getObjectMapper().writeValueAsString(scheduledTask));

View File

@ -1,43 +1,32 @@
package org.gcube.vremanagement.executor.rest;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import org.gcube.vremanagement.executor.exception.ExecutorException;
import org.gcube.vremanagement.executor.exception.PluginInstanceNotFoundException;
import org.gcube.vremanagement.executor.exception.PluginNotFoundException;
import org.gcube.vremanagement.executor.exception.SmartExecutorExceptionMapper;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@Provider
public class ExecutorExceptionMapper implements ExceptionMapper<ExecutorException> {
public class ExecutorExceptionMapper implements ExceptionMapper<Exception> {
@Override
public Response toResponse(ExecutorException exception) {
public Response toResponse(Exception exception) {
Status status = Status.BAD_REQUEST;
Status status = Status.INTERNAL_SERVER_ERROR;
String exceptionMessage = exception.getMessage();
MediaType mediaType = MediaType.TEXT_PLAIN_TYPE;
if(PluginInstanceNotFoundException.class.isAssignableFrom(exception.getClass()) || PluginNotFoundException.class.isAssignableFrom(exception.getClass())) {
status = Status.NOT_FOUND;
} else if(exception.getClass() == ExecutorException.class) {
status = Status.INTERNAL_SERVER_ERROR;
}
try {
String entity = SmartExecutorExceptionMapper.marshal(exception);
MediaType mediaType = MediaType.APPLICATION_JSON_TYPE;
return Response.status(status).entity(entity).type(mediaType).build();
} catch(Exception e) {
String entity = exception.getMessage();
MediaType mediaType = MediaType.TEXT_PLAIN_TYPE;
return Response.status(status).entity(entity).type(mediaType).build();
if(WebApplicationException.class.isAssignableFrom(exception.getClass())) {
Response gotResponse = ((WebApplicationException) exception).getResponse();
status = Status.fromStatusCode(gotResponse.getStatusInfo().getStatusCode());
}
return Response.status(status).entity(exceptionMessage).type(mediaType).build();
}
}

View File

@ -5,6 +5,7 @@ import java.util.UUID;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HttpMethod;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@ -16,7 +17,6 @@ import org.gcube.common.authorization.library.provider.CalledMethodProvider;
import org.gcube.vremanagement.executor.ResourceInitializer;
import org.gcube.vremanagement.executor.api.rest.RestConstants;
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
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.InvalidInputsException;
@ -49,7 +49,7 @@ public class RestSmartExecutor {
public String launch(@PathParam(PLUGIN_NAME_PATH_PARAM) String pluginName, String launchParameterString)
throws ExecutorException {
CalledMethodProvider.instance
.set(HTTPMETHOD.POST.name() + " /" + RestConstants.PLUGINS_PATH_PART + "/" + PLUGIN_NAME_PATH_PARAM);
.set(HttpMethod.POST + " /" + RestConstants.PLUGINS_PATH_PART + "/" + PLUGIN_NAME_PATH_PARAM);
try {
logger.info("Requested to launch {} ({})", pluginName, launchParameterString);
@ -87,7 +87,7 @@ public class RestSmartExecutor {
@PathParam(UUID_PATH_PARAM) String executionIdentifier,
@QueryParam(RestConstants.ITERATION_NUMBER_PARAM) Integer iterationNumber) throws ExecutorException {
CalledMethodProvider.instance.set(HTTPMETHOD.GET.name() + " /" + RestConstants.PLUGINS_PATH_PART + "/"
CalledMethodProvider.instance.set(HttpMethod.GET + " /" + RestConstants.PLUGINS_PATH_PART + "/"
+ PLUGIN_NAME_PATH_PARAM + "/" + UUID_PATH_PARAM);
PluginStateEvolution pluginStateEvolution = null;
@ -124,7 +124,7 @@ public class RestSmartExecutor {
@PathParam(UUID_PATH_PARAM) String executionIdentifier,
@QueryParam(RestConstants.GLOBALLY_PARAM) Boolean globally) throws ExecutorException {
CalledMethodProvider.instance.set(HTTPMETHOD.DELETE.name() + " /" + RestConstants.PLUGINS_PATH_PART + "/"
CalledMethodProvider.instance.set(HttpMethod.DELETE + " /" + RestConstants.PLUGINS_PATH_PART + "/"
+ PLUGIN_NAME_PATH_PARAM + "/" + UUID_PATH_PARAM);
try {
@ -174,7 +174,7 @@ public class RestSmartExecutor {
@Path(RestConstants.SCHEDULED_PATH_PART)
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public String all(@QueryParam(RestConstants.GLOBALLY_PARAM) Boolean globally) throws ExecutorException {
CalledMethodProvider.instance.set(HTTPMETHOD.GET.name() + " /" + RestConstants.SCHEDULED_PATH_PART);
CalledMethodProvider.instance.set(HttpMethod.GET + " /" + RestConstants.SCHEDULED_PATH_PART);
return "[]";
}

View File

@ -63,7 +63,7 @@ public class ContextTest {
GCUBE_DEVSEC_DEVVRE = properties.getProperty(GCUBE_DEVSEC_DEVVRE_VARNAME);
DEFAULT_TEST_SCOPE = GCUBE_DEVSEC;
ALTERNATIVE_TEST_SCOPE = GCUBE_DEVSEC_DEVVRE;
ALTERNATIVE_TEST_SCOPE = GCUBE_DEVNEXT;
ROOT = properties.getProperty(ROOT_VARNAME);
}