From: <bd...@us...> - 2007-04-05 10:24:29
|
Revision: 592 http://svn.sourceforge.net/unicore/?rev=592&view=rev Author: bdemuth Date: 2007-04-05 03:24:25 -0700 (Thu, 05 Apr 2007) Log Message: ----------- Registry based service discovery via InterfaceName element in Epr Metadata Modified Paths: -------------- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RegistryClient.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemFactoryImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/AddressingUtil.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/Constants.java unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/client/functional/TestServiceDiscovery.java Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RegistryClient.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RegistryClient.java 2007-04-05 09:15:23 UTC (rev 591) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RegistryClient.java 2007-04-05 10:24:25 UTC (rev 592) @@ -46,10 +46,12 @@ import org.oasisOpen.docs.wsrf.sg2.ContentType; import org.oasisOpen.docs.wsrf.sg2.ServiceGroupEntryRPDocument; import org.w3.x2005.x08.addressing.EndpointReferenceType; +import org.w3.x2005.x08.addressing.MetadataType; import de.fzj.unicore.uas.BPSupport; import de.fzj.unicore.uas.Registry; import de.fzj.unicore.uas.security.IUASSecurityProperties; +import de.fzj.unicore.uas.util.Constants; import de.fzj.unicore.wsrflite.utils.Utilities; /** @@ -149,12 +151,14 @@ * @return Array of EPRs */ public List<EndpointReferenceType> listServices(QName porttype) throws Exception{ + QName child=new QName(ServiceGroupEntryRPDocument.type.getDocumentElementName().getNamespaceURI() ,"MemberServiceEPR"); String xpath="declare namespace sg='"+ServiceGroupEntryRPDocument.type.getDocumentElementName().getNamespaceURI()+"' ; \n" - +"declare namespace bp='"+BPSupport.RPWsResourceInterfaces.getNamespaceURI()+"';\n" + +"declare namespace add='"+Constants.EPR_METADATA.getNamespaceURI()+"';\n" + +"declare namespace meta='"+Constants.INTERFACE_NAME.getNamespaceURI()+"';\n" +".//sg:ServiceGroupRP/sg:Entry" - +"/sg:Content/sg:RPDoc/bp:WSResourceInterfaces[matches(.,'"+porttype.getLocalPart()+"[ .*]?$')]" + +"/sg:MemberServiceEPR/add:"+Constants.EPR_METADATA.getLocalPart()+"/meta:"+Constants.INTERFACE_NAME.getLocalPart()+"[matches(.,'"+porttype.getLocalPart()+"[ .*]?$')]" +"/ancestor::sg:Entry/sg:MemberServiceEPR"; QueryResourcePropertiesResponse res=queryResourceProperties(xpath).getQueryResourcePropertiesResponse(); XmlObject[] content=Utilities.extractAny(res,child); Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java 2007-04-05 09:15:23 UTC (rev 591) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java 2007-04-05 10:24:25 UTC (rev 592) @@ -50,6 +50,7 @@ import org.w3.x2005.x08.addressing.EndpointReferenceType; import de.fzj.unicore.uas.BPSupport; +import de.fzj.unicore.uas.TargetSystem; import de.fzj.unicore.uas.UAS; import de.fzj.unicore.uas.client.RegistryClient; import de.fzj.unicore.uas.impl.bp.BPSupportImpl; @@ -57,6 +58,7 @@ import de.fzj.unicore.uas.security.SecurityManager; import de.fzj.unicore.uas.security.UGSSecurityInHandler; import de.fzj.unicore.uas.security.Unicore5Tokens; +import de.fzj.unicore.uas.util.AddressingUtil; import de.fzj.unicore.wsrflite.WSRFConstants; import de.fzj.unicore.wsrflite.utils.Utilities; import de.fzj.unicore.wsrflite.xmlbeans.impl.WSResourceImpl; @@ -253,6 +255,7 @@ protected void publish(){ try{ EndpointReferenceType epr=Utilities.makeEPR(getServiceName(),getUniqueID()); + AddressingUtil.addPortType(epr,getPortType()); ContentType content=null; try{ List<XmlObject>publish=new ArrayList<XmlObject>(); @@ -269,6 +272,13 @@ logger.log(Level.SEVERE, "Could not publish to registry",e); } } + + public QName getPortType() + { + return null; + } + + /** * returns the list of RPs to be published in the registry * @return Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemFactoryImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemFactoryImpl.java 2007-04-05 09:15:23 UTC (rev 591) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemFactoryImpl.java 2007-04-05 10:24:25 UTC (rev 592) @@ -187,4 +187,8 @@ } + @Override + public QName getPortType() { + return TSF_PORT; + } } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java 2007-04-05 09:15:23 UTC (rev 591) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java 2007-04-05 10:24:25 UTC (rev 592) @@ -351,6 +351,11 @@ setDirty(); return super.getResourcePropertyObject(arg0); } + + @Override + public QName getPortType() { + return TSS_PORT; + } @Override protected Set<QName> publishedRPs() { Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/AddressingUtil.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/AddressingUtil.java 2007-04-05 09:15:23 UTC (rev 591) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/AddressingUtil.java 2007-04-05 10:24:25 UTC (rev 592) @@ -33,8 +33,12 @@ package de.fzj.unicore.uas.util; +import javax.xml.namespace.QName; + import org.apache.xmlbeans.XmlCursor; +import org.w3.x2005.x08.addressing.AttributedQNameType; import org.w3.x2005.x08.addressing.EndpointReferenceType; +import org.w3.x2005.x08.addressing.MetadataType; import org.w3.x2005.x08.addressing.ReferenceParametersType; public class AddressingUtil { @@ -57,10 +61,27 @@ addUGSRefparamToEpr(epr,UIDFromEPR(epr)); } + /* + * add interface name of a service to the metadata of the epr + */ + public static void addPortType(EndpointReferenceType epr,QName portType) + { + MetadataType meta=null; + meta=epr.getMetadata(); + if(meta==null) meta=epr.addNewMetadata(); + XmlCursor n=meta.newCursor(); + n.toFirstContentToken(); + n.beginElement(Constants.INTERFACE_NAME); + n.insertNamespace("x", portType.getNamespaceURI()); + n.insertChars("x:"+portType.getLocalPart()); + } + + public static String UIDFromEPR(EndpointReferenceType epr){ String[] tokens=epr.getAddress().getStringValue().split("="); String resid = null; if(tokens.length > 1) resid = tokens[1]; return resid; } + } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/Constants.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/Constants.java 2007-04-05 09:15:23 UTC (rev 591) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/util/Constants.java 2007-04-05 10:24:25 UTC (rev 592) @@ -47,5 +47,12 @@ "Security"), }; + public final static QName EPR_METADATA= + new QName("http://www.w3.org/2005/08/addressing", + "Metadata"); + public final static QName INTERFACE_NAME= + new QName("http://www.w3.org/2005/08/addressing/metadata", + "InterfaceName"); + } Modified: unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/client/functional/TestServiceDiscovery.java =================================================================== --- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/client/functional/TestServiceDiscovery.java 2007-04-05 09:15:23 UTC (rev 591) +++ unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/client/functional/TestServiceDiscovery.java 2007-04-05 10:24:25 UTC (rev 592) @@ -45,7 +45,7 @@ } } - //same thing done in the registry client + //test service discovery via registry client public void test2()throws Exception{ try{ EndpointReferenceType epr=EndpointReferenceType.Factory.newInstance(); @@ -60,4 +60,6 @@ } } + + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |