Ignord webapp directory

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/vre-management/smart-executor@122830 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2016-02-04 10:36:34 +00:00
parent 5b64ccf438
commit 3ba5c03967
3 changed files with 40 additions and 57 deletions

View File

@ -4,6 +4,7 @@ import java.util.UUID;
import javax.jws.WebService;
import org.gcube.smartgears.annotations.ManagedBy;
import org.gcube.smartgears.context.application.ApplicationContext;
import org.gcube.vremanagement.executor.api.SmartExecutor;
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
@ -31,6 +32,7 @@ portName = "SmartExecutorPort",
serviceName = SmartExecutor.WEB_SERVICE_SERVICE_NAME,
targetNamespace = SmartExecutor.TARGET_NAMESPACE,
endpointInterface = "org.gcube.vremanagement.executor.api.SmartExecutor" )
@ManagedBy(SmartExecutorInitializator.class)
public class SmartExecutorImpl implements SmartExecutor {
/**

View File

@ -4,19 +4,11 @@
package org.gcube.vremanagement.executor;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.bind.annotation.XmlRootElement;
import org.gcube.common.resources.gcore.GCoreEndpoint;
import org.gcube.common.resources.gcore.Resource;
import org.gcube.common.resources.gcore.Resources;
import org.gcube.common.resources.gcore.ScopeGroup;
import org.gcube.common.resources.gcore.ServiceEndpoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.Profile;
@ -25,17 +17,14 @@ import org.gcube.common.resources.gcore.ServiceEndpoint.Runtime;
import org.gcube.common.resources.gcore.common.Platform;
import org.gcube.common.resources.gcore.utils.Group;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.informationsystem.publisher.AdvancedScopedPublisher;
import org.gcube.informationsystem.publisher.RegistryPublisher;
import org.gcube.informationsystem.publisher.RegistryPublisherFactory;
import org.gcube.informationsystem.publisher.ScopedPublisher;
import org.gcube.informationsystem.publisher.exception.RegistryNotFoundException;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.gcube.resources.discovery.icclient.ICFactory;
import org.gcube.smartgears.ApplicationManager;
import org.gcube.smartgears.configuration.container.ContainerConfiguration;
import org.gcube.smartgears.context.application.ApplicationContext;
import org.gcube.smartgears.handlers.application.ApplicationLifecycleEvent;
import org.gcube.smartgears.handlers.application.ApplicationLifecycleHandler;
import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceConnector;
import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceFactory;
import org.gcube.vremanagement.executor.plugin.PluginDeclaration;
@ -48,8 +37,7 @@ import org.slf4j.LoggerFactory;
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/
@XmlRootElement(name = "plugin-registration-handler")
public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
public class SmartExecutorInitializator implements ApplicationManager {
/**
* Logger
@ -95,15 +83,17 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
* @throws RegistryNotFoundException if the Registry is not found so the
* resource has not be published
*/
private static void publishScopedResource(Resource resource, List<String> scopes) throws RegistryNotFoundException, Exception {
private static void publishScopedResource(Resource resource) throws Exception {
StringWriter stringWriter = new StringWriter();
Resources.marshal(resource, stringWriter);
ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher();
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
try {
logger.debug("Trying to publish to {}:\n{}", scopes, stringWriter);
scopedPublisher.create(resource, scopes);
} catch (RegistryNotFoundException e) {
String scope = ScopeProvider.instance.get();
logger.debug("Trying to publish to {}:\n{}", scope, stringWriter);
registryPublisher.create(resource);
} catch (Exception e) {
logger.error("The resource was not published", e);
throw e;
}
@ -115,18 +105,16 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
* @throws RegistryNotFoundException if the Registry is not found so the
* resource has not be published
*/
private static void unPublishScopedResource(Resource resource) throws RegistryNotFoundException, Exception {
private static void unPublishScopedResource(Resource resource) throws Exception {
//StringWriter stringWriter = new StringWriter();
//Resources.marshal(resource, stringWriter);
ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher();
AdvancedScopedPublisher advancedScopedPublisher = new AdvancedScopedPublisher(scopedPublisher);
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
String id = resource.id();
String id = resource.id();
logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, ScopeProvider.instance.get());
//scopedPublisher.remove(resource, scopes);
advancedScopedPublisher.forceRemove(resource);
registryPublisher.remove(resource);
logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id);
}
@ -241,6 +229,7 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
return serviceEndpoint;
}
/*
public static List<String> getScopes(ApplicationContext applicationContext){
Collection<String> scopes;
@ -262,8 +251,9 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
return new ArrayList<String>(scopes);
}
*/
private void cleanServiceEndpoints(String scope){
private void cleanServiceEndpoints(){
try {
SimpleQuery query = ICFactory.queryFor(ServiceEndpoint.class)
.addCondition(String.format("$resource/Profile/Category/text() eq '%s'", SmartExecutorImpl.ctx.configuration().serviceClass()))
@ -274,6 +264,8 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
DiscoveryClient<ServiceEndpoint> client = ICFactory.clientFor(ServiceEndpoint.class);
List<ServiceEndpoint> serviceEndpoints = client.submit(query);
String scope = ScopeProvider.instance.get();
for (ServiceEndpoint serviceEndpoint : serviceEndpoints) {
try {
logger.debug("Trying to unpublish the old ServiceEndpoint with ID {} from scope {}",
@ -297,37 +289,30 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
* Furthermore create/connect to DB
*/
@Override
public void onStart(ApplicationLifecycleEvent.Start applicationLifecycleEventStart) {
public void onInit() {
logger.trace(
"\n-------------------------------------------------------\n"
+ "Smart Executor is Starting\n"
+ "-------------------------------------------------------");
SmartExecutorImpl.ctx = applicationLifecycleEventStart.context();
ServiceEndpoint serviceEndpoint = createServiceEndpoint();
// Checking if there are old unpublished ServiceEndpoints related to
// this vHN and trying to unpublish them
List<String> scopes = getScopes(SmartExecutorImpl.ctx);
cleanServiceEndpoints();
for(String scope : scopes){
ScopeProvider.instance.set(scope);
cleanServiceEndpoints(scope);
try {
SmartExecutorPersistenceFactory.getPersistenceConnector();
} catch (Exception e) {
logger.error("Unable to isntantiate {} for scope {}",
SmartExecutorPersistenceConnector.class.getSimpleName(), scope, e);
throw new RuntimeException(e);
}
try {
SmartExecutorPersistenceFactory.getPersistenceConnector();
} catch (Exception e) {
String scope = ScopeProvider.instance.get();
logger.error("Unable to isntantiate {} for scope {}",
SmartExecutorPersistenceConnector.class.getSimpleName(), scope, e);
throw new RuntimeException(e);
}
// TODO set task that are still on running state on DB to have a clear
// room
try {
publishScopedResource(serviceEndpoint, scopes);
publishScopedResource(serviceEndpoint);
} catch (RegistryNotFoundException e) {
logger.error("Unable to Create ServiceEndpoint. the Service will be aborted", e);
return;
@ -343,7 +328,6 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
// TODO Launch initializer thread
}
/**
@ -353,7 +337,7 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
* Furthermore close the connection to DB.
*/
@Override
public void onStop(ApplicationLifecycleEvent.Stop applicationLifecycleEventStop) {
public void onShutdown(){
logger.trace(
"\n-------------------------------------------------------\n"
+ "Smart Executor is Stopping\n"
@ -361,17 +345,15 @@ public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
SmartExecutorScheduler.getInstance().stopAll();
List<String> scopes = getScopes(SmartExecutorImpl.ctx);
for(String scope : scopes){
ScopeProvider.instance.set(scope);
cleanServiceEndpoints(scope);
try {
SmartExecutorPersistenceFactory.getPersistenceConnector().close();
} catch (Exception e) {
logger.error("Unable to correctly close {} for scope {}",
SmartExecutorPersistenceConnector.class.getSimpleName(), scope, e);
}
String scope = ScopeProvider.instance.get();
cleanServiceEndpoints();
try {
SmartExecutorPersistenceFactory.getPersistenceConnector().close();
} catch (Exception e) {
logger.error("Unable to correctly close {} for scope {}",
SmartExecutorPersistenceConnector.class.getSimpleName(), scope, e);
}
logger.trace(

View File

@ -1 +0,0 @@
org.gcube.vremanagement.executor.SmartExecutorInitializator