Difference between revisions of "Registry-Publisher"
(→Interfaces) |
|||
Line 1: | Line 1: | ||
− | |||
− | |||
In conjunction with the IC-Client, the Registry-Publisher represents the mediation layer gCube Services, based on FWS, will rely on to interact with the Information Service as a whole. | In conjunction with the IC-Client, the Registry-Publisher represents the mediation layer gCube Services, based on FWS, will rely on to interact with the Information Service as a whole. | ||
− | |||
− | |||
− | |||
= Design = | = Design = | ||
Line 12: | Line 7: | ||
* by implementing the <code>org.gcube.common.core.informationsystem.publisher.RegistryPublisher</code> interface, the library allows gCube services to publish GCUBEResources and instances' states as of the gCube Resource Model defined in [[Common-gcore-resources]]; | * by implementing the <code>org.gcube.common.core.informationsystem.publisher.RegistryPublisher</code> interface, the library allows gCube services to publish GCUBEResources and instances' states as of the gCube Resource Model defined in [[Common-gcore-resources]]; | ||
* by implementing the <code>org.gcube.informationsystem.publisher.ScopedPublisher</code> interface, the library allows gCube services to publish GCUBEResources and instances' states as of the gCube Resource Model defined in [[Common-gcore-resources]] in multi scope way; | * by implementing the <code>org.gcube.informationsystem.publisher.ScopedPublisher</code> interface, the library allows gCube services to publish GCUBEResources and instances' states as of the gCube Resource Model defined in [[Common-gcore-resources]] in multi scope way; | ||
+ | |||
+ | = Maven coordinates = | ||
+ | The coordinates of the maven artifact are: | ||
+ | <source lang="xml"> | ||
+ | <dependency> | ||
+ | <groupId>org.gcube.resources</groupId> | ||
+ | <artifactId>registry-publisher</artifactId> | ||
+ | <version>...</version> | ||
+ | </dependency> | ||
+ | </source> | ||
+ | Check on [http://maven.research-infrastructures.eu/nexus/index.html#nexus-search;gav~org.gcube.resources~registry-publisher Nexus] for the latest version. | ||
= Publishing a resource = | = Publishing a resource = |
Revision as of 08:51, 15 April 2013
In conjunction with the IC-Client, the Registry-Publisher represents the mediation layer gCube Services, based on FWS, will rely on to interact with the Information Service as a whole.
Contents
Design
The Registry-Publisher is a Java library providing the implementation of two interfaces (RegistryPublisher and ScopedPublisher) that allow services to publish GCUBEResource as well as their state in the IS.
More specifically:
- by implementing the
org.gcube.common.core.informationsystem.publisher.RegistryPublisher
interface, the library allows gCube services to publish GCUBEResources and instances' states as of the gCube Resource Model defined in Common-gcore-resources; - by implementing the
org.gcube.informationsystem.publisher.ScopedPublisher
interface, the library allows gCube services to publish GCUBEResources and instances' states as of the gCube Resource Model defined in Common-gcore-resources in multi scope way;
Maven coordinates
The coordinates of the maven artifact are:
<dependency> <groupId>org.gcube.resources</groupId> <artifactId>registry-publisher</artifactId> <version>...</version> </dependency>
Check on Nexus for the latest version.
Publishing a resource
In order to publish a Resource the Registry-Publisher contacts the IS-Registry service of the current scope by invoking its appropriate operations.
Interfaces
The only difference between RegistryPublisher interface and ScopedPublisher interface is:
- RegistryPublisher interface publish resources on the current scope specified by ScopeProvider;
- ScopedPublisher interface publish resources on a List of scopes, calling for every scope the RegistryPublisher interface
RegistryPublisher interface
The following operation can be used to manage profiles on the IS:
- register() – which takes as input parameter a resource (gCUBEResource), and returns the resource updated and filled of;
- update() – which takes as input parameter a message containing a resource and updates a resource previously registered in the IS.
- remove() – which takes as input parameter a resource and removes the corresponding resource previously registered in the IS;
ScopedPublisher interface
The following operation can be used to manage profiles on the IS:
- register() – which takes as input parameter a resource (gCUBEResource), a list of String that identify operational scope (GCUBEScope) and returns the resource updated and filled of ;
- update() – which takes as input parameter a resource, a list of String that identify operational scope (GCUBEScope) and updates a resource previously registered in the IS.
- remove() – which takes as input parameter a resource, a list of String that identify operational scope (GCUBEScope) and removes the corresponding resource previously registered in the IS;
Sample usages
Here it is an example of GenericResource registration by RegistryPublisher interface:
import org.gcube.common.resources.gcore.GenericResource; import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resource.Type; import org.gcube.common.resources.gcore.Resources; import org.gcube.common.scope.api.ScopeProvider; public void create(){ ScopeProvider.instance.set("/gcube/devsec"); GenericResource generic = Resources.unmarshal(GenericResource.class, PublisherTest.class.getClassLoader().getResourceAsStream("generic2.xml")); RegistryPublisher rp=RegistryPublisherFactory.create(); Resource r=rp.create(generic); }
Here it is an example of GenericResource registration by ScopedPublisher interface:
import org.gcube.common.resources.gcore.GenericResource; import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resource.Type; import org.gcube.common.resources.gcore.Resources; import org.gcube.common.scope.api.ScopeProvider; public void create(){ ScopeProvider.instance.set("/gcube/devsec"); GenericResource generic = Resources.unmarshal(GenericResource.class, PublisherTest.class.getClassLoader().getResourceAsStream("generic2.xml")); List<String> scopes=new ArrayList<String>(); scopes.add("/gcube/devsec"); scopes.add("/gcube"); ScopedPublisher sp=RegistryPublisherFactory.scopedPublisher(); Resource r=sp.create(generic, scopes);
Here it is an example of GenericResource update by RegistryPublisher interface:
import org.gcube.common.resources.gcore.GenericResource; import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resource.Type; import org.gcube.common.resources.gcore.Resources; import org.gcube.common.scope.api.ScopeProvider; public void update(){ ScopeProvider.instance.set("/gcube/devsec"); GenericResource generic = Resources.unmarshal(GenericResource.class, PublisherTest.class.getClassLoader().getResourceAsStream("generic2.xml")); RegistryPublisher rp=RegistryPublisherFactory.create(); Resource r=rp.update(generic); }
Here it is an example of GenericResource remove by RegistryPublisher interface:
import org.gcube.common.resources.gcore.GenericResource; import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resource.Type; import org.gcube.common.resources.gcore.Resources; import org.gcube.common.scope.api.ScopeProvider; public void create(){ ScopeProvider.instance.set("/gcube/devsec"); GenericResource generic = Resources.unmarshal(GenericResource.class, PublisherTest.class.getClassLoader().getResourceAsStream("generic2.xml")); RegistryPublisher rp=RegistryPublisherFactory.create(); Resource r=rp.remove(generic); }