Author: palin
Date: 2007-05-25 11:25:08 -0400 (Fri, 25 May 2007)
New Revision: 3257
Added:
trunk/jbossws-core/src/test/resources/tools/jbws1645/BindingPolicy2.txt
trunk/jbossws-core/src/test/resources/tools/jbws1645/PortPolicy2.txt
trunk/jbossws-core/src/test/resources/tools/jbws1645/PortTypePolicy2.txt
trunk/jbossws-core/src/test/resources/tools/jbws1645/StandardJavaTypesServiceJBWS1645-Multiple.wsdl
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/policy/metadata/PolicyMetaDataBuilder.java
trunk/jbossws-core/src/main/java/org/jboss/ws/tools/wsdl/WSDLGenerator.java
trunk/jbossws-core/src/test/java/org/jboss/test/ws/tools/jbws1645/JBWS1645TestCase.java
Log:
Added test case for multiple policy refs in PolicyURIs attribute
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/policy/metadata/PolicyMetaDataBuilder.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/policy/metadata/PolicyMetaDataBuilder.java 2007-05-25
14:21:30 UTC (rev 3256)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/policy/metadata/PolicyMetaDataBuilder.java 2007-05-25
15:25:08 UTC (rev 3257)
@@ -23,6 +23,7 @@
import java.io.InputStream;
import java.util.List;
+import java.util.StringTokenizer;
import org.apache.ws.policy.Policy;
import org.apache.ws.policy.PolicyReference;
@@ -44,6 +45,7 @@
import org.jboss.ws.metadata.wsdl.WSDLEndpoint;
import org.jboss.ws.metadata.wsdl.WSDLExtensibilityElement;
import org.jboss.ws.metadata.wsdl.WSDLInterface;
+import org.jboss.ws.metadata.wsdl.WSDLProperty;
import org.jboss.ws.metadata.wsdl.WSDLService;
/**
@@ -177,8 +179,8 @@
WSDLInterface wsdlInterface =
wsdlDefinitions.getInterface(epMetaData.getPortTypeName());
if (wsdlInterface != null)
{
- List<WSDLExtensibilityElement> portTypePolicyRefList =
wsdlInterface.getExtensibilityElements(Constants.WSDL_PROPERTY_POLICYURIS);
- processPolicies(portTypePolicyRefList, PolicyScopeLevel.WSDL_PORT_TYPE,
localPolicyRegistry, epMetaData);
+ WSDLProperty portTypePolicyProp =
wsdlInterface.getProperty(Constants.WSDL_PROPERTY_POLICYURIS);
+ processPolicies(portTypePolicyProp, PolicyScopeLevel.WSDL_PORT_TYPE,
localPolicyRegistry, epMetaData);
}
else
{
@@ -186,6 +188,19 @@
}
}
+ private void processPolicies(WSDLProperty policyProp, PolicyScopeLevel scope,
PolicyRegistry localPolicies, ExtensibleMetaData extMetaData)
+ {
+ if (policyProp!=null && policyProp.getValue()!=null)
+ {
+ StringTokenizer st = new StringTokenizer(policyProp.getValue(), " ",
false);
+ while (st.hasMoreTokens())
+ {
+ PolicyReference policyRef = new PolicyReference(st.nextToken());
+ deployPolicy(resolvePolicyReference(policyRef, localPolicies), scope,
extMetaData);
+ }
+ }
+ }
+
private void processPolicies(List<WSDLExtensibilityElement> policyReferences,
PolicyScopeLevel scope, PolicyRegistry localPolicies, ExtensibleMetaData extMetaData)
{
if (policyReferences != null && policyReferences.size() != 0)
@@ -194,22 +209,26 @@
for (WSDLExtensibilityElement element : policyReferences)
{
PolicyReference policyRef =
reader.readPolicyReference(element.getElement());
- Policy normPolicy;
- try
- {
- normPolicy = (Policy)policyRef.normalize(localPolicies);
- }
- catch (RuntimeException e)
- {
- //TODO!!! not a local policy: get the policy definition and create the
policy
- normPolicy = null;
- }
- deployPolicy(normPolicy, scope, extMetaData);
-
+ deployPolicy(resolvePolicyReference(policyRef, localPolicies), scope,
extMetaData);
}
}
}
+ private Policy resolvePolicyReference(PolicyReference policyRef, PolicyRegistry
localPolicies)
+ {
+ Policy normPolicy;
+ try
+ {
+ normPolicy = (Policy)policyRef.normalize(localPolicies);
+ }
+ catch (RuntimeException e)
+ {
+ //TODO!!! not a local policy: get the policy definition and create the policy
+ normPolicy = null;
+ }
+ return normPolicy;
+ }
+
private void deployPolicy(Policy policy, PolicyScopeLevel scope, ExtensibleMetaData
extMetaData)
{
PolicyDeployer deployer;
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/tools/wsdl/WSDLGenerator.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/tools/wsdl/WSDLGenerator.java 2007-05-25
14:21:30 UTC (rev 3256)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/tools/wsdl/WSDLGenerator.java 2007-05-25
15:25:08 UTC (rev 3257)
@@ -177,7 +177,17 @@
protected void addPolicyURIAttribute(Policy policy, Extendable extendable)
{
//TODO!! we need to understand if the policy is local or not...
- extendable.addProperty(new WSDLProperty(Constants.WSDL_PROPERTY_POLICYURIS,
policy.getPolicyURI()));
+ WSDLProperty prop = extendable.getProperty(Constants.WSDL_PROPERTY_POLICYURIS);
+ if (prop == null)
+ {
+ extendable.addProperty(new WSDLProperty(Constants.WSDL_PROPERTY_POLICYURIS,
policy.getPolicyURI()));
+ }
+ else
+ {
+ //PolicyURIs ships a comma separated list of URIs...
+ prop.setValue(prop.getValue() + "," + policy.getPolicyURI());
+ }
+
}
protected void processOperation(WSDLInterface wsdlInterface, WSDLBinding wsdlBinding,
OperationMetaData operation)
Modified:
trunk/jbossws-core/src/test/java/org/jboss/test/ws/tools/jbws1645/JBWS1645TestCase.java
===================================================================
---
trunk/jbossws-core/src/test/java/org/jboss/test/ws/tools/jbws1645/JBWS1645TestCase.java 2007-05-25
14:21:30 UTC (rev 3256)
+++
trunk/jbossws-core/src/test/java/org/jboss/test/ws/tools/jbws1645/JBWS1645TestCase.java 2007-05-25
15:25:08 UTC (rev 3257)
@@ -123,7 +123,61 @@
validateGeneratedWSDL(new File(wsdlPath), new File(fixturefile));
}
+
+
+ public void testWSDLGeneratorWithMultiplePolicies() throws Exception
+ {
+ Class seiClass = StandardJavaTypes.class;
+ String fixturefile =
"resources/tools/jbws1645/StandardJavaTypesServiceJBWS1645-Multiple.wsdl";
+
+ File wsdlDir = new File("./tools/jbws1645");
+ wsdlDir.mkdirs();
+
+ String sname = WSDLUtils.getJustClassName(seiClass) +
"Service-Multiple";
+ String wsdlPath = wsdlDir + "/" + sname +
"JBWS1645-Multiple.wsdl";
+ String targetNamespace = "http://org.jboss.ws";
+ Style style = Style.DOCUMENT;
+ JavaToWSDL jwsdl = new JavaToWSDL(Constants.NS_WSDL11);
+ jwsdl.setServiceName(sname);
+ jwsdl.setTargetNamespace(targetNamespace);
+ jwsdl.addFeature(WSToolsConstants.WSTOOLS_FEATURE_RESTRICT_TO_TARGET_NS, true);
+ jwsdl.setStyle(style);
+
+ //manually generate the umd using tools
+ UnifiedMetaData umd = new ToolsUnifiedMetaDataBuilder(seiClass, targetNamespace,
+ null, sname, style, null, null).getUnifiedMetaData();
+ jwsdl.setUmd(umd);
+
+ //manually add policies to the umd
+ ServiceMetaData serviceMetaData = umd.getServices().get(0);
+ EndpointMetaData epMetaData = serviceMetaData.getEndpoints().get(0);
+ addPolicy(new File("resources/tools/jbws1645/PortPolicy.txt"),
PolicyScopeLevel.WSDL_PORT, epMetaData);
+ addPolicy(new File("resources/tools/jbws1645/PortPolicy2.txt"),
PolicyScopeLevel.WSDL_PORT, epMetaData);
+ addPolicy(new File("resources/tools/jbws1645/PortTypePolicy2.txt"),
PolicyScopeLevel.WSDL_PORT_TYPE, epMetaData);
+ addPolicy(new File("resources/tools/jbws1645/PortTypePolicy.txt"),
PolicyScopeLevel.WSDL_PORT_TYPE, epMetaData);
+ addPolicy(new File("resources/tools/jbws1645/BindingPolicy.txt"),
PolicyScopeLevel.WSDL_BINDING, epMetaData);
+ addPolicy(new File("resources/tools/jbws1645/BindingPolicy2.txt"),
PolicyScopeLevel.WSDL_BINDING, epMetaData);
+
+ //generate the wsdl definitions and write the wsdl file
+ WSDLDefinitions wsdl = jwsdl.generate(seiClass);
+
+ //performe some trivial checks on wsdl definitions
+ assertEquals(2, wsdl.getServices()[0].getEndpoints()[0].getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE).size());
+
assertNotNull(wsdl.getInterfaces()[0].getProperty(Constants.WSDL_PROPERTY_POLICYURIS));
+ assertEquals(2,
wsdl.getBindings()[0].getExtensibilityElements(Constants.WSDL_ELEMENT_POLICYREFERENCE).size());
+ assertEquals(6,
wsdl.getExtensibilityElements(Constants.WSDL_ELEMENT_POLICY).size());
+
+ Writer fw = IOUtils.getCharsetFileWriter(new File(wsdlPath),
Constants.DEFAULT_XML_CHARSET);
+ new WSDLWriter(wsdl).write(fw, Constants.DEFAULT_XML_CHARSET);
+ fw.close();
+
+ //validate the generated WSDL
+ validateGeneratedWSDL(new File(wsdlPath), new File(fixturefile));
+
+ }
+
private void addPolicy(File sourceFile, PolicyScopeLevel scope, ExtensibleMetaData
extMetaData) throws Exception
{
PolicyMetaExtension ext =
(PolicyMetaExtension)extMetaData.getExtension(Constants.URI_WS_POLICY);
Added: trunk/jbossws-core/src/test/resources/tools/jbws1645/BindingPolicy2.txt
===================================================================
--- trunk/jbossws-core/src/test/resources/tools/jbws1645/BindingPolicy2.txt
(rev 0)
+++ trunk/jbossws-core/src/test/resources/tools/jbws1645/BindingPolicy2.txt 2007-05-25
15:25:08 UTC (rev 3257)
@@ -0,0 +1,3 @@
+<wsp:Policy wsu:Id="uselessBindingPolicy2"
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
xmlns:wsp='http://schemas.xmlsoap.org/ws/2004/09/policy'
xmlns:fab='http://www.fabrikam123.example.com/stock'>
+ <fab:useless>nothing on this binding...</fab:useless>
+</wsp:Policy>
Added: trunk/jbossws-core/src/test/resources/tools/jbws1645/PortPolicy2.txt
===================================================================
--- trunk/jbossws-core/src/test/resources/tools/jbws1645/PortPolicy2.txt
(rev 0)
+++ trunk/jbossws-core/src/test/resources/tools/jbws1645/PortPolicy2.txt 2007-05-25
15:25:08 UTC (rev 3257)
@@ -0,0 +1,3 @@
+<wsp:Policy wsu:Id="uselessPortPolicy2"
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
xmlns:wsp='http://schemas.xmlsoap.org/ws/2004/09/policy'
xmlns:fab='http://www.fabrikam123.example.com/stock'>
+ <fab:useless>nothing on this port...</fab:useless>
+</wsp:Policy>
Added: trunk/jbossws-core/src/test/resources/tools/jbws1645/PortTypePolicy2.txt
===================================================================
--- trunk/jbossws-core/src/test/resources/tools/jbws1645/PortTypePolicy2.txt
(rev 0)
+++ trunk/jbossws-core/src/test/resources/tools/jbws1645/PortTypePolicy2.txt 2007-05-25
15:25:08 UTC (rev 3257)
@@ -0,0 +1,3 @@
+<wsp:Policy wsu:Id="uselessPortTypePolicy2"
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
xmlns:wsp='http://schemas.xmlsoap.org/ws/2004/09/policy'
xmlns:fab='http://www.fabrikam123.example.com/stock'>
+ <fab:useless>nothing on this port type...</fab:useless>
+</wsp:Policy>
Added:
trunk/jbossws-core/src/test/resources/tools/jbws1645/StandardJavaTypesServiceJBWS1645-Multiple.wsdl
===================================================================
---
trunk/jbossws-core/src/test/resources/tools/jbws1645/StandardJavaTypesServiceJBWS1645-Multiple.wsdl
(rev 0)
+++
trunk/jbossws-core/src/test/resources/tools/jbws1645/StandardJavaTypesServiceJBWS1645-Multiple.wsdl 2007-05-25
15:25:08 UTC (rev 3257)
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name='StandardJavaTypesService-Multiple'
targetNamespace='http://org.jboss.ws'
+
xmlns='http://schemas.xmlsoap.org/wsdl/'
+
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
+ xmlns:tns='http://org.jboss.ws'
+
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
+
xmlns:wsp='http://schemas.xmlsoap.org/ws/2004/09/policy'>
+ <wsp:Policy wsu:Id='RmPolicy'
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
+ <rmp:RMAssertion
xmlns:rmp='http://schemas.xmlsoap.org/ws/2005/02/rm/policy'>
+ <rmp:InactivityTimeout Milliseconds='600000' />
+ <rmp:BaseRetransmissionInterval Milliseconds='3000' />
+ <rmp:ExponentialBackoff />
+ <rmp:AcknowledgementInterval Milliseconds='200' />
+ </rmp:RMAssertion>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id='uselessPortPolicy'
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
+ <fab:useless
xmlns:fab='http://www.fabrikam123.example.com/stock'>nothing
again</fab:useless>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id='X509EndpointPolicy'
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
+ <sp:AsymmetricBinding
xmlns:sp='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy'>
+ <wsp:Policy>
+ <!-- Details omitted for readability -->
+ <sp:IncludeTimestamp />
+ <sp:OnlySignEntireHeadersAndBody />
+ </wsp:Policy>
+ </sp:AsymmetricBinding>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id='uselessPortPolicy2'
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
+ <fab:useless
xmlns:fab='http://www.fabrikam123.example.com/stock'>nothing on this
port...</fab:useless>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id='uselessPortTypePolicy2'
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
+ <fab:useless
xmlns:fab='http://www.fabrikam123.example.com/stock'>nothing on this port
type...</fab:useless>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id='uselessBindingPolicy2'
xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ws...
+ <fab:useless
xmlns:fab='http://www.fabrikam123.example.com/stock'>nothing on this
binding...</fab:useless>
+ </wsp:Policy>
+ <types>
+ <schema targetNamespace='http://org.jboss.ws'
xmlns='http://www.w3.org/2001/XMLSchema'
xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:tns='http://org.jboss.ws'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
+ <complexType name='echoCalendar'>
+ <sequence>
+ <element name='Calendar_1' nillable='true'
type='dateTime'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoCalendarResponse'>
+ <sequence>
+ <element name='result' nillable='true'
type='dateTime'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoDate'>
+ <sequence>
+ <element name='Date_1' nillable='true'
type='dateTime'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoDateResponse'>
+ <sequence>
+ <element name='result' nillable='true'
type='dateTime'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoDecimal'>
+ <sequence>
+ <element name='BigDecimal_1' nillable='true'
type='decimal'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoDecimalResponse'>
+ <sequence>
+ <element name='result' nillable='true'
type='decimal'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoInteger'>
+ <sequence>
+ <element name='BigInteger_1' nillable='true'
type='integer'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoIntegerResponse'>
+ <sequence>
+ <element name='result' nillable='true'
type='integer'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoQName'>
+ <sequence>
+ <element name='QName_1' nillable='true'
type='QName'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoQNameResponse'>
+ <sequence>
+ <element name='result' nillable='true' type='QName'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoString'>
+ <sequence>
+ <element name='String_1' nillable='true'
type='string'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoStringResponse'>
+ <sequence>
+ <element name='result' nillable='true'
type='string'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoURI'>
+ <sequence>
+ <element name='URI_1' nillable='true' type='anyURI'/>
+ </sequence>
+ </complexType>
+ <complexType name='echoURIResponse'>
+ <sequence>
+ <element name='result' nillable='true'
type='anyURI'/>
+ </sequence>
+ </complexType>
+ <element name='echoCalendar' type='tns:echoCalendar'/>
+ <element name='echoCalendarResponse'
type='tns:echoCalendarResponse'/>
+ <element name='echoDate' type='tns:echoDate'/>
+ <element name='echoDateResponse' type='tns:echoDateResponse'/>
+ <element name='echoDecimal' type='tns:echoDecimal'/>
+ <element name='echoDecimalResponse'
type='tns:echoDecimalResponse'/>
+ <element name='echoInteger' type='tns:echoInteger'/>
+ <element name='echoIntegerResponse'
type='tns:echoIntegerResponse'/>
+ <element name='echoQName' type='tns:echoQName'/>
+ <element name='echoQNameResponse'
type='tns:echoQNameResponse'/>
+ <element name='echoString' type='tns:echoString'/>
+ <element name='echoStringResponse'
type='tns:echoStringResponse'/>
+ <element name='echoURI' type='tns:echoURI'/>
+ <element name='echoURIResponse' type='tns:echoURIResponse'/>
+ </schema>
+ </types>
+ <message name='StandardJavaTypes_echoCalendar'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
+ <part element='tns:echoCalendar' name='echoCalendar'/>
+ </message>
+ <message name='StandardJavaTypes_echoCalendarResponse'>
+ <part element='tns:echoCalendarResponse'
name='echoCalendarResponse'/>
+ </message>
+ <message name='StandardJavaTypes_echoDate'>
+ <part element='tns:echoDate' name='echoDate'/>
+ </message>
+ <message name='StandardJavaTypes_echoDateResponse'>
+ <part element='tns:echoDateResponse' name='echoDateResponse'/>
+ </message>
+ <message name='StandardJavaTypes_echoDecimal'>
+ <part element='tns:echoDecimal' name='echoDecimal'/>
+ </message>
+ <message name='StandardJavaTypes_echoDecimalResponse'>
+ <part element='tns:echoDecimalResponse'
name='echoDecimalResponse'/>
+ </message>
+ <message name='StandardJavaTypes_echoInteger'>
+ <part element='tns:echoInteger' name='echoInteger'/>
+ </message>
+ <message name='StandardJavaTypes_echoIntegerResponse'>
+ <part element='tns:echoIntegerResponse'
name='echoIntegerResponse'/>
+ </message>
+ <message name='StandardJavaTypes_echoQName'>
+ <part element='tns:echoQName' name='echoQName'/>
+ </message>
+ <message name='StandardJavaTypes_echoQNameResponse'>
+ <part element='tns:echoQNameResponse' name='echoQNameResponse'/>
+ </message>
+ <message name='StandardJavaTypes_echoString'>
+ <part element='tns:echoString' name='echoString'/>
+ </message>
+ <message name='StandardJavaTypes_echoStringResponse'>
+ <part element='tns:echoStringResponse'
name='echoStringResponse'/>
+ </message>
+ <message name='StandardJavaTypes_echoURI'>
+ <part element='tns:echoURI' name='echoURI'/>
+ </message>
+ <message name='StandardJavaTypes_echoURIResponse'>
+ <part element='tns:echoURIResponse' name='echoURIResponse'/>
+ </message>
+ <portType name='StandardJavaTypes'
wsp:PolicyURIs='#RmPolicy,#uselessPortTypePolicy2'>
+ <operation name='echoCalendar' parameterOrder='echoCalendar'>
+ <input message='tns:StandardJavaTypes_echoCalendar'/>
+ <output message='tns:StandardJavaTypes_echoCalendarResponse'/>
+ </operation>
+ <operation name='echoDate' parameterOrder='echoDate'>
+ <input message='tns:StandardJavaTypes_echoDate'/>
+ <output message='tns:StandardJavaTypes_echoDateResponse'/>
+ </operation>
+ <operation name='echoDecimal' parameterOrder='echoDecimal'>
+ <input message='tns:StandardJavaTypes_echoDecimal'/>
+ <output message='tns:StandardJavaTypes_echoDecimalResponse'/>
+ </operation>
+ <operation name='echoInteger' parameterOrder='echoInteger'>
+ <input message='tns:StandardJavaTypes_echoInteger'/>
+ <output message='tns:StandardJavaTypes_echoIntegerResponse'/>
+ </operation>
+ <operation name='echoQName' parameterOrder='echoQName'>
+ <input message='tns:StandardJavaTypes_echoQName'/>
+ <output message='tns:StandardJavaTypes_echoQNameResponse'/>
+ </operation>
+ <operation name='echoString' parameterOrder='echoString'>
+ <input message='tns:StandardJavaTypes_echoString'/>
+ <output message='tns:StandardJavaTypes_echoStringResponse'/>
+ </operation>
+ <operation name='echoURI' parameterOrder='echoURI'>
+ <input message='tns:StandardJavaTypes_echoURI'/>
+ <output message='tns:StandardJavaTypes_echoURIResponse'/>
+ </operation>
+ </portType>
+ <binding name='StandardJavaTypesBinding'
type='tns:StandardJavaTypes'>
+ <soap:binding style='document'
transport='http://schemas.xmlsoap.org/soap/http'/>
+ <wsp:PolicyReference URI='#X509EndpointPolicy' />
+ <wsp:PolicyReference URI='#uselessBindingPolicy2' />
+ <operation name='echoCalendar'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='echoDate'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='echoDecimal'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='echoInteger'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='echoQName'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='echoString'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='echoURI'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ </binding>
+ <service name='StandardJavaTypesService-Multiple'>
+ <port binding='tns:StandardJavaTypesBinding'
name='StandardJavaTypesPort'>
+ <soap:address location='REPLACE_WITH_ACTUAL_URL'/>
+ <wsp:PolicyReference URI='#uselessPortPolicy' />
+ <wsp:PolicyReference URI='#uselessPortPolicy2' />
+ </port>
+ </service>
+</definitions>
\ No newline at end of file