Personal tools
You are here: Home GRIA Documentation Documentation 5.2 Tutorials Java Interface Tutorial Registry Service Tutorial 3 - Discovering Resources in a Registry

Registry Service Tutorial 3 - Discovering Resources in a Registry

This tutorial describes how to discover resources in a registry
Tutorials on how to use the GRIA Client Interface API
Page 15 of 15.

We must declare the proxy to our Registry Service and find our registry resource.

private static String REG_ID
	= "40894e36-16240474-0116-241035c3-0001";
private static String REGISTRY_SERVICE_ENDPOINT 
	= "https://hostname:port/gria-client-mgt/services/CltMgtRegistryService";
		
StateRepository repository = new MemoryStateRepository();
	RemoteCltMgtRegistryService registryService = (RemoteCltMgtRegistryService)  
		repository.getOrCreateObject(RemoteCltMgtRegistryService.class,
			ConversationID.getEPR(REGISTRY_SERVICE_ENDPOINT));

CltMgtRegistryResourceConversation reg = null;
try {
	EndpointReferenceType[] eprs = registryService.getResources();
	for(EndpointReferenceType epr : eprs){
		if(ConversationID.getConversationFromEPR(epr).equals(REG_ID))
			reg = repository.getOrCreateObject(CltMgtRegistryResourceConversation.class,epr);
	}
} catch (RemoteException e) {
	throw new RuntimeException(e);
}
		
if(reg==null)
	throw new RuntimeException("Could not get Resource '"+REG_ID+"'");
else
	System.out.println("Found Registry '"+reg+"'");

Now we call getRegisteredResources on the Registry with the parameter 'Reference' and it returns a list of EPR's registered.

try {
	for(EndpointReferenceType epr : reg.getRegisteredResources("Reference"))
		System.out.println("Resource :"+ConversationID.getURLReferenceFromEPR(epr));
} catch (RemoteException e) {
	throw new RuntimeException(e);
}

Full Java Code

package workflow;

import java.rmi.RemoteException;

import javax.swing.JOptionPane;

import org.apache.axis.message.addressing.EndpointReferenceType;

import com.sun.corba.se.spi.legacy.connection.GetEndPointInfoAgainException;

import uk.ac.soton.ecs.iam.grid.client.staterepos.MemoryStateRepository;
import uk.ac.soton.ecs.iam.grid.comms.client.Conversation;
import uk.ac.soton.ecs.iam.grid.comms.client.DataConversation;
import uk.ac.soton.ecs.iam.grid.comms.client.RemoteDataService;
import uk.ac.soton.ecs.iam.grid.comms.client.RemoteService;
import uk.ac.soton.ecs.iam.grid.comms.client.SLAConversation;
import uk.ac.soton.ecs.iam.grid.comms.client.StateRepository;
import uk.ac.soton.itinnovation.grid.client.registry.CltMgtRegistryResourceConversation;
import uk.ac.soton.itinnovation.grid.client.registry.RemoteCltMgtRegistryService;
import uk.ac.soton.itinnovation.grid.types.ConversationID;
import uk.ac.soton.itinnovation.grid.types.MatchRule;
import uk.ac.soton.itinnovation.grid.types.PolicyRule;
import uk.ac.soton.itinnovation.grid.types.SubjectDescription;

public class RegistryTutorial3 {

	private static String REG_ID
		= "40894e36-16240474-0116-241035c3-0001";
	private static String REGISTRY_SERVICE_ENDPOINT 
			= "https://hostname:port/gria-client-mgt/services/CltMgtRegistryService";

	public static void main(String[] args) {
		
		StateRepository repository = new MemoryStateRepository();
		RemoteCltMgtRegistryService registryService = (RemoteCltMgtRegistryService)  
			repository.getOrCreateObject(RemoteCltMgtRegistryService.class,
					ConversationID.getEPR(REGISTRY_SERVICE_ENDPOINT));

		CltMgtRegistryResourceConversation reg = null;
		try {
			EndpointReferenceType[] eprs = registryService.getResources();
			
			for(EndpointReferenceType epr : eprs){
				if(ConversationID.getConversationFromEPR(epr).equals(REG_ID))
					reg = repository.getOrCreateObject(CltMgtRegistryResourceConversation.class,epr);
			}
			
		} catch (RemoteException e) {
			throw new RuntimeException(e);
		}
		
		if(reg==null)
			throw new RuntimeException("Could not get Resource '"+REG_ID+"'");
		else
			System.out.println("Found Registry '"+reg+"'");
		
		try {
			for(EndpointReferenceType epr : reg.getRegisteredResources("Reference"))
				System.out.println("Resource :"+ConversationID.getURLReferenceFromEPR(epr));
		} catch (RemoteException e) {
			throw new RuntimeException(e);
		}
	}

}