Author: ips Date: Thu Jan 6 11:55:43 2005 New Revision: 124426 URL: http://svn.apache.org/viewcvs?view=rev&rev=124426 Log: now exposes endpoint URL and gets name from the last part of the endpoint URL isntead of the port element's name
Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCapability.java incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDefinition.java incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/ResourceDefinitionImpl.java Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCapability.java Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCapability.java?view=diff&rev=124426&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCapability.java&r1=124425&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCapability.java&r2=124426 ============================================================================== --- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCapability.java (original) +++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCapability.java Thu Jan 6 11:55:43 2005 @@ -21,7 +21,7 @@ import java.util.Map; /** - * A WSRF Web service definition. + * A WSRF resource capability (i.e. set of operations and properties). * * @author Ian Springer */ Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDefinition.java Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDefinition.java?view=diff&rev=124426&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDefinition.java&r1=124425&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDefinition.java&r2=124426 ============================================================================== --- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDefinition.java (original) +++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDefinition.java Thu Jan 6 11:55:43 2005 @@ -18,15 +18,17 @@ import javax.wsdl.Service; /** - * TODO + * A WSRF resource definition. * * @author Ian Springer (ian DOT springer AT hp DOT com) */ public interface ResourceDefinition extends ResourceCapability { + Service getService(); + String getName(); - Service getService(); + String getEndpointURL(); } Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/ResourceDefinitionImpl.java Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/ResourceDefinitionImpl.java?view=diff&rev=124426&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/ResourceDefinitionImpl.java&r1=124425&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/ResourceDefinitionImpl.java&r2=124426 ============================================================================== --- incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/ResourceDefinitionImpl.java (original) +++ incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/ResourceDefinitionImpl.java Thu Jan 6 11:55:43 2005 @@ -15,14 +15,17 @@ *=============================================================================*/ package org.apache.ws.resource.impl; -import org.apache.ws.resource.ResourceDefinition; import org.apache.ws.resource.InvalidWsrfWsdlException; +import org.apache.ws.resource.ResourceDefinition; import org.apache.ws.util.WsdlUtils; -import javax.wsdl.Service; import javax.wsdl.Definition; -import javax.wsdl.PortType; import javax.wsdl.Port; +import javax.wsdl.PortType; +import javax.wsdl.Service; +import javax.wsdl.extensions.ExtensibilityElement; +import javax.wsdl.extensions.soap.SOAPAddress; +import java.util.List; import java.util.Map; /** @@ -35,14 +38,15 @@ private Service m_service; private String m_name; + private String m_endpointURL; public ResourceDefinitionImpl( Definition def, Service service ) throws InvalidWsrfWsdlException { super( def, getResourcePortType( service ) ); m_service = service; - Port port = (Port) m_service.getPorts().values().iterator().next(); - m_name = port.getName(); + m_endpointURL = extractEndpointURL( m_service ); + m_name = extractName( m_endpointURL ); } private static PortType getResourcePortType( Service service ) throws InvalidWsrfWsdlException @@ -50,11 +54,15 @@ Map portTypes = WsdlUtils.getPortTypes( service ); if ( portTypes.isEmpty() ) { - throw new InvalidWsrfWsdlException( "WSDL service " + service.getQName() + " is not a valid service, as it does not contain any ports." ); + throw new InvalidWsrfWsdlException( + "WSDL service " + service.getQName() + + " is not a valid service, as it does not contain any ports." ); } if ( portTypes.size() > 1 ) { - throw new InvalidWsrfWsdlException( "WSDL service " + service.getQName() + " is not a valid WSRF service, as it contains more than one port." ); + throw new InvalidWsrfWsdlException( + "WSDL service " + service.getQName() + + " is not a valid WSRF service, as it contains more than one port." ); } return (PortType) portTypes.values().iterator().next(); } @@ -67,6 +75,45 @@ public String getName() { return m_name; + } + + public String getEndpointURL() + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + private String extractName( String endpointURL ) + { + if ( endpointURL.endsWith( "/" ) ) + { + endpointURL = endpointURL.substring( 0, endpointURL.length() - 1 ); + } + String name = endpointURL.substring( endpointURL.lastIndexOf( "/" ) + 1 ); + return name; + } + + private String extractEndpointURL( Service service ) throws InvalidWsrfWsdlException + { + String endpointURL = null; + Port port = (Port) service.getPorts().values().iterator().next(); + List extElems = port.getExtensibilityElements(); + for ( int i = 0; i < extElems.size(); i++ ) + { + ExtensibilityElement extElem = (ExtensibilityElement) extElems.get( i ); + if ( extElem instanceof SOAPAddress ) + { + SOAPAddress soapAddr = (SOAPAddress) extElem; + endpointURL = soapAddr.getLocationURI(); + break; + } + } + if ( endpointURL == null ) + { + throw new InvalidWsrfWsdlException( + "Failed to obtain service endpoint URL from " + m_service.getQName() + + " service's wsdl:port/soap:address/@location attribute" ); + } + return endpointURL; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
