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