Difference between revisions of "Registry-Publisher"

From Gcube Wiki
Jump to: navigation, search
(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.

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);
}