summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java
diff options
context:
space:
mode:
authorbdaniel <bdaniel@13f79535-47bb-0310-9956-ffa450edef68>2010-07-22 03:49:20 +0000
committerbdaniel <bdaniel@13f79535-47bb-0310-9956-ffa450edef68>2010-07-22 03:49:20 +0000
commitcb978aefbff17d98519c196e872d39546863e89c (patch)
treeffff0349fa0fa3c59f8ed08e71a90ec87d89cfe8 /sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java
parent296a04c69674f45477f3f5b68f4016d5504e5866 (diff)
Add SOAP version intent validation to the ws binding
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@966495 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java')
-rw-r--r--sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2BaseBindingProvider.java1
-rw-r--r--sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java27
2 files changed, 26 insertions, 2 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2BaseBindingProvider.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2BaseBindingProvider.java
index 203d05c465..dbefbf4a2d 100644
--- a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2BaseBindingProvider.java
+++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2BaseBindingProvider.java
@@ -33,6 +33,7 @@ public class Axis2BaseBindingProvider {
// derived policy configuration
protected boolean isSOAP12Required = false;
+ protected boolean isSOAP11Required = false;
protected boolean isRampartRequired = false;
protected boolean isMTOMRequired = false;
protected boolean isJMSRequired = false;
diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java
index b8ad851bad..d93f4edd99 100644
--- a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java
+++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java
@@ -29,8 +29,10 @@ import javax.wsdl.BindingOperation;
import javax.wsdl.Definition;
import javax.wsdl.Port;
import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap.SOAPBinding;
import javax.wsdl.extensions.soap.SOAPOperation;
import javax.wsdl.extensions.soap12.SOAP12Address;
+import javax.wsdl.extensions.soap12.SOAP12Binding;
import javax.xml.namespace.QName;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
@@ -40,9 +42,7 @@ import javax.xml.transform.dom.DOMSource;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.soap.SOAPBody;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReferenceHelper;
@@ -108,6 +108,7 @@ public class Axis2ReferenceBindingProvider extends Axis2BaseBindingProvider impl
contract.getInterface().resetDataBinding(OMElement.class.getName());
}
+ isSOAP11Required = PolicyHelper.isIntentRequired(wsBinding, Constants.SOAP11_INTENT);
isSOAP12Required = PolicyHelper.isIntentRequired(wsBinding, Constants.SOAP12_INTENT);
isMTOMRequired = PolicyHelper.isIntentRequired(wsBinding, Axis2BindingProviderFactory.MTOM_INTENT);
@@ -141,6 +142,28 @@ public class Axis2ReferenceBindingProvider extends Axis2BaseBindingProvider impl
if (wsBinding.isDocLiteralUnwrapped()){
//throw new ServiceRuntimeException("doc/literal/unwrapped WSDL style not supported for endpoint reference " + endpointReference);
}
+
+ // Validate that the WSDL is not using SOAP v1.2 if requires="SOAP.v1_1" has been specified
+ if ( isSOAP11Required ) {
+ Definition def = wsBinding.getGeneratedWSDLDocument();
+ Binding binding = def.getBinding(wsBinding.getBindingName());
+ for ( Object ext : binding.getExtensibilityElements() ) {
+ if ( ext instanceof SOAP12Binding )
+ throw new ServiceRuntimeException("WSDL document is using SOAP v1.2 but SOAP v1.1 " +
+ "is required by the specified policy intents");
+ }
+ }
+
+ // Validate that the WSDL is not using SOAP v1.1 if requires="SOAP.v1_2" has been specified
+ if ( isSOAP12Required ) {
+ Definition def = wsBinding.getGeneratedWSDLDocument();
+ Binding binding = def.getBinding(wsBinding.getBindingName());
+ for ( Object ext : binding.getExtensibilityElements() ) {
+ if ( ext instanceof SOAPBinding )
+ throw new ServiceRuntimeException("WSDL document is using SOAP v1.1 but SOAP v1.2 " +
+ "is required by the specified policy intents");
+ }
+ }
}
public void start() {