diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2011-10-19 08:37:03 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2011-10-19 08:37:03 +0000 |
commit | cd0530f3d5222a020ac1ffae2956018402d36adf (patch) | |
tree | 27257b651ea8181166cf492f45380e8794fd720f /sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache | |
parent | 3312769c458a55a8420566eff6936957a7c1e645 (diff) |
Add code to read <requires> elements from WSDL and enable the test that ensure that mayProvides intents are matched between references and services. This has implications for existing tests in that we now have to ensure that any mayProvides intent that is considered to be the default (a concept that the spec doesn't consider) is present in the intent list for the policy subject in question.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1186027 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache')
-rw-r--r-- | sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java index 2b24df92d2..08f8ce7cf4 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java +++ b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java @@ -27,6 +27,12 @@ import org.apache.tuscany.sca.assembly.builder.BindingBuilder; import org.apache.tuscany.sca.assembly.builder.BuilderContext; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.core.FactoryExtensionPoint; +import org.apache.tuscany.sca.definitions.Definitions; +import org.apache.tuscany.sca.policy.BindingType; +import org.apache.tuscany.sca.policy.Intent; +import org.apache.tuscany.sca.policy.PolicyFactory; +import org.apache.tuscany.sca.policy.PolicySubject; /** * A factory for the calculated WSDL document needed by Web Service bindings. @@ -52,7 +58,46 @@ public class WebServiceBindingBuilder implements BindingBuilder<WebServiceBindin binding.setBindingInterfaceContract(null); binding.setGeneratedWSDLDocument(null); } + BindingWSDLGenerator.generateWSDL(component, contract, binding, extensionPoints, context.getMonitor()); + + /* + * Set the default mayProvides intent provided by the binding. For example, + * It mayProvides SOAP.v1_1 and SOAP.v1_2. If you don't specify any intents + * it implements SOAP.v1_1 by default and hence the default intent + * is SOAP.v1_1. Binding.ws doesn't allwaysProvide SOAP.v1_1 though as if the + * user specifies the SOAP.v1_2 the binding does SOAP.v1_2 instead of SOAP.v1_1 + */ + boolean addDefaultSOAPIntent = true; + + for(Intent intent : ((PolicySubject)binding).getRequiredIntents()){ + if (intent.getName().getLocalPart().equals("SOAP.v1_1")){ + addDefaultSOAPIntent = false; + break; + } + if (intent.getName().getLocalPart().equals("SOAP.v1_2")){ + addDefaultSOAPIntent = false; + break; + } + } + + if (addDefaultSOAPIntent){ + Definitions systemDefinitions = context.getDefinitions(); + if (systemDefinitions != null){ + BindingType bindingType = systemDefinitions.getBindingType(binding.getType()); + Intent defaultIntent = null; + for (Intent intent : bindingType.getMayProvidedIntents()){ + if (intent.getName().getLocalPart().equals("SOAP.v1_1")){ + defaultIntent = intent; + } + } + + if (defaultIntent != null){ + ((PolicySubject)binding).getRequiredIntents().add(0, defaultIntent); + } + } + } + } public QName getBindingType() { |