diff --git a/distro/gcube-handlers.xml b/distro/gcube-handlers.xml
new file mode 100644
index 0000000..949cee3
--- /dev/null
+++ b/distro/gcube-handlers.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/vremanagement/executor/SmartExecutorImpl.java b/src/main/java/org/gcube/vremanagement/executor/SmartExecutorImpl.java
index 37b1ac9..2b02fc5 100644
--- a/src/main/java/org/gcube/vremanagement/executor/SmartExecutorImpl.java
+++ b/src/main/java/org/gcube/vremanagement/executor/SmartExecutorImpl.java
@@ -4,7 +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;
import org.gcube.vremanagement.executor.exception.ExecutorException;
@@ -31,7 +31,6 @@ 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 {
/**
@@ -39,6 +38,15 @@ public class SmartExecutorImpl implements SmartExecutor {
*/
private static Logger logger = LoggerFactory.getLogger(SmartExecutorImpl.class);
+ protected static ApplicationContext ctx;
+
+ /**
+ * @return the ctx
+ */
+ public static ApplicationContext getCtx() {
+ return ctx;
+ }
+
/**{@inheritDoc}*/
@Override
public String launch(LaunchParameter parameter) throws InputsNullException,
diff --git a/src/main/java/org/gcube/vremanagement/executor/SmartExecutorInitializator.java b/src/main/java/org/gcube/vremanagement/executor/SmartExecutorInitializator.java
index a1fb98d..aead28b 100644
--- a/src/main/java/org/gcube/vremanagement/executor/SmartExecutorInitializator.java
+++ b/src/main/java/org/gcube/vremanagement/executor/SmartExecutorInitializator.java
@@ -1,14 +1,22 @@
+/**
+ *
+ */
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 org.gcube.common.authorization.client.Constants;
-import org.gcube.common.authorization.library.AuthorizationEntry;
-import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+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;
@@ -16,15 +24,18 @@ import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
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.informationsystem.publisher.RegistryPublisher;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.informationsystem.publisher.AdvancedScopedPublisher;
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.ContextProvider;
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;
@@ -37,7 +48,8 @@ import org.slf4j.LoggerFactory;
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/
-public class SmartExecutorInitializator implements ApplicationManager {
+@XmlRootElement(name = "plugin-registration-handler")
+public class SmartExecutorInitializator extends ApplicationLifecycleHandler {
/**
* Logger
@@ -46,16 +58,38 @@ public class SmartExecutorInitializator implements ApplicationManager {
public static final long JOIN_TIMEOUT = 1000;
- public static String getScopeFromToken(){
- String token = SecurityTokenProvider.instance.get();
- AuthorizationEntry authorizationEntry;
- try {
- authorizationEntry = Constants.authorizationService().get(token);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- String scope = authorizationEntry.getContext();
- return scope;
+ /* *
+ * Contains the ServiceEnpoint Resource to be published/unpublished on IS
+ * /
+ private static ServiceEndpoint serviceEndpoint;
+ */
+
+ /* *
+ * The application context
+ * /
+ protected static ApplicationContext ctx;
+
+ /**
+ * @return the ctx
+ * /
+ public static ApplicationContext getCtx() {
+ return ctx;
+ }
+ */
+
+ /*
+ protected static ScheduledTaskConfiguration launchConfiguration;
+
+ /**
+ * @return the configuredTasks
+ * /
+ public static ScheduledTaskConfiguration getConfiguredTasks() {
+ return launchConfiguration;
+ }
+ */
+
+ public static String getCurrentScope(){
+ return ScopeProvider.instance.get();
}
/**
@@ -65,16 +99,15 @@ public class SmartExecutorInitializator implements ApplicationManager {
* @throws RegistryNotFoundException if the Registry is not found so the
* resource has not be published
*/
- private static void publishResource(Resource resource) throws Exception {
+ private static void publishScopedResource(Resource resource, List scopes) throws RegistryNotFoundException, Exception {
StringWriter stringWriter = new StringWriter();
Resources.marshal(resource, stringWriter);
- RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
-
+ ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher();
try {
- logger.debug("Trying to publish to {}:\n{}", getScopeFromToken(), stringWriter);
- registryPublisher.create(resource);
- } catch (Exception e) {
+ logger.debug("Trying to publish to {}:\n{}", scopes, stringWriter);
+ scopedPublisher.create(resource, scopes);
+ } catch (RegistryNotFoundException e) {
logger.error("The resource was not published", e);
throw e;
}
@@ -86,16 +119,18 @@ public class SmartExecutorInitializator implements ApplicationManager {
* @throws RegistryNotFoundException if the Registry is not found so the
* resource has not be published
*/
- private static void unPublishResource(Resource resource) throws Exception {
+ private static void unPublishScopedResource(Resource resource) throws RegistryNotFoundException, Exception {
//StringWriter stringWriter = new StringWriter();
//Resources.marshal(resource, stringWriter);
- RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
+ ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher();
+ AdvancedScopedPublisher advancedScopedPublisher = new AdvancedScopedPublisher(scopedPublisher);
- String id = resource.id();
- logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, getScopeFromToken());
+ String id = resource.id();
+ logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, ScopeProvider.instance.get());
- registryPublisher.remove(resource);
+ //scopedPublisher.remove(resource, scopes);
+ advancedScopedPublisher.forceRemove(resource);
logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id);
}
@@ -157,13 +192,13 @@ public class SmartExecutorInitializator implements ApplicationManager {
logger.debug("Creating ServiceEndpoint to publish on IS available plugins and their own supported capabilities");
ServiceEndpoint serviceEndpoint = new ServiceEndpoint();
Profile profile = serviceEndpoint.newProfile();
- profile.category(ContextProvider.get().configuration().serviceClass());
- profile.name(ContextProvider.get().configuration().name());
- String version = ContextProvider.get().configuration().version();
+ profile.category(SmartExecutorImpl.ctx.configuration().serviceClass());
+ profile.name(SmartExecutorImpl.ctx.configuration().name());
+ String version = SmartExecutorImpl.ctx.configuration().version();
profile.version(version);
- profile.description(ContextProvider.get().configuration().description());
+ profile.description(SmartExecutorImpl.ctx.configuration().description());
- String runningOn = getRunningOn(ContextProvider.get().container().configuration());
+ String runningOn = getRunningOn(SmartExecutorImpl.ctx.container().configuration());
Platform platform = profile.newPlatform();
platform.name(runningOn);
@@ -175,7 +210,7 @@ public class SmartExecutorInitializator implements ApplicationManager {
Runtime runtime = profile.newRuntime();
runtime.hostedOn(runningOn);
- runtime.status(ContextProvider.get().configuration().mode().toString());
+ runtime.status(SmartExecutorImpl.ctx.configuration().mode().toString());
Group accessPoints = profile.accessPoints();
Map availablePlugins = pluginManager.getAvailablePlugins();
@@ -210,12 +245,34 @@ public class SmartExecutorInitializator implements ApplicationManager {
return serviceEndpoint;
}
- private void cleanServiceEndpoints(){
+ public static List getScopes(ApplicationContext applicationContext){
+ Collection scopes;
+
+ ScopeGroup scopeGroup = applicationContext.profile(GCoreEndpoint.class).scopes();
+ if(scopeGroup==null || scopeGroup.isEmpty()){
+ Set applicationScopes = applicationContext.configuration().startScopes();
+ Set containerScopes = applicationContext.container().configuration().startScopes();
+
+ if(applicationScopes==null || applicationScopes.isEmpty()){
+ scopes = containerScopes;
+ logger.debug("Application Scopes ({}). The Container Scopes ({}) will be used.", applicationScopes, scopes);
+ } else{
+ logger.debug("Container Scopes ({}). Application Scopes ({}) will be used.", containerScopes, applicationScopes);
+ scopes = new HashSet(applicationScopes);
+ }
+ }else {
+ scopes = scopeGroup.asCollection();
+ }
+
+ return new ArrayList(scopes);
+ }
+
+ private void cleanServiceEndpoints(String scope){
try {
SimpleQuery query = ICFactory.queryFor(ServiceEndpoint.class)
- .addCondition(String.format("$resource/Profile/Category/text() eq '%s'", ContextProvider.get().configuration().serviceClass()))
- .addCondition(String.format("$resource/Profile/Name/text() eq '%s'", ContextProvider.get().configuration().name()))
- .addCondition(String.format("$resource/Profile/RunTime/HostedOn/text() eq '%s'", getRunningOn(ContextProvider.get().container().configuration())))
+ .addCondition(String.format("$resource/Profile/Category/text() eq '%s'", SmartExecutorImpl.ctx.configuration().serviceClass()))
+ .addCondition(String.format("$resource/Profile/Name/text() eq '%s'", SmartExecutorImpl.ctx.configuration().name()))
+ .addCondition(String.format("$resource/Profile/RunTime/HostedOn/text() eq '%s'", getRunningOn(SmartExecutorImpl.ctx.container().configuration())))
.setResult("$resource");
DiscoveryClient client = ICFactory.clientFor(ServiceEndpoint.class);
@@ -224,11 +281,11 @@ public class SmartExecutorInitializator implements ApplicationManager {
for (ServiceEndpoint serviceEndpoint : serviceEndpoints) {
try {
logger.debug("Trying to unpublish the old ServiceEndpoint with ID {} from scope {}",
- serviceEndpoint.id(), getScopeFromToken());
- unPublishResource(serviceEndpoint);
+ serviceEndpoint.id(), scope);
+ unPublishScopedResource(serviceEndpoint);
} catch(Exception e){
logger.debug("Exception tryng to unpublish the old ServiceEndpoint with ID {} from scope {}",
- serviceEndpoint.id(), getScopeFromToken(), e);
+ serviceEndpoint.id(), scope, e);
}
}
}catch(Exception e){
@@ -244,38 +301,37 @@ public class SmartExecutorInitializator implements ApplicationManager {
* Furthermore create/connect to DB
*/
@Override
- public void onInit() {
- String token = SecurityTokenProvider.instance.get();
- AuthorizationEntry authorizationEntry;
- try {
- authorizationEntry = Constants.authorizationService().get(token);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- String scope = authorizationEntry.getContext();
-
+ public void onStart(ApplicationLifecycleEvent.Start applicationLifecycleEventStart) {
logger.trace(
"\n-------------------------------------------------------\n"
- + "Smart Executor is Starting on scope {}\n"
- + "-------------------------------------------------------", scope);
+ + "Smart Executor is Starting\n"
+ + "-------------------------------------------------------");
+
+ SmartExecutorImpl.ctx = applicationLifecycleEventStart.context();
ServiceEndpoint serviceEndpoint = createServiceEndpoint();
- cleanServiceEndpoints();
+ // Checking if there are old unpublished ServiceEndpoints related to
+ // this vHN and trying to unpublish them
+ List scopes = getScopes(SmartExecutorImpl.ctx);
- try {
- SmartExecutorPersistenceFactory.getPersistenceConnector();
- } catch (Exception e) {
- logger.error("Unable to isntantiate {} for scope {}",
- SmartExecutorPersistenceConnector.class.getSimpleName(), scope, e);
- throw new RuntimeException(e);
+ 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);
+ }
}
- // TODO set task that are still on running state to FAILED state on
- // Persistence to clean previous situation of a failure of HostingNode
+ // TODO set task that are still on running state on DB to have a clear
+ // room
try {
- publishResource(serviceEndpoint);
+ publishScopedResource(serviceEndpoint, scopes);
} catch (RegistryNotFoundException e) {
logger.error("Unable to Create ServiceEndpoint. the Service will be aborted", e);
return;
@@ -286,10 +342,12 @@ public class SmartExecutorInitializator implements ApplicationManager {
logger.trace(
"\n-------------------------------------------------------\n"
- + "Smart Executor Started Successfully on scope {}\n"
- + "-------------------------------------------------------", scope);
+ + "Smart Executor Started Successfully\n"
+ + "-------------------------------------------------------");
+
+ // TODO Launch initializer thread
+
- // TODO Launch repetitive thread for global task take over
}
/**
@@ -299,32 +357,31 @@ public class SmartExecutorInitializator implements ApplicationManager {
* Furthermore close the connection to DB.
*/
@Override
- public void onShutdown(){
-
-
+ public void onStop(ApplicationLifecycleEvent.Stop applicationLifecycleEventStop) {
logger.trace(
"\n-------------------------------------------------------\n"
- + "Smart Executor is Stopping on scope {}\n"
- + "-------------------------------------------------------",
- getScopeFromToken());
+ + "Smart Executor is Stopping\n"
+ + "-------------------------------------------------------");
SmartExecutorScheduler.getInstance().stopAll();
-
- cleanServiceEndpoints();
- try {
- SmartExecutorPersistenceFactory.getPersistenceConnector().close();
- } catch (Exception e) {
- logger.error("Unable to correctly close {} for scope {}",
- SmartExecutorPersistenceConnector.class.getSimpleName(),
- getScopeFromToken(), e);
+ List 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);
+ }
}
logger.trace(
"\n-------------------------------------------------------\n"
- + "Smart Executor Stopped Successfully on scope {}\n"
- + "-------------------------------------------------------",
- getScopeFromToken());
+ + "Smart Executor Stopped Successfully\n"
+ + "-------------------------------------------------------");
}
}
diff --git a/src/main/java/org/gcube/vremanagement/executor/configuration/ScheduledTaskConfiguration.java b/src/main/java/org/gcube/vremanagement/executor/configuration/ScheduledTaskConfiguration.java
index 5b654f1..a42d18e 100644
--- a/src/main/java/org/gcube/vremanagement/executor/configuration/ScheduledTaskConfiguration.java
+++ b/src/main/java/org/gcube/vremanagement/executor/configuration/ScheduledTaskConfiguration.java
@@ -10,6 +10,9 @@ import org.gcube.vremanagement.executor.api.types.LaunchParameter;
import org.gcube.vremanagement.executor.exception.SchedulePersistenceException;
/**
+ * Every implementation MUST take in account to store/query the records
+ * on the current scope which is not passed as argument but MUST be retrieved
+ * from thread local
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*/
public interface ScheduledTaskConfiguration {
diff --git a/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/FileScheduledTaskConfiguration.java b/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/FileScheduledTaskConfiguration.java
index 5173f1e..5262205 100644
--- a/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/FileScheduledTaskConfiguration.java
+++ b/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/FileScheduledTaskConfiguration.java
@@ -13,7 +13,8 @@ import java.util.List;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
-import org.gcube.smartgears.ContextProvider;
+//import org.gcube.smartgears.ContextProvider;
+import org.gcube.vremanagement.executor.SmartExecutorImpl;
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
import org.gcube.vremanagement.executor.api.types.Scheduling;
import org.gcube.vremanagement.executor.configuration.ScheduledTaskConfiguration;
@@ -44,7 +45,8 @@ public class FileScheduledTaskConfiguration implements ScheduledTaskConfiguratio
public static final String CONFIG_TASK_FILENAME = "definedTasks.json";
public FileScheduledTaskConfiguration() throws Exception {
- this(ContextProvider.get().persistence().location());
+ this(SmartExecutorImpl.getCtx().persistence().location());
+ //this(ContextProvider.get().persistence().location());
}
public FileScheduledTaskConfiguration(String location) throws IOException, JSONException {
diff --git a/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/JSONLaunchParameter.java b/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/JSONLaunchParameter.java
index 2962221..74fa74c 100644
--- a/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/JSONLaunchParameter.java
+++ b/src/main/java/org/gcube/vremanagement/executor/configuration/jsonbased/JSONLaunchParameter.java
@@ -48,23 +48,23 @@ public class JSONLaunchParameter extends LaunchParameter {
public JSONLaunchParameter(String pluginName, Map pluginCapabilities, Map inputs) {
super(pluginName, pluginCapabilities, inputs);
- this.scope = SmartExecutorInitializator.getScopeFromToken();
+ this.scope = SmartExecutorInitializator.getCurrentScope();
}
public JSONLaunchParameter(String pluginName, Map inputs, Scheduling scheduling) throws ParseException {
super(pluginName, inputs, scheduling);
- this.scope = SmartExecutorInitializator.getScopeFromToken();
+ this.scope = SmartExecutorInitializator.getCurrentScope();
}
public JSONLaunchParameter(String pluginName, Map pluginCapabilities, Map inputs, Scheduling scheduling) throws ParseException {
super(pluginName, pluginCapabilities, inputs, scheduling);
- this.scope = SmartExecutorInitializator.getScopeFromToken();
+ this.scope = SmartExecutorInitializator.getCurrentScope();
}
public JSONLaunchParameter(LaunchParameter parameter) throws ParseException {
super(parameter.getPluginName(), parameter.getPluginCapabilities(), parameter.getInputs(), parameter.getScheduling());
this.scheduling = new JSONScheduling(parameter.getScheduling());
- this.scope = SmartExecutorInitializator.getScopeFromToken();
+ this.scope = SmartExecutorInitializator.getCurrentScope();
}
public JSONLaunchParameter(JSONObject jsonObject) throws JSONException, ParseException, ScopeNotMatchException {
@@ -100,7 +100,7 @@ public class JSONLaunchParameter extends LaunchParameter {
this.usedBy = jsonObject.getString(USED_BY);
}
- this.scope = SmartExecutorInitializator.getScopeFromToken();
+ this.scope = SmartExecutorInitializator.getCurrentScope();
if(jsonObject.has(SCOPE)){
String jsonScope = jsonObject.getString(SCOPE);
if(jsonScope.compareTo(scope)!=0){
diff --git a/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConfiguration.java b/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConfiguration.java
index aa6c6b9..e70a717 100644
--- a/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConfiguration.java
+++ b/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConfiguration.java
@@ -126,7 +126,7 @@ public class SmartExecutorPersistenceConfiguration {
List serviceEndpoints = client.submit(query);
if(serviceEndpoints.size()>1){
query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Name/text() eq '%s'", TARGET_SCOPE));
- query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Value/text() eq '%s'", SmartExecutorInitializator.getScopeFromToken()));
+ query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Value/text() eq '%s'", SmartExecutorInitializator.getCurrentScope()));
serviceEndpoints = client.submit(query);
}
return serviceEndpoints.get(0);
diff --git a/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConnector.java b/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConnector.java
index fd6675b..ff5d04b 100644
--- a/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConnector.java
+++ b/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceConnector.java
@@ -11,6 +11,9 @@ import org.gcube.vremanagement.executor.plugin.PluginStateNotification;
/**
* Model the connector which create or open the connection to DB.
+ * Every implementation MUST take in account to store/query the records
+ * on the current scope which is not passed as argument but MUSt be retrieved
+ * from thread local.
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*/
public abstract class SmartExecutorPersistenceConnector implements PluginStateNotification {
diff --git a/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceFactory.java b/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceFactory.java
index 3d79add..8b65f81 100644
--- a/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceFactory.java
+++ b/src/main/java/org/gcube/vremanagement/executor/persistence/SmartExecutorPersistenceFactory.java
@@ -43,12 +43,12 @@ public abstract class SmartExecutorPersistenceFactory {
*/
public static synchronized SmartExecutorPersistenceConnector getPersistenceConnector() throws Exception {
SmartExecutorPersistenceConnector persistence =
- getPersistenceConnector(SmartExecutorInitializator.getScopeFromToken());
+ getPersistenceConnector(SmartExecutorInitializator.getCurrentScope());
if(persistence==null){
logger.trace("Retrieving {} for scope {} not found on internal {}. Intializing it.",
SmartExecutorPersistenceConnector.class.getSimpleName(),
- SmartExecutorInitializator.getScopeFromToken(),
+ SmartExecutorInitializator.getCurrentScope(),
Map.class.getSimpleName());
String className = CouchDBPersistenceConnector.class.getSimpleName();
@@ -56,7 +56,7 @@ public abstract class SmartExecutorPersistenceFactory {
new SmartExecutorPersistenceConfiguration(className);
persistence = new CouchDBPersistenceConnector(configuration);
- persistenceConnectors.put(SmartExecutorInitializator.getScopeFromToken(),
+ persistenceConnectors.put(SmartExecutorInitializator.getCurrentScope(),
persistence);
}
@@ -65,10 +65,10 @@ public abstract class SmartExecutorPersistenceFactory {
public static synchronized void closePersistenceConnector() throws Exception {
SmartExecutorPersistenceConnector persistence =
- getPersistenceConnector(SmartExecutorInitializator.getScopeFromToken());
+ getPersistenceConnector(SmartExecutorInitializator.getCurrentScope());
if(persistence!=null){
persistence.close();
- persistenceConnectors.remove(SmartExecutorInitializator.getScopeFromToken());
+ persistenceConnectors.remove(SmartExecutorInitializator.getCurrentScope());
}
}
diff --git a/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/CouchDBPersistenceConnector.java b/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/CouchDBPersistenceConnector.java
index b466572..e66a52c 100644
--- a/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/CouchDBPersistenceConnector.java
+++ b/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/CouchDBPersistenceConnector.java
@@ -205,7 +205,7 @@ public class CouchDBPersistenceConnector extends SmartExecutorPersistenceConnect
ViewQuery query = new ViewQuery().designDocId(String.format("%s%s", MAP_REDUCE__DESIGN, PLUGIN_STATE_DOCUMENT));
- String scope = SmartExecutorInitializator.getScopeFromToken();
+ String scope = SmartExecutorInitializator.getCurrentScope();
ArrayNode startKey = new ObjectMapper().createArrayNode();
startKey.add(scope);
ArrayNode endKey = new ObjectMapper().createArrayNode();
@@ -273,7 +273,7 @@ public class CouchDBPersistenceConnector extends SmartExecutorPersistenceConnect
ViewQuery query = new ViewQuery().designDocId(String.format("%s%s", MAP_REDUCE__DESIGN, SCHEDULED_TASKS_DOCUMENT));
query = query.viewName(ORPHAN_VIEW);
- String scope = SmartExecutorInitializator.getScopeFromToken();
+ String scope = SmartExecutorInitializator.getCurrentScope();
ArrayNode startKey = new ObjectMapper().createArrayNode();
startKey.add(scope);
ArrayNode endKey = new ObjectMapper().createArrayNode();
@@ -316,7 +316,7 @@ public class CouchDBPersistenceConnector extends SmartExecutorPersistenceConnect
JSONObject obj = jlp.toJSON();
obj.append(TYPE_JSON_FIELD, SCHEDULED_TASK_TYPE);
obj.append(USED_BY_FIELD, consumerID);
- obj.append(ScheduledTaskConfiguration.SCOPE, SmartExecutorInitializator.getScopeFromToken());
+ obj.append(ScheduledTaskConfiguration.SCOPE, SmartExecutorInitializator.getCurrentScope());
createItem(obj, uuid.toString());
} catch (Exception e) {
logger.error("Error Adding Scheduled Task UUID : {}, Consumer : {}, LaunchParameter : {}",
diff --git a/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/PluginStateEvolutionObjectNode.java b/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/PluginStateEvolutionObjectNode.java
index 77fb353..70570f4 100644
--- a/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/PluginStateEvolutionObjectNode.java
+++ b/src/main/java/org/gcube/vremanagement/executor/persistence/couchdb/PluginStateEvolutionObjectNode.java
@@ -76,7 +76,7 @@ public class PluginStateEvolutionObjectNode {
}
public static void addScope(ObjectNode objectNode){
- objectNode.put(SCOPE_FIELD, SmartExecutorInitializator.getScopeFromToken());
+ objectNode.put(SCOPE_FIELD, SmartExecutorInitializator.getCurrentScope());
}
public static ObjectNode getObjectMapper(PluginStateEvolution pluginStateEvolution){
diff --git a/src/main/java/org/gcube/vremanagement/executor/scheduler/SmartExecutorScheduler.java b/src/main/java/org/gcube/vremanagement/executor/scheduler/SmartExecutorScheduler.java
index 6fe5c81..75af07f 100644
--- a/src/main/java/org/gcube/vremanagement/executor/scheduler/SmartExecutorScheduler.java
+++ b/src/main/java/org/gcube/vremanagement/executor/scheduler/SmartExecutorScheduler.java
@@ -12,7 +12,8 @@ import java.util.Map;
import java.util.UUID;
import org.gcube.common.resources.gcore.GCoreEndpoint;
-import org.gcube.smartgears.ContextProvider;
+import org.gcube.vremanagement.executor.SmartExecutorImpl;
+//import org.gcube.smartgears.ContextProvider;
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
import org.gcube.vremanagement.executor.api.types.Scheduling;
import org.gcube.vremanagement.executor.configuration.ScheduledTaskConfiguration;
@@ -150,7 +151,8 @@ public class SmartExecutorScheduler {
}
try {
- String runningInstanceID = ContextProvider.get().profile(GCoreEndpoint.class).id();
+ //String runningInstanceID = ContextProvider.get().profile(GCoreEndpoint.class).id();
+ String runningInstanceID = SmartExecutorImpl.getCtx().profile(GCoreEndpoint.class).id();
logger.debug("Going to persist Scheduled Task {} which will be assigned to Running Instance {}. LaunchParameters : {} ",
uuid.toString(), runningInstanceID, parameter);
ScheduledTaskConfiguration stc = ScheduledTaskConfigurationFactory.getLaunchConfiguration();