Author: gnodet
Date: Tue Sep 26 04:16:18 2006
New Revision: 449981

URL: http://svn.apache.org/viewvc?view=rev&rev=449981
Log:
SM-598: MTOM attachments are not output by the jsr181 component

Modified:
    
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java
    
incubator/servicemix/trunk/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181MTOMTest.java

Modified: 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java?view=diff&rev=449981&r1=449980&r2=449981
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java
 Tue Sep 26 04:16:18 2006
@@ -38,6 +38,8 @@
 import org.apache.servicemix.jsr181.xfire.JbiTransport;
 import org.codehaus.xfire.MessageContext;
 import org.codehaus.xfire.XFire;
+import org.codehaus.xfire.attachments.Attachment;
+import org.codehaus.xfire.attachments.Attachments;
 import org.codehaus.xfire.attachments.JavaMailAttachments;
 import org.codehaus.xfire.attachments.SimpleAttachment;
 import org.codehaus.xfire.exchange.InMessage;
@@ -118,6 +120,13 @@
                 exchange.setFault(fault);
             } else {
                 NormalizedMessage outMsg = exchange.createMessage();
+                Attachments attachments = 
ctx.getCurrentMessage().getAttachments();
+                if (attachments != null) {
+                    for (Iterator it = attachments.getParts(); it.hasNext();) {
+                        Attachment att = (Attachment) it.next();
+                        outMsg.addAttachment(att.getId(), 
att.getDataHandler());
+                    }
+                }
                 outMsg.setContent(new StringSource(out.toString()));
                 exchange.setMessage(outMsg, "out");
             }

Modified: 
incubator/servicemix/trunk/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181MTOMTest.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181MTOMTest.java?view=diff&rev=449981&r1=449980&r2=449981
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181MTOMTest.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181MTOMTest.java
 Tue Sep 26 04:16:18 2006
@@ -16,6 +16,8 @@
  */

 package org.apache.servicemix.jsr181;

 

+import java.io.ByteArrayOutputStream;

+

 import javax.activation.DataHandler;

 import javax.jbi.messaging.InOut;

 import javax.jbi.servicedesc.ServiceEndpoint;

@@ -30,6 +32,7 @@
 import org.apache.servicemix.jbi.jaxp.SourceTransformer;

 import org.apache.servicemix.jbi.jaxp.StringSource;

 import org.apache.servicemix.jbi.util.ByteArrayDataSource;

+import org.apache.servicemix.jbi.util.FileUtil;

 import org.w3c.dom.Document;

 

 public class Jsr181MTOMTest extends TestCase {

@@ -72,29 +75,25 @@
         Destination dest = 
client.createDestination("service:http://jsr181.servicemix.apache.org/EchoWithAttachment";);

         InOut me = dest.createInOutExchange();

         me.getInMessage().setContent(new StringSource("<echo 
xmlns:xop='http://www.w3.org/2004/08/xop/include'><msg>hello 
world</msg><binary><xop:Include href='binary'/></binary></echo>"));

-        me.getInMessage().addAttachment("binary", new DataHandler(new 
ByteArrayDataSource(new byte[] { 0, 1 , 2}, "image/jpg")));

-        

+        me.getInMessage().addAttachment("binary", new DataHandler(new 
ByteArrayDataSource(new byte[] { 0, 1, 2}, "image/jpg")));

         client.sendSync(me);

-        

+        assertNotNull(me.getOutMessage());

+        assertEquals(1, me.getOutMessage().getAttachmentNames().size());

+        DataHandler dh = me.getOutMessage().getAttachment((String) 
me.getOutMessage().getAttachmentNames().iterator().next());

+        assertNotNull(dh);

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        FileUtil.copyInputStream(dh.getInputStream(), baos);

+        assertEquals(3, baos.toByteArray().length);

+        client.done(me);

     }

     

     public static class EchoWithAttachment {

         

-        /*

-         * Do not use byte[] until xfire-1.2

-        public String echo(String msg, byte[] binary) {

+        public byte[] echo(String msg, byte[] binary) {

             if (binary == null || binary.length == 0) {

                 throw new NullPointerException("binary is null");

             }

-            return "Echo: " + msg;

-        }

-        */

-        

-        public String echo(String msg, DataHandler binary) {

-            if (binary == null || binary.getDataSource() == null) {

-                throw new NullPointerException("binary is null");

-            }

-            return "Echo: " + msg;

+            return binary;

         }

     }

     



Reply via email to