You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2007/06/29 05:53:40 UTC

svn commit: r551788 - in /incubator/cxf/trunk: rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ systests/src/test/java/org/apache/cxf/systest/provider/datasource/ systests/src/test/resources/

Author: ffang
Date: Thu Jun 28 20:53:39 2007
New Revision: 551788

URL: http://svn.apache.org/viewvc?view=rev&rev=551788
Log:
[CXF-752] apply patch provided by Conrad

Modified:
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ProviderOutDatabindingInterceptor.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/DataSourceProviderTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/TestProvider.java
    incubator/cxf/trunk/systests/src/test/resources/attachmentBinaryData

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ProviderOutDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ProviderOutDatabindingInterceptor.java?view=diff&rev=551788&r1=551787&r2=551788
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ProviderOutDatabindingInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ProviderOutDatabindingInterceptor.java Thu Jun 28 20:53:39 2007
@@ -18,12 +18,16 @@
  */
 package org.apache.cxf.jaxws.interceptors;
 
+import java.io.IOException;
+import java.io.OutputStream;
 import java.util.List;
 
+import javax.activation.DataSource;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.cxf.databinding.DataWriter;
+import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.interceptor.AbstractInDatabindingInterceptor;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.message.Message;
@@ -52,6 +56,14 @@
             if (o != null) {
                 if (o instanceof SOAPMessage) {
                     message.setContent(SOAPMessage.class, o);
+                } else if (o instanceof DataSource) { 
+                    try { 
+                        message.removeContent(XMLStreamWriter.class);
+                        OutputStream out = message.getContent(OutputStream.class); 
+                        IOUtils.copy(((DataSource)o).getInputStream(), out);
+                    } catch (IOException ex) { 
+                        throw new Fault(ex);
+                    } 
                 } else {
                     writer.write(o, xsw);
                 }
@@ -59,4 +71,4 @@
         }
     }
 
-}
\ No newline at end of file
+}

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/DataSourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/DataSourceProviderTest.java?view=diff&rev=551788&r1=551787&r2=551788
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/DataSourceProviderTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/DataSourceProviderTest.java Thu Jun 28 20:53:39 2007
@@ -20,6 +20,7 @@
 package org.apache.cxf.systest.provider.datasource;
 
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
@@ -27,6 +28,10 @@
 import java.util.Properties;
 import java.util.logging.Logger;
 
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
@@ -34,11 +39,7 @@
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
 import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.helpers.XMLUtils;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -88,10 +89,11 @@
         IOUtils.copy(in, out);
         out.close();
 
-        Document d = (Document)XMLUtils.fromSource(new StreamSource(conn.getInputStream()));
-        Node n = d.getFirstChild();
-        assertEquals("bodyParts", n.getNodeName());
-        assertEquals("incorrect number of parts received by server", 2, Integer.parseInt(n.getTextContent()));
+        MimeMultipart mm = readAttachmentParts(conn.getRequestProperty("Content-Type"),
+                                                        conn.getInputStream());
+
+        assertEquals("incorrect number of parts received by server", 3, mm.getCount());
+
     }
 
     private void printSource(Source source) {
@@ -110,6 +112,13 @@
         }
     }
     
-    
+    public static MimeMultipart readAttachmentParts(String contentType, InputStream bais) throws 
+        MessagingException, IOException {
+        Session session = Session.getDefaultInstance(new Properties());
+        MimeMessage mm = new MimeMessage(session, bais);
+        mm.addHeaderLine("Content-Type:" + contentType);
+        return (MimeMultipart) mm.getContent();
+    }
+
 
 }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/TestProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/TestProvider.java?view=diff&rev=551788&r1=551787&r2=551788
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/TestProvider.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/datasource/TestProvider.java Thu Jun 28 20:53:39 2007
@@ -20,15 +20,12 @@
 package org.apache.cxf.systest.provider.datasource;
 
 
-/*import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;*/
-import java.util.Properties;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.util.logging.Logger;
 
 import javax.activation.DataSource;
-import javax.mail.Session;
-import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 import javax.mail.util.ByteArrayDataSource;
 import javax.xml.ws.BindingType;
@@ -38,7 +35,8 @@
 import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.WebServiceProvider;
 
-//import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.helpers.IOUtils;
+
 
 
 
@@ -64,14 +62,15 @@
         try {
             LOG.info("content type: " + req.getContentType());
 
-            Session session = Session.getDefaultInstance(new Properties());
-            MimeMessage mm = new MimeMessage(session, req.getInputStream());
-                        
-            mm.addHeaderLine("Content-Type:" + req.getContentType());
-            MimeMultipart multipart = (MimeMultipart) mm.getContent();
-            msg = "<bodyParts>" + multipart.getCount() + "</bodyParts>";
-            
-            
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            IOUtils.copy(req.getInputStream(), baos);
+            LOG.info("body [" + new String(baos.toByteArray())  + "]");
+            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+            msg = "<ok/>";
+
+            MimeMultipart multipart = DataSourceProviderTest.readAttachmentParts(req.getContentType(), bais);
+            LOG.info("found " + multipart.getCount() + " parts");
+            return new ByteArrayDataSource(baos.toByteArray(), req.getContentType());
         } catch (Exception e) {
             e.printStackTrace();
             msg = "<fail/>";
@@ -85,4 +84,6 @@
         String msg = "<doc><response>Hello</response></doc>";
         return new ByteArrayDataSource(msg.getBytes(), "application/octet-stream");
     }
+    
+    
 }

Modified: incubator/cxf/trunk/systests/src/test/resources/attachmentBinaryData
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/resources/attachmentBinaryData?view=diff&rev=551788&r1=551787&r2=551788
==============================================================================
--- incubator/cxf/trunk/systests/src/test/resources/attachmentBinaryData (original)
+++ incubator/cxf/trunk/systests/src/test/resources/attachmentBinaryData Thu Jun 28 20:53:39 2007
@@ -17,3 +17,8 @@
 dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
 ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
 
+------=_Part_4_701508.1145579811786
+Content-Type: text/plain
+Content-ID: <hello>
+
+Hello Attachment
\ No newline at end of file