Author: gnodet
Date: Thu Mar  8 04:41:26 2007
New Revision: 516027

URL: http://svn.apache.org/viewvc?view=rev&rev=516027
Log:
SM-851: Better soap/wsdl support

Modified:
    incubator/servicemix/trunk/common/pom.xml
    incubator/servicemix/trunk/common/servicemix-soap2/   (props changed)
    
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/impl/Wsdl1SoapBindingImpl.java
    
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/interceptors/SoapFaultOutInterceptor.java
    
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap11BindingFactory.java
    
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap12BindingFactory.java

Modified: incubator/servicemix/trunk/common/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/common/pom.xml?view=diff&rev=516027&r1=516026&r2=516027
==============================================================================
--- incubator/servicemix/trunk/common/pom.xml (original)
+++ incubator/servicemix/trunk/common/pom.xml Thu Mar  8 04:41:26 2007
@@ -37,6 +37,7 @@
         <module>servicemix-common</module>
         <module>servicemix-components</module>
         <module>servicemix-soap</module>
+        <module>servicemix-soap2</module>
         <module>servicemix-beanflow</module>
     </modules>
 

Propchange: incubator/servicemix/trunk/common/servicemix-soap2/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Mar  8 04:41:26 2007
@@ -1,3 +1,4 @@
 .classpath
 .project
 target
+.settings

Modified: 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/impl/Wsdl1SoapBindingImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/impl/Wsdl1SoapBindingImpl.java?view=diff&rev=516027&r1=516026&r2=516027
==============================================================================
--- 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/impl/Wsdl1SoapBindingImpl.java
 (original)
+++ 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/impl/Wsdl1SoapBindingImpl.java
 Thu Mar  8 04:41:26 2007
@@ -19,6 +19,7 @@
 import java.util.List;
 
 import org.apache.servicemix.soap.api.Interceptor;
+import org.apache.servicemix.soap.api.Message;
 import org.apache.servicemix.soap.bindings.soap.SoapVersion;
 import 
org.apache.servicemix.soap.bindings.soap.interceptors.MustUnderstandInterceptor;
 import 
org.apache.servicemix.soap.bindings.soap.interceptors.SoapFaultInInterceptor;
@@ -43,6 +44,7 @@
 
 public class Wsdl1SoapBindingImpl extends AbstractBinding<Wsdl1SoapOperation> 
implements Wsdl1SoapBinding {
 
+    private SoapVersion soapVersion;
     private String locationURI;
     private String transportURI;
     private Style style;
@@ -52,6 +54,8 @@
     }
     
     public Wsdl1SoapBindingImpl(SoapVersion soapVersion) {
+        this.soapVersion = soapVersion;
+        
         List<Interceptor> phase;
         
         // ServerIn phase
@@ -141,5 +145,23 @@
         this.style = style;
     }
 
+    public Message createMessage() {
+        Message msg = super.createMessage();
+        if (msg.get(SoapVersion.class) == null && soapVersion != null) {
+            msg.put(SoapVersion.class, soapVersion);
+        }
+        return msg;
+    }
+    
+    public Message createMessage(Message request) {
+        Message msg = super.createMessage(request);
+        if (msg.get(SoapVersion.class) == null && 
request.get(SoapVersion.class) != null) {
+            msg.put(SoapVersion.class, request.get(SoapVersion.class));
+        }
+        if (msg.get(SoapVersion.class) == null && soapVersion != null) {
+            msg.put(SoapVersion.class, soapVersion);
+        }
+        return msg;
+    }
     
 }

Modified: 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/interceptors/SoapFaultOutInterceptor.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/interceptors/SoapFaultOutInterceptor.java?view=diff&rev=516027&r1=516026&r2=516027
==============================================================================
--- 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/interceptors/SoapFaultOutInterceptor.java
 (original)
+++ 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/bindings/soap/interceptors/SoapFaultOutInterceptor.java
 Thu Mar  8 04:41:26 2007
