You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/03/15 23:21:25 UTC

svn commit: r518780 - in /incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap: interceptors/mime/AttachmentsOutInterceptor.java wsdl/Wsdl1Soap11BindingFactory.java wsdl/Wsdl1Soap12BindingFactory.java

Author: gnodet
Date: Thu Mar 15 15:21:24 2007
New Revision: 518780

URL: http://svn.apache.org/viewvc?view=rev&rev=518780
Log:
Fix binding creation for operations without output, fix attachments encoding

Modified:
    incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/interceptors/mime/AttachmentsOutInterceptor.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/servicemix-soap2/src/main/java/org/apache/servicemix/soap/interceptors/mime/AttachmentsOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/interceptors/mime/AttachmentsOutInterceptor.java?view=diff&rev=518780&r1=518779&r2=518780
==============================================================================
--- incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/interceptors/mime/AttachmentsOutInterceptor.java (original)
+++ incubator/servicemix/trunk/common/servicemix-soap2/src/main/java/org/apache/servicemix/soap/interceptors/mime/AttachmentsOutInterceptor.java Thu Mar 15 15:21:24 2007
@@ -37,6 +37,7 @@
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 
+import org.apache.servicemix.jbi.util.ByteArrayDataSource;
 import org.apache.servicemix.soap.api.Fault;
 import org.apache.servicemix.soap.api.InterceptorChain;
 import org.apache.servicemix.soap.api.Message;
@@ -90,10 +91,10 @@
         try {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             message.setContent(OutputStream.class, baos);
+            message.put(Message.CONTENT_TYPE, "multipart/related; type=\"text/xml\"; start=\"<" + SOAP_PART_ID + ">\"");
             InterceptorChain chain = message.get(InterceptorChain.class);
             chain.doIntercept(message);
-            InputStream data = new ByteArrayInputStream(baos.toByteArray());
-            writeMultipartMessage(message, os, data);
+            writeMultipartMessage(message, os, baos.toByteArray());
         } catch (MessagingException e) {
             throw new Fault(e);
         } catch (IOException e) {
@@ -113,14 +114,15 @@
     }
 
     @SuppressWarnings("unchecked")
-    private void writeMultipartMessage(Message message, OutputStream out, InputStream data) throws MessagingException, IOException {
+    private void writeMultipartMessage(Message message, OutputStream out, byte[] data) throws MessagingException, IOException {
         MimeMultipart parts = new MimeMultipart("related; type=\"text/xml\"; start=\"<" + SOAP_PART_ID + ">\"");
         Session session = Session.getDefaultInstance(new Properties(), null);
         MimeMessage mime = new MimeMessage(session);
         // Add soap part
         MimeBodyPart soapPart = new MimeBodyPart();
         soapPart.setContentID("<" + SOAP_PART_ID + ">");
-        soapPart.setDataHandler(new DataHandler(new StreamDataSource(data, "text/xml")));
+        soapPart.addHeader("Content-Transfer-Encoding", "8bit");
+        soapPart.setDataHandler(new DataHandler(new ByteArrayDataSource(data, "text/xml")));
         parts.addBodyPart(soapPart);
         // Add attachments
         for (Iterator itr = message.getAttachments().entrySet().iterator(); itr.hasNext();) {
@@ -130,6 +132,7 @@
             MimeBodyPart part = new MimeBodyPart();
             part.setDataHandler(dh);
             part.setContentID("<" + id + ">");
+            part.addHeader("Content-Transfer-Encoding", "binary");
             parts.addBodyPart(part);
         }
         mime.setContent(parts);

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=518780&r1=518779&r2=518780
==============================================================================
--- 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 15 15:21:24 2007
@@ -121,6 +121,9 @@
     private static void createInput(Wsdl1SoapOperationImpl operation, BindingOperation wsdlBindingOperation) {
         Operation wsdlOperation = wsdlBindingOperation.getOperation();
         Input wsdlInput = wsdlOperation.getInput();
+        if (wsdlInput == null) {
+            return;
+        }
         BindingInput wsdlBindingInput = wsdlBindingOperation.getBindingInput();
         SOAPBody wsdlSoapBody = WSDLUtils.getExtension(wsdlBindingInput, SOAPBody.class);
         List<SOAPHeader> wsdlSoapHeaders = WSDLUtils.getExtensions(wsdlBindingInput, SOAPHeader.class);
@@ -169,6 +172,9 @@
     private static void createOutput(Wsdl1SoapOperationImpl operation, BindingOperation wsdlBindingOperation) {
         Operation wsdlOperation = wsdlBindingOperation.getOperation();
         Output wsdlOutput = wsdlOperation.getOutput();
+        if (wsdlOutput == null) {
+            return;
+        }
         BindingOutput wsdlBindingOutput = wsdlBindingOperation.getBindingOutput();
         SOAPBody wsdlSoapBody = WSDLUtils.getExtension(wsdlBindingOutput, SOAPBody.class);
         List<SOAPHeader> wsdlSoapHeaders = WSDLUtils.getExtensions(wsdlBindingOutput, SOAPHeader.class);

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=518780&r1=518779&r2=518780
==============================================================================
--- 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 15 15:21:24 2007
@@ -124,6 +124,9 @@
     private static void createInput(Wsdl1SoapOperationImpl operation, BindingOperation wsdlBindingOperation) {
         Operation wsdlOperation = wsdlBindingOperation.getOperation();
         Input wsdlInput = wsdlOperation.getInput();
+        if (wsdlInput == null) {
+            return;
+        }
         BindingInput wsdlBindingInput = wsdlBindingOperation.getBindingInput();
         SOAP12Body wsdlSoapBody = WSDLUtils.getExtension(wsdlBindingInput, SOAP12Body.class);
         List<SOAP12Header> wsdlSoapHeaders = WSDLUtils.getExtensions(wsdlBindingInput, SOAP12Header.class);
@@ -170,6 +173,9 @@
     private static void createOutput(Wsdl1SoapOperationImpl operation, BindingOperation wsdlBindingOperation) {
         Operation wsdlOperation = wsdlBindingOperation.getOperation();
         Output wsdlOutput = wsdlOperation.getOutput();
+        if (wsdlOutput == null) {
+            return;
+        }
         BindingOutput wsdlBindingOutput = wsdlBindingOperation.getBindingOutput();
         SOAP12Body wsdlSoapBody = WSDLUtils.getExtension(wsdlBindingOutput, SOAP12Body.class);
         List<SOAP12Header> wsdlSoapHeaders = WSDLUtils.getExtensions(wsdlBindingOutput, SOAP12Header.class);