diff --git a/etc/deploy-jndi-config.xml b/etc/deploy-jndi-config.xml
index 13f19ac..9c12095 100644
--- a/etc/deploy-jndi-config.xml
+++ b/etc/deploy-jndi-config.xml
@@ -11,58 +11,6 @@
override="false" />
-->
-
-
-
-
-
-
-
-
-
-
-
-
- factory
- org.globus.wsrf.jndi.BeanFactory
-
-
- mode
- push
-
-
- fileName
- registration.xml
-
-
-
-
-
-
-
-
- factory
- org.globus.wsrf.jndi.BeanFactory
-
-
- resourceClass
- org.gcube.informationsystem.registry.impl.state.ProfileResource
-
-
-
- sweeperDelay
- 10000
-
-
-
-
-
-
-
diff --git a/etc/deploy-server.wsdd b/etc/deploy-server.wsdd
index e271007..af95f6e 100644
--- a/etc/deploy-server.wsdd
+++ b/etc/deploy-server.wsdd
@@ -5,18 +5,6 @@
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:aggr="http://mds.globus.org/aggregator/types">
-
-
- share/schema/org.gcube.informationsystem.registry/Registry_service.wsdl
-
-
-
-
-
-
-
-
-
diff --git a/etc/profile.xml b/etc/profile.xml
index cf9d8f0..dd3f6cb 100644
--- a/etc/profile.xml
+++ b/etc/profile.xml
@@ -18,7 +18,7 @@
IS-Registry: validate, register and unregister GCUBE resources to/from the IS. It also publishes Topics for notifications about GCUBE resource events
IS-Registry-service
- 2.0.0
+ 2.1.0
@@ -32,7 +32,7 @@
1.0.0
IS-Registry-stubs
- 2.0.0
+ 2.1.0
false
@@ -48,16 +48,11 @@
-
- gcube/informationsystem/registry/Registry
-
-
-
IS-Registry: validate, register and unregister GCUBE resources to/from the IS. It also publishes Topics for notifications about GCUBE resource events
IS-Registry-stubs
- 2.0.0
+ 2.1.0
diff --git a/src/org/gcube/informationsystem/registry/impl/contexts/ServiceContext.java b/src/org/gcube/informationsystem/registry/impl/contexts/ServiceContext.java
index 7c8b39e..82a58d1 100644
--- a/src/org/gcube/informationsystem/registry/impl/contexts/ServiceContext.java
+++ b/src/org/gcube/informationsystem/registry/impl/contexts/ServiceContext.java
@@ -1,10 +1,5 @@
package org.gcube.informationsystem.registry.impl.contexts;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
import org.gcube.common.core.contexts.GCUBEServiceContext;
import org.gcube.common.core.contexts.GHNContext;
import static org.gcube.common.core.contexts.GHNContext.Mode;
@@ -16,10 +11,9 @@ import org.gcube.common.core.utils.events.GCUBEProducer;
import org.gcube.common.core.utils.events.GCUBETopic;
import org.gcube.common.core.utils.handlers.GCUBEScheduledHandler;
import org.gcube.informationsystem.registry.impl.local.LocalProfileConsumerImpl;
-import org.gcube.informationsystem.registry.impl.purging.AvailablePurgers;
-import org.gcube.informationsystem.registry.impl.purging.GHNPurger;
-import org.gcube.informationsystem.registry.impl.purging.RIPurger;
-import org.gcube.informationsystem.registry.impl.resourcemanagement.EliminatePoolingThread;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.AvailablePurgers;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.GHNPurger;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.RIPurger;
@@ -32,8 +26,6 @@ import org.gcube.informationsystem.registry.impl.resourcemanagement.EliminatePoo
public class ServiceContext extends GCUBEServiceContext {
public static final String JNDI_NAME = "gcube/informationsystem/registry";
-
- public static Map threadTable = Collections.synchronizedMap(new HashMap());
protected static final ServiceContext cache = new ServiceContext();
diff --git a/src/org/gcube/informationsystem/registry/impl/porttypes/LocalResourceRegistration.java b/src/org/gcube/informationsystem/registry/impl/porttypes/LocalResourceRegistration.java
index 02f2b3b..64a64cc 100644
--- a/src/org/gcube/informationsystem/registry/impl/porttypes/LocalResourceRegistration.java
+++ b/src/org/gcube/informationsystem/registry/impl/porttypes/LocalResourceRegistration.java
@@ -10,10 +10,10 @@ import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.informationsystem.registry.impl.contexts.ServiceContext;
import org.gcube.informationsystem.registry.impl.contexts.ServiceContext.RegistryTopic;
import org.gcube.informationsystem.registry.impl.local.LocalNotifier;
-import org.gcube.informationsystem.registry.impl.purging.AvailablePurgers;
-import org.gcube.informationsystem.registry.impl.purging.Purger;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.AvailablePurgers;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.Purger;
import org.gcube.informationsystem.registry.impl.state.Definitions.OperationType;
-import org.gcube.informationsystem.registry.impl.state.Definitions.ResourceType;
+import org.gcube.informationsystem.registry.impl.state.Definitions.ResourceMappings;
public class LocalResourceRegistration {
@@ -27,7 +27,7 @@ public class LocalResourceRegistration {
LocalNotifier.notifyEvent(resource, RegistryTopic.CREATE);
StringWriter writer = new StringWriter();
resource.store(writer);
- RegistryFactory.updateCounterInfo(resource.getID(), ResourceType.valueOf(
+ RegistryFactory.updateCounterInfo(resource.getID(), ResourceMappings.valueOf(
resource.getType()), OperationType.create,
Calendar.getInstance(), writer.toString());
}
@@ -42,18 +42,22 @@ public class LocalResourceRegistration {
publisher.remove(id, type, ServiceContext.getContext().getScope(), ServiceContext.getContext());
logger.debug("Resource " + id+ " successfully removed");
// if there is a purger available, remove also the related RIs
- Purger> purger = AvailablePurgers.getPurger(ResourceType.valueOf(type).getResourceImplementation().getClass());
- if (purger != null)
+ logger.trace("Looking for purger for "+ type);
+ Purger> purger = AvailablePurgers.getPurger(type);
+ if (purger != null) {
try {
+ logger.debug("Applying purger for " + type);
purger.purge(id, ServiceContext.getContext().getScope());
} catch (Exception e) {
logger.error("Error while removing the profiles related to the resource", e);
}
+ } else
+ logger.trace("No purger found");
//let the notifiers know
- GCUBEResource resource = ResourceType.valueOf(type).getResourceImplementation();
+ GCUBEResource resource = ResourceMappings.valueOf(type).getResourceImplementation();
resource.setID(id);
LocalNotifier.notifyEvent(resource, RegistryTopic.REMOVE);
- RegistryFactory.updateCounterInfo(id, ResourceType.valueOf(type),OperationType.destroy, Calendar.getInstance(), null);
+ RegistryFactory.updateCounterInfo(id, ResourceMappings.valueOf(type),OperationType.destroy, Calendar.getInstance(), null);
}
public void update(GCUBEResource resource) throws Exception {
@@ -63,7 +67,7 @@ public class LocalResourceRegistration {
LocalNotifier.notifyEvent(resource, RegistryTopic.UPDATE);
StringWriter writer = new StringWriter();
resource.store(writer);
- RegistryFactory.updateCounterInfo(resource.getID(), ResourceType.valueOf(resource.getType()),
+ RegistryFactory.updateCounterInfo(resource.getID(), ResourceMappings.valueOf(resource.getType()),
OperationType.update, Calendar.getInstance(), writer.toString());
}
diff --git a/src/org/gcube/informationsystem/registry/impl/porttypes/Registry.java b/src/org/gcube/informationsystem/registry/impl/porttypes/Registry.java
deleted file mode 100644
index 6161d8b..0000000
--- a/src/org/gcube/informationsystem/registry/impl/porttypes/Registry.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.gcube.informationsystem.registry.impl.porttypes;
-
-import org.apache.axis.utils.XMLUtils;
-import org.gcube.common.core.contexts.GCUBEServiceContext;
-import org.gcube.common.core.faults.GCUBEFault;
-import org.gcube.common.core.porttypes.GCUBEPortType;
-import org.gcube.informationsystem.registry.impl.contexts.ProfileContext;
-import org.gcube.informationsystem.registry.impl.contexts.ServiceContext;
-import org.gcube.informationsystem.registry.impl.state.ProfileResource;
-import org.gcube.informationsystem.registry.stubs.GetProfileString;
-
-
-/**
- * Implementation of the Registry portType
- *
- * @author Manuele Simi (CNR)
- *
- */
-public class Registry extends GCUBEPortType {
-
- /**
- * Gets a string representation of the profile
- * @param voidType
- * @return a string representation of the profile
- * @throws GCUBEFault
- */
- public String getProfileAsString(GetProfileString voidType) throws GCUBEFault{
-
- try {
- return XMLUtils.DocumentToString(((ProfileResource)ProfileContext.getContext().getWSHome().find()).getProfile());
- } catch (Exception e) {
- e.printStackTrace();
- throw new GCUBEFault();
- }
- }
-
- @Override
- protected GCUBEServiceContext getServiceContext() {
- return ServiceContext.getContext();
- }
-}
diff --git a/src/org/gcube/informationsystem/registry/impl/porttypes/RegistryFactory.java b/src/org/gcube/informationsystem/registry/impl/porttypes/RegistryFactory.java
index 106a701..988f4ac 100644
--- a/src/org/gcube/informationsystem/registry/impl/porttypes/RegistryFactory.java
+++ b/src/org/gcube/informationsystem/registry/impl/porttypes/RegistryFactory.java
@@ -13,7 +13,6 @@ import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.informationsystem.registry.impl.contexts.FactoryContext;
import org.gcube.informationsystem.registry.impl.contexts.ProfileContext;
import org.gcube.informationsystem.registry.impl.contexts.ServiceContext;
-import org.gcube.informationsystem.registry.impl.state.ProfileResource;
import org.gcube.informationsystem.registry.impl.state.RegistryFactoryResource;
import org.gcube.informationsystem.registry.impl.state.Definitions.OperationType;
import org.gcube.informationsystem.registry.stubs.CreateResourceMessage;
@@ -29,7 +28,7 @@ import org.gcube.informationsystem.registry.stubs.resourceregistration.CreateMes
import org.gcube.informationsystem.registry.stubs.resourceregistration.RemoveMessage;
import org.gcube.informationsystem.registry.stubs.resourceregistration.UpdateMessage;
-import static org.gcube.informationsystem.registry.impl.state.Definitions.ResourceType;
+import static org.gcube.informationsystem.registry.impl.state.Definitions.ResourceMappings;
/**
* Implementation of the Registry Factory portType
@@ -173,36 +172,6 @@ public class RegistryFactory extends GCUBEPortType {
}
- /**
- * Gets the profile resource
- *
- * @param id the Resource ID
- * @return the resource or null if the resource has not been created yet
- */
- protected synchronized ProfileResource getProfileResource(String id) {
- try {
- return (ProfileResource) ProfileContext.getContext().getWSHome()
- .find(ProfileContext.getContext().makeKey(id));
- } catch (Exception e) {
- logger.debug("A profile with the given id " + id+ " has not been created yet");
- }
- return null;
-
- }
-
- /**
- * Checks whether a stateful resource with the given identifier exists
- *
- * @param id the resource's identifier
- * @return true if the resource exists, false otherwise
- */
- protected synchronized boolean isResourceCreated(String id) {
- if (getProfileResource(id) != null)
- return true;
- else
- return false;
- }
-
/**
* Updates the RegistryFactoryResource RPs for notification
*
@@ -213,7 +182,7 @@ public class RegistryFactory extends GCUBEPortType {
* @throws Exception if the update fails
*/
protected static synchronized void updateCounterInfo(String ID,
- ResourceType resType, OperationType opType, Calendar updateTime,
+ ResourceMappings resType, OperationType opType, Calendar updateTime,
String profile) throws Exception {
//return;
RegistryProperty property = new RegistryProperty();
diff --git a/src/org/gcube/informationsystem/registry/impl/porttypes/ResourceRegistration.java b/src/org/gcube/informationsystem/registry/impl/porttypes/ResourceRegistration.java
index d508a17..f1a1e97 100644
--- a/src/org/gcube/informationsystem/registry/impl/porttypes/ResourceRegistration.java
+++ b/src/org/gcube/informationsystem/registry/impl/porttypes/ResourceRegistration.java
@@ -18,14 +18,14 @@ import org.gcube.common.core.resources.GCUBEResource;
import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.informationsystem.registry.impl.contexts.ServiceContext;
import org.gcube.informationsystem.registry.impl.contexts.ServiceContext.RegistryTopic;
-import org.gcube.informationsystem.registry.impl.filters.FilterManager;
-import org.gcube.informationsystem.registry.impl.filters.FilterExecutor.InvalidFilterException;
import org.gcube.informationsystem.registry.impl.local.LocalNotifier;
-import org.gcube.informationsystem.registry.impl.purging.AvailablePurgers;
-import org.gcube.informationsystem.registry.impl.purging.GHNPurger;
-import org.gcube.informationsystem.registry.impl.purging.Purger;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.AvailablePurgers;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.GHNPurger;
+import org.gcube.informationsystem.registry.impl.postprocessing.purging.Purger;
+import org.gcube.informationsystem.registry.impl.preprocessing.filters.FilterManager;
+import org.gcube.informationsystem.registry.impl.preprocessing.filters.FilterExecutor.InvalidFilterException;
import org.gcube.informationsystem.registry.impl.state.Definitions.OperationType;
-import org.gcube.informationsystem.registry.impl.state.Definitions.ResourceType;
+import org.gcube.informationsystem.registry.impl.state.Definitions.ResourceMappings;
import org.gcube.informationsystem.registry.stubs.resourceregistration.CreateFault;
import org.gcube.informationsystem.registry.stubs.resourceregistration.CreateMessage;
import org.gcube.informationsystem.registry.stubs.resourceregistration.CreateResponse;
@@ -148,7 +148,7 @@ public class ResourceRegistration extends GCUBEPortType {
}
GCUBEResource resource;
try {
- resource = ResourceType.valueOf(type).getResourceImplementation();
+ resource = ResourceMappings.valueOf(type).getResourceImplementation();
resource.load(new BufferedReader(new InputStreamReader( new ByteArrayInputStream(profile.getBytes("UTF-8")),"UTF-8")));
//resource.addScope(ServiceContext.getContext().getScope());
diff --git a/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/AvailablePurgers.java b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/AvailablePurgers.java
new file mode 100644
index 0000000..958fb38
--- /dev/null
+++ b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/AvailablePurgers.java
@@ -0,0 +1,22 @@
+package org.gcube.informationsystem.registry.impl.postprocessing.purging;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.gcube.common.core.utils.logging.GCUBELog;
+
+public class AvailablePurgers {
+
+ private static Map> purgers = new HashMap>();
+ private static GCUBELog logger = new GCUBELog(AvailablePurgers.class);
+
+ public static void register(Purger> purger) {
+ purgers.put(purger.getName(), purger);
+ logger.debug ("Purger " + purger.getName() + " registered");
+ }
+
+ public static Purger> getPurger(String purgerName) {
+ return purgers.get(purgerName);
+ }
+
+}
diff --git a/src/org/gcube/informationsystem/registry/impl/purging/GHNPurger.java b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/GHNPurger.java
similarity index 88%
rename from src/org/gcube/informationsystem/registry/impl/purging/GHNPurger.java
rename to src/org/gcube/informationsystem/registry/impl/postprocessing/purging/GHNPurger.java
index 890c8ef..9678956 100644
--- a/src/org/gcube/informationsystem/registry/impl/purging/GHNPurger.java
+++ b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/GHNPurger.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.registry.impl.purging;
+package org.gcube.informationsystem.registry.impl.postprocessing.purging;
import java.rmi.RemoteException;
import java.util.HashSet;
@@ -10,9 +10,7 @@ import org.gcube.common.core.informationsystem.client.ISClient;
import org.gcube.common.core.informationsystem.client.QueryParameter;
import org.gcube.common.core.informationsystem.client.XMLResult;
import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericQuery;
-import org.gcube.common.core.informationsystem.publisher.ISResourcePublisher;
import org.gcube.common.core.resources.GCUBEHostingNode;
-import org.gcube.common.core.resources.GCUBEResource;
import org.gcube.common.core.resources.GCUBERunningInstance;
import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.common.core.utils.logging.GCUBELog;
@@ -61,8 +59,6 @@ public class GHNPurger implements Purger {
}
}
- public void unregisterHostedRI() throws Exception {
- }
@Override
public Set purge(String ghnid, GCUBEScope scope) throws Exception {
@@ -93,9 +89,8 @@ public class GHNPurger implements Purger {
@Override
- public Class getResourceClass() {
- return GCUBEHostingNode.class;
+ public String getName() {
+ return GCUBEHostingNode.TYPE;
}
-
-
+
}
diff --git a/src/org/gcube/informationsystem/registry/impl/purging/Purger.java b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/Purger.java
similarity index 78%
rename from src/org/gcube/informationsystem/registry/impl/purging/Purger.java
rename to src/org/gcube/informationsystem/registry/impl/postprocessing/purging/Purger.java
index eb78d18..3b3267d 100644
--- a/src/org/gcube/informationsystem/registry/impl/purging/Purger.java
+++ b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/Purger.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.registry.impl.purging;
+package org.gcube.informationsystem.registry.impl.postprocessing.purging;
import java.util.Set;
@@ -25,9 +25,9 @@ public interface Purger {
/**
- * Gets the actual type of RESOURCE
- * @return the type of RESOURCE
+ * Gets the type of resource managed by the purgerE
+ * @return the type
*/
- public Class getResourceClass();
+ public String getName();
}
diff --git a/src/org/gcube/informationsystem/registry/impl/purging/RIPurger.java b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/RIPurger.java
similarity index 91%
rename from src/org/gcube/informationsystem/registry/impl/purging/RIPurger.java
rename to src/org/gcube/informationsystem/registry/impl/postprocessing/purging/RIPurger.java
index 3ce6c64..0c5f391 100644
--- a/src/org/gcube/informationsystem/registry/impl/purging/RIPurger.java
+++ b/src/org/gcube/informationsystem/registry/impl/postprocessing/purging/RIPurger.java
@@ -1,6 +1,5 @@
-package org.gcube.informationsystem.registry.impl.purging;
+package org.gcube.informationsystem.registry.impl.postprocessing.purging;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -16,6 +15,8 @@ import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.common.core.utils.logging.GCUBELog;
/**
+ * Purger for Running Instance resources. Cleanup all the resources related to
+ * a just-deleted RI.
*
* @author Manuele Simi (ISTI-CNR)
*
@@ -68,8 +69,8 @@ public class RIPurger implements Purger {
}
@Override
- public Class getResourceClass() {
- return GCUBERunningInstance.class;
+ public String getName() {
+ return GCUBERunningInstance.TYPE;
}
}
diff --git a/src/org/gcube/informationsystem/registry/impl/filters/DefaultFilterExecutor.java b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/DefaultFilterExecutor.java
similarity index 87%
rename from src/org/gcube/informationsystem/registry/impl/filters/DefaultFilterExecutor.java
rename to src/org/gcube/informationsystem/registry/impl/preprocessing/filters/DefaultFilterExecutor.java
index eab100c..c52e6e8 100644
--- a/src/org/gcube/informationsystem/registry/impl/filters/DefaultFilterExecutor.java
+++ b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/DefaultFilterExecutor.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.registry.impl.filters;
+package org.gcube.informationsystem.registry.impl.preprocessing.filters;
import java.util.List;
diff --git a/src/org/gcube/informationsystem/registry/impl/filters/Filter.java b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/Filter.java
similarity index 92%
rename from src/org/gcube/informationsystem/registry/impl/filters/Filter.java
rename to src/org/gcube/informationsystem/registry/impl/preprocessing/filters/Filter.java
index 21b239d..216a9b5 100644
--- a/src/org/gcube/informationsystem/registry/impl/filters/Filter.java
+++ b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/Filter.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.registry.impl.filters;
+package org.gcube.informationsystem.registry.impl.preprocessing.filters;
public class Filter {
diff --git a/src/org/gcube/informationsystem/registry/impl/filters/FilterExecutor.java b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterExecutor.java
similarity index 88%
rename from src/org/gcube/informationsystem/registry/impl/filters/FilterExecutor.java
rename to src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterExecutor.java
index 4ecbf44..5f76a4c 100644
--- a/src/org/gcube/informationsystem/registry/impl/filters/FilterExecutor.java
+++ b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterExecutor.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.registry.impl.filters;
+package org.gcube.informationsystem.registry.impl.preprocessing.filters;
import org.gcube.common.core.resources.GCUBEResource;
import org.gcube.common.core.utils.logging.GCUBELog;
diff --git a/src/org/gcube/informationsystem/registry/impl/filters/FilterManager.java b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterManager.java
similarity index 96%
rename from src/org/gcube/informationsystem/registry/impl/filters/FilterManager.java
rename to src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterManager.java
index e81ab28..127ac6e 100644
--- a/src/org/gcube/informationsystem/registry/impl/filters/FilterManager.java
+++ b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterManager.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.registry.impl.filters;
+package org.gcube.informationsystem.registry.impl.preprocessing.filters;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/src/org/gcube/informationsystem/registry/impl/filters/FilterReader.java b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterReader.java
similarity index 96%
rename from src/org/gcube/informationsystem/registry/impl/filters/FilterReader.java
rename to src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterReader.java
index 262c5f6..aa7bd2d 100644
--- a/src/org/gcube/informationsystem/registry/impl/filters/FilterReader.java
+++ b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/FilterReader.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.registry.impl.filters;
+package org.gcube.informationsystem.registry.impl.preprocessing.filters;
import java.io.BufferedReader;
import java.io.File;
@@ -15,7 +15,7 @@ import org.gcube.common.core.resources.GCUBEGenericResource;
import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.informationsystem.registry.impl.contexts.ServiceContext;
-import org.gcube.informationsystem.registry.impl.filters.Filter.FILTEROPERATION;
+import org.gcube.informationsystem.registry.impl.preprocessing.filters.Filter.FILTEROPERATION;
import org.kxml2.io.KXmlParser;
public class FilterReader {
diff --git a/src/org/gcube/informationsystem/registry/impl/filters/GHNFilterExecutor.java b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/GHNFilterExecutor.java
similarity index 93%
rename from src/org/gcube/informationsystem/registry/impl/filters/GHNFilterExecutor.java
rename to src/org/gcube/informationsystem/registry/impl/preprocessing/filters/GHNFilterExecutor.java
index 828d649..347f3c4 100644
--- a/src/org/gcube/informationsystem/registry/impl/filters/GHNFilterExecutor.java
+++ b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/GHNFilterExecutor.java
@@ -1,10 +1,10 @@
-package org.gcube.informationsystem.registry.impl.filters;
+package org.gcube.informationsystem.registry.impl.preprocessing.filters;
import java.util.List;
import org.gcube.common.core.resources.GCUBEHostingNode;
import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.informationsystem.registry.impl.filters.Filter.FILTEROPERATION;
+import org.gcube.informationsystem.registry.impl.preprocessing.filters.Filter.FILTEROPERATION;
/**
* Filter for {@link GCUBEHostingNode} resource
diff --git a/src/org/gcube/informationsystem/registry/impl/filters/RIFilterExecutor.java b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/RIFilterExecutor.java
similarity index 93%
rename from src/org/gcube/informationsystem/registry/impl/filters/RIFilterExecutor.java
rename to src/org/gcube/informationsystem/registry/impl/preprocessing/filters/RIFilterExecutor.java
index 591773d..d71284d 100644
--- a/src/org/gcube/informationsystem/registry/impl/filters/RIFilterExecutor.java
+++ b/src/org/gcube/informationsystem/registry/impl/preprocessing/filters/RIFilterExecutor.java
@@ -1,11 +1,11 @@
-package org.gcube.informationsystem.registry.impl.filters;
+package org.gcube.informationsystem.registry.impl.preprocessing.filters;
import java.util.List;
import org.gcube.common.core.resources.GCUBERunningInstance;
import org.gcube.common.core.resources.GCUBEResource;
import org.gcube.common.core.resources.runninginstance.Endpoint;
-import org.gcube.informationsystem.registry.impl.filters.Filter.FILTEROPERATION;
+import org.gcube.informationsystem.registry.impl.preprocessing.filters.Filter.FILTEROPERATION;
/**
diff --git a/src/org/gcube/informationsystem/registry/impl/purging/AvailablePurgers.java b/src/org/gcube/informationsystem/registry/impl/purging/AvailablePurgers.java
deleted file mode 100644
index baaa11a..0000000
--- a/src/org/gcube/informationsystem/registry/impl/purging/AvailablePurgers.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.gcube.informationsystem.registry.impl.purging;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class AvailablePurgers {
-
- private static Map, Purger>> purgers = new HashMap, Purger>>();
-
- public static void register(Purger> purger) {
- purgers.put(purger.getResourceClass(), purger);
- }
-
- public static Purger> getPurger(Class> purgerClass) {
- return purgers.get(purgerClass);
- }
-
-}
diff --git a/src/org/gcube/informationsystem/registry/impl/resourcemanagement/EliminatePoolingThread.java b/src/org/gcube/informationsystem/registry/impl/resourcemanagement/EliminatePoolingThread.java
deleted file mode 100644
index fd95dc8..0000000
--- a/src/org/gcube/informationsystem/registry/impl/resourcemanagement/EliminatePoolingThread.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.gcube.informationsystem.registry.impl.resourcemanagement;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import org.gcube.common.core.utils.logging.GCUBELog;
-import org.gcube.informationsystem.registry.impl.contexts.ProfileContext;
-import org.gcube.informationsystem.registry.impl.contexts.ServiceContext;
-
-/**
- *
- * Manages the asynchronous deletion of temporary resources
- *
- * @author Lucio Lelii, Manuele Simi (ISTI-CNR)
- *
- */
-public class EliminatePoolingThread extends Thread {
-
- private final long sleepTime = (Long) ServiceContext.getContext().getProperty("temporaryResourceSweeperIntervalInMs");
-
- private List stack = Collections.synchronizedList(new LinkedList());
-
- private static GCUBELog logger = new GCUBELog(EliminatePoolingThread.class);
-
- public void run() {
-
- while (true) {
- try {
- Thread.sleep(sleepTime);
- } catch (InterruptedException e) {}
-
- try {
- synchronized (stack) {
- int numRes = stack.size();
- LinkedList undeletedResources = this.checkResources();
- logger.debug("cannot destroy " + undeletedResources.size() + " resources, retrying later");
- logger.debug("destroyed " + (numRes - undeletedResources.size()) + " resources ");
- stack.addAll(undeletedResources);
- } // end synchronized block
-
- } catch (Exception e) {
- logger.error("Cannot continue with thread Excecution " + e);
- break;
- }
- }
- }
-
- public synchronized List getStack() {
- return this.stack;
- }
-
- /**
- * Checks and deletes expired temporary resources
- * @return the list of still living resources
- */
- private LinkedList checkResources() {
-
- LinkedList tmpStack = new LinkedList();
- long timestamp = System.currentTimeMillis();
-
- while (stack.size() > 0) {
- Pair c = stack.remove(stack.size() - 1);
- logger.trace("checking resource for deletion " + c.resource.getID());
- logger.trace("timenstamp now: " + timestamp + ", resource lifetime: " + c.lifetime);
- if (timestamp >= c.lifetime) {
- try {
- logger.debug("temporary resource " + c.resource.getID() + " is going to be deleted");
- ProfileContext.getContext().getWSHome().remove(c.resource.getID());
- } catch (Exception e) {
- logger.error(e);
- tmpStack.offer(c);// re-insert the resource in the list
- }
- } else {
- tmpStack.offer(c); // re-insert the resource in the list
- }
- }
- return tmpStack;
- }
-
-}
diff --git a/src/org/gcube/informationsystem/registry/impl/resourcemanagement/Pair.java b/src/org/gcube/informationsystem/registry/impl/resourcemanagement/Pair.java
deleted file mode 100644
index 0b26988..0000000
--- a/src/org/gcube/informationsystem/registry/impl/resourcemanagement/Pair.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.gcube.informationsystem.registry.impl.resourcemanagement;
-
-import org.gcube.informationsystem.registry.impl.state.ProfileResource;
-
-/**
- *
- * Maintain a {@link ProfileResource} and related lifetime association
- *
- * @author Manuele Simi (ISTI-CNR)
- *
- */
-public class Pair {
-
- public long lifetime;
- public ProfileResource resource;
-
- public Pair(long lifetime, ProfileResource resource){
- this.lifetime = lifetime;
- this.resource = resource;
- }
-
- public boolean equals(Object o){
- Pair objectCouple = (Pair) o;
- return objectCouple.resource.equals(this.resource);
-
- }
-
-}
\ No newline at end of file
diff --git a/src/org/gcube/informationsystem/registry/impl/resourcemanagement/RegistrationThread.java b/src/org/gcube/informationsystem/registry/impl/resourcemanagement/RegistrationThread.java
deleted file mode 100644
index 4d4b371..0000000
--- a/src/org/gcube/informationsystem/registry/impl/resourcemanagement/RegistrationThread.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.gcube.informationsystem.registry.impl.resourcemanagement;
-
-import java.util.List;
-import org.gcube.common.core.informationsystem.notifier.ISNotifier;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.scope.GCUBEScope;
-import org.gcube.common.core.utils.logging.GCUBELog;
-import org.gcube.informationsystem.registry.impl.contexts.FactoryContext;
-import org.gcube.informationsystem.registry.impl.contexts.ServiceContext;
-import org.globus.wsrf.Topic;
-
-/**
- * Registration Thread class
- *
- * @author Andrea Manzi (ISTI-CNR)
- *
- *
- */
-public class RegistrationThread implements Runnable {
-
- private static GCUBELog logger = new GCUBELog(RegistrationThread.class);
-
- private List extends Topic> topics;
-
- /**
- * The constructor
- *
- * @param qname
- * an Array list of RP qname
- * @throws Exception
- * Exception
- */
- public RegistrationThread(List extends Topic> topics) throws Exception {
- this.topics = topics;
- }
-
-
- public void run() {
-
- while (true) {
- try {
- // This is the time interval
- Thread.sleep(10000);
- } catch (InterruptedException e) {}
- try {
-
- ISNotifier notifier = GHNContext.getImplementation(ISNotifier.class);
- notifier.registerISNotification(FactoryContext.getContext().getEPR(), topics, ServiceContext.getContext(),
- ServiceContext.getContext().getInstance().getScopes().values().toArray(new GCUBEScope[0]));
- return;
- } catch (Exception e) {
- logger.error("Error starting registration: Retrying in 10 seconds");
- }
- }
-
- }
-
-}
diff --git a/src/org/gcube/informationsystem/registry/impl/resources/GCUBERegisteredResource.java b/src/org/gcube/informationsystem/registry/impl/resources/GCUBERegisteredResource.java
deleted file mode 100644
index 1ae6a03..0000000
--- a/src/org/gcube/informationsystem/registry/impl/resources/GCUBERegisteredResource.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.gcube.informationsystem.registry.impl.resources;
-
-
-import java.io.StringReader;
-import java.io.StringWriter;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-
-import org.gcube.common.core.resources.GCUBEHostingNode;
-import org.gcube.common.core.resources.GCUBEResource;
-
-/**
- * A to-be-registered {@link GCUBEResource} passed to the ISRegistry
- *
- * @author Manuele Simi (ISTI-CNR)
- *
- */
-public class GCUBERegisteredResource {
-
-
- protected GCUBEResource resource;
-
- Document dom = null;
-
- public GCUBERegisteredResource (GCUBEResource resource) throws Exception {
- this.resource = resource;
- this.parse();
- }
-
- public String getID() {
- return this.resource.getID();
- }
-
- /**
- * States if the resource is a temporary resource, i.e. must be destroyed after its registration
- * @return
- */
- public boolean isTemporary() {
- if (resource.getType().compareTo(GCUBEHostingNode.TYPE) == 0)
- return false;
- else
- return true;
- }
-
- private void parse() throws Exception {
- StringWriter writer = new StringWriter();
- try {
- resource.store(writer);
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
-
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- StringReader reader = new StringReader(writer.toString().substring(writer.toString().indexOf("?>") + 2, writer.toString().length()));
-
- InputSource source = new InputSource(reader);
-
- this.dom = builder.parse(source);
-
- } catch (Exception e1) {
- throw new Exception("Unable to parse the resource");
- }
-
- }
-
- /**
- * @return the XML Document representation of the resouce
- */
- public Document getAsDOM() {
- return this.dom;
- }
-
- /**
- * @return the source resource
- */
- public GCUBEResource getSource() {
- return this.resource;
- }
-}
diff --git a/src/org/gcube/informationsystem/registry/impl/state/Definitions.java b/src/org/gcube/informationsystem/registry/impl/state/Definitions.java
index 7403dd5..c0e4c81 100644
--- a/src/org/gcube/informationsystem/registry/impl/state/Definitions.java
+++ b/src/org/gcube/informationsystem/registry/impl/state/Definitions.java
@@ -1,8 +1,6 @@
package org.gcube.informationsystem.registry.impl.state;
import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.resources.GCUBECS;
-import org.gcube.common.core.resources.GCUBECSInstance;
import org.gcube.common.core.resources.GCUBECollection;
import org.gcube.common.core.resources.GCUBEExternalRunningInstance;
import org.gcube.common.core.resources.GCUBEGenericResource;
@@ -23,7 +21,7 @@ public class Definitions {
/** The Resource Types */
- public static enum ResourceType {
+ public static enum ResourceMappings {
RunningInstance() {public GCUBEResource getResourceImplementation() throws Exception {return GHNContext.getImplementation(GCUBERunningInstance.class);}},
ExternalRunningInstance() {public GCUBEResource getResourceImplementation() throws Exception {return GHNContext.getImplementation(GCUBEExternalRunningInstance.class);}},
Service() {public GCUBEResource getResourceImplementation() throws Exception {return GHNContext.getImplementation(GCUBEService.class);}},
diff --git a/src/org/gcube/informationsystem/registry/impl/state/ProfileResource.java b/src/org/gcube/informationsystem/registry/impl/state/ProfileResource.java
deleted file mode 100644
index 345eedf..0000000
--- a/src/org/gcube/informationsystem/registry/impl/state/ProfileResource.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.gcube.informationsystem.registry.impl.state;
-
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.informationsystem.publisher.ISPublisher;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.state.GCUBEWSResource;
-import org.gcube.common.core.utils.logging.GCUBELog;
-import org.gcube.informationsystem.registry.impl.resources.GCUBERegisteredResource;
-
-import org.globus.wsrf.ResourceException;
-import org.w3c.dom.Document;
-
-/**
- * Profile Stateful resource
- *
- * @author Andrea Manzi, Lucio Lelii, Manuele Simi (ISTI-CNR)
- *
- */
-public class ProfileResource extends GCUBEWSResource {
-
- private static GCUBELog logger = new GCUBELog(ProfileResource.class.getName());
-
- protected GCUBEResource gCubeResource;
-
- protected static final String ProfileRP = "Profile";
-
- /**
- * Constructor
- *
- */
- public ProfileResource() {};
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected String[] getPropertyNames() {
- return new String[] { ProfileRP };
- }
-
- /**
- * Initializes the resource
- *
- * @param params
- * Object
- * @throws ResourceException
- * if resource is missing
- */
- @Override
- public void initialise(Object... params) throws ResourceException {
- GCUBERegisteredResource resource;
- try {
- resource = new GCUBERegisteredResource((GCUBEResource) params[0]);
- } catch (Exception e) {
- throw new ResourceException("Invalid GCUBEResource");
- }
- logger.debug("initializing resource " + resource.getID());
-
- this.setProfile(resource.getAsDOM());
- // this.setNotificationProfile(dom);
- this.setGCubeResource(resource.getSource());
-
- if (resource.isTemporary())
- this.setTerminationTime(null);
- }
-
- /**
- * Sets Profile
- *
- * @param profile the profile
- */
- public void setProfile(Document profile) {
- this.getResourcePropertySet().get(ProfileRP).clear();
- this.getResourcePropertySet().get(ProfileRP).add(profile);
- }
-
- /**
- * Gets Profile
- *
- * @return the profile
- */
- public Document getProfile() {
- return (Document) this.getResourcePropertySet().get(ProfileRP).get(0);
- }
-
- /**
- * Returns the source {@link GCUBEResource}
- *
- * @return the resource
- */
- public GCUBEResource getGCubeResource() {
- return this.gCubeResource;
- }
-
- /**
- * Sets the source {@link GCUBEResource}
- *
- * @param resource the resource
- */
- public void setGCubeResource(GCUBEResource resource) {
- this.gCubeResource = resource;
- }
-
- /**
- * Updates the resource
- *
- * @param resource
- * the resource to update
- * @throws Exception
- * if something goes wrong
- */
- public void updateResource(GCUBEResource resource) throws Exception {
- GCUBERegisteredResource regResource = new GCUBERegisteredResource(resource);
- this.setProfile(regResource.getAsDOM());
- this.setGCubeResource(resource);
- this.store();
- }
-
- /* (non-Javadoc)
- * @see org.gcube.common.core.state.GCUBEWSResource#getPublisher()
- */
- @Override
- protected ISPublisher getPublisher() throws Exception {
- return GHNContext.getImplementation(ISPublisher.class);
- }
-
-}
diff --git a/src/org/gcube/informationsystem/registry/impl/state/ProfileResourceHome.java b/src/org/gcube/informationsystem/registry/impl/state/ProfileResourceHome.java
deleted file mode 100644
index c235bcf..0000000
--- a/src/org/gcube/informationsystem/registry/impl/state/ProfileResourceHome.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.gcube.informationsystem.registry.impl.state;
-
-import org.gcube.common.core.contexts.GCUBEStatefulPortTypeContext;
-
-import org.gcube.common.core.state.GCUBEWSHome;
-import org.gcube.informationsystem.registry.impl.contexts.ProfileContext;
-
-/**
- *
- * @author lucio
- *
- */
-public class ProfileResourceHome extends GCUBEWSHome {
-
- /** {@inheritDoc}*/
- public GCUBEStatefulPortTypeContext getPortTypeContext() {
- return ProfileContext.getContext();
- }
-
-}