@@ -48,7 +48,7 @@
             if (exception instanceof SoapFault) {
                 SoapFault fault = (SoapFault) exception;
                 if (soapVersion == null) {
-                    //soapVersion = Soap11.getInstance();
+                    soapVersion = Soap11.getInstance();
                 }
                 if (soapVersion.getVersion() == 1.1) {
                     writeSoap11Fault(writer, fault, soapVersion);

Modified: 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap11BindingFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap11BindingFactory.java?view=diff&rev=516027&r1=516026&r2=516027
==============================================================================
--- 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap11BindingFactory.java
 (original)
+++ 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap11BindingFactory.java
 Thu Mar  8 04:41:26 2007
@@ -140,7 +140,7 @@
             part.setType(wsdlPart.getTypeName());
             part.setElement(wsdlPart.getElementName());
             if ((wsdlSoapBody.getParts() == null && 
wsdlInput.getMessage().getOrderedParts(null).size() == 1) ||
-                wsdlSoapBody.getParts().contains(part.getName())) {
+                    wsdlSoapBody.getParts().contains(part.getName())) {
                 part.setBody(true);
                 if (operation.getStyle() == Style.DOCUMENT) {
                     input.setElementName(wsdlPart.getElementName());
@@ -181,18 +181,14 @@
         }
         output.setMessageName(outputName);
         
-        List<String> bodyParts = WSDLUtils.getParts(wsdlSoapBody);
-        if (bodyParts == null) {
-            bodyParts = new ArrayList<String>();
-        }
-        
         for (Iterator itPart = 
wsdlOutput.getMessage().getOrderedParts(null).iterator(); itPart.hasNext();) {
             Part wsdlPart = (Part) itPart.next();
             Wsdl1SoapPartImpl part = new Wsdl1SoapPartImpl();
             part.setName(wsdlPart.getName());
             part.setType(wsdlPart.getTypeName());
             part.setElement(wsdlPart.getElementName());
-            if (bodyParts.contains(part.getName())) {
+            if ((wsdlSoapBody.getParts() == null && 
wsdlOutput.getMessage().getOrderedParts(null).size() == 1) ||
+                    wsdlSoapBody.getParts().contains(part.getName())) {
                 part.setBody(true);
                 output.setElementName(wsdlPart.getElementName());
             } else {

Modified: 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap12BindingFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap12BindingFactory.java?view=diff&rev=516027&r1=516026&r2=516027
==============================================================================
--- 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap12BindingFactory.java
 (original)
+++ 
incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/wsdl/Wsdl1Soap12BindingFactory.java
 Thu Mar  8 04:41:26 2007
@@ -142,7 +142,8 @@
             part.setName(wsdlPart.getName());
             part.setType(wsdlPart.getTypeName());
             part.setElement(wsdlPart.getElementName());
-            if (wsdlSoapBody.getParts().contains(part.getName())) {
+            if ((wsdlSoapBody.getParts() == null && 
wsdlInput.getMessage().getOrderedParts(null).size() == 1) ||
+                    wsdlSoapBody.getParts().contains(part.getName())) {
                 part.setBody(true);
                 input.setElementName(wsdlPart.getElementName());
             } else {
@@ -181,18 +182,14 @@
         }
         output.setMessageName(outputName);
         
-        List<String> bodyParts = WSDLUtils.getParts(wsdlSoapBody);
-        if (bodyParts == null) {
-            bodyParts = new ArrayList<String>();
-        }
-        
         for (Iterator itPart = 
wsdlOutput.getMessage().getOrderedParts(null).iterator(); itPart.hasNext();) {
             Part wsdlPart = (Part) itPart.next();
             Wsdl1SoapPartImpl part = new Wsdl1SoapPartImpl();
             part.setName(wsdlPart.getName());
             part.setType(wsdlPart.getTypeName());
             part.setElement(wsdlPart.getElementName());
-            if (bodyParts.contains(part.getName())) {
+            if ((wsdlSoapBody.getParts() == null && 
wsdlOutput.getMessage().getOrderedParts(null).size() == 1) ||
+                    wsdlSoapBody.getParts().contains(part.getName())) {
                 part.setBody(true);
                 output.setElementName(wsdlPart.getElementName());
             } else {


Reply via email to