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);


Reply via email to