From f328250842f49f33f29b2d6415f1b25664a703ee Mon Sep 17 00:00:00 2001 From: Manuele Simi Date: Tue, 22 Mar 2011 03:47:15 +0000 Subject: [PATCH] Code cleanup from unused portType and state. Improved purging and package reorganization. git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/information-system/gCubeIS/Registry@36413 82a268e6-3cf1-43bd-a215-b396298e98cf --- etc/deploy-jndi-config.xml | 52 ------- etc/deploy-server.wsdd | 12 -- etc/profile.xml | 11 +- .../impl/contexts/ServiceContext.java | 14 +- .../porttypes/LocalResourceRegistration.java | 22 +-- .../registry/impl/porttypes/Registry.java | 41 ------ .../impl/porttypes/RegistryFactory.java | 35 +---- .../impl/porttypes/ResourceRegistration.java | 14 +- .../purging/AvailablePurgers.java | 22 +++ .../purging/GHNPurger.java | 13 +- .../{ => postprocessing}/purging/Purger.java | 8 +- .../purging/RIPurger.java | 9 +- .../filters/DefaultFilterExecutor.java | 2 +- .../{ => preprocessing}/filters/Filter.java | 2 +- .../filters/FilterExecutor.java | 2 +- .../filters/FilterManager.java | 2 +- .../filters/FilterReader.java | 4 +- .../filters/GHNFilterExecutor.java | 4 +- .../filters/RIFilterExecutor.java | 4 +- .../impl/purging/AvailablePurgers.java | 18 --- .../EliminatePoolingThread.java | 80 ----------- .../impl/resourcemanagement/Pair.java | 28 ---- .../RegistrationThread.java | 58 -------- .../resources/GCUBERegisteredResource.java | 84 ------------ .../registry/impl/state/Definitions.java | 4 +- .../registry/impl/state/ProfileResource.java | 127 ------------------ .../impl/state/ProfileResourceHome.java | 20 --- 27 files changed, 74 insertions(+), 618 deletions(-) delete mode 100644 src/org/gcube/informationsystem/registry/impl/porttypes/Registry.java create mode 100644 src/org/gcube/informationsystem/registry/impl/postprocessing/purging/AvailablePurgers.java rename src/org/gcube/informationsystem/registry/impl/{ => postprocessing}/purging/GHNPurger.java (88%) rename src/org/gcube/informationsystem/registry/impl/{ => postprocessing}/purging/Purger.java (78%) rename src/org/gcube/informationsystem/registry/impl/{ => postprocessing}/purging/RIPurger.java (91%) rename src/org/gcube/informationsystem/registry/impl/{ => preprocessing}/filters/DefaultFilterExecutor.java (87%) rename src/org/gcube/informationsystem/registry/impl/{ => preprocessing}/filters/Filter.java (92%) rename src/org/gcube/informationsystem/registry/impl/{ => preprocessing}/filters/FilterExecutor.java (88%) rename src/org/gcube/informationsystem/registry/impl/{ => preprocessing}/filters/FilterManager.java (96%) rename src/org/gcube/informationsystem/registry/impl/{ => preprocessing}/filters/FilterReader.java (96%) rename src/org/gcube/informationsystem/registry/impl/{ => preprocessing}/filters/GHNFilterExecutor.java (93%) rename src/org/gcube/informationsystem/registry/impl/{ => preprocessing}/filters/RIFilterExecutor.java (93%) delete mode 100644 src/org/gcube/informationsystem/registry/impl/purging/AvailablePurgers.java delete mode 100644 src/org/gcube/informationsystem/registry/impl/resourcemanagement/EliminatePoolingThread.java delete mode 100644 src/org/gcube/informationsystem/registry/impl/resourcemanagement/Pair.java delete mode 100644 src/org/gcube/informationsystem/registry/impl/resourcemanagement/RegistrationThread.java delete mode 100644 src/org/gcube/informationsystem/registry/impl/resources/GCUBERegisteredResource.java delete mode 100644 src/org/gcube/informationsystem/registry/impl/state/ProfileResource.java delete mode 100644 src/org/gcube/informationsystem/registry/impl/state/ProfileResourceHome.java 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 topics; - - /** - * The constructor - * - * @param qname - * an Array list of RP qname - * @throws Exception - * Exception - */ - public RegistrationThread(List 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(); - } - -}