You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2015/05/18 07:55:00 UTC

svn commit: r1679939 - in /webservices/axiom/trunk: modules/axiom-api/src/test/java/org/apache/axiom/om/ modules/axiom-api/src/test/java/org/apache/axiom/util/stax/xop/ modules/axiom-api/src/test/resources/mtom/ testing/soap-testsuite/ testing/soap-tes...

Author: veithen
Date: Mon May 18 05:55:00 2015
New Revision: 1679939

URL: http://svn.apache.org/r1679939
Log:
Change unit test to inline MTOM messages programmatically (using JavaMail, DOM and commons-codec).

Removed:
    webservices/axiom/trunk/modules/axiom-api/src/test/resources/mtom/MTOMAttachmentStream_inlined.xml
Modified:
    webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/om/TestConstants.java
    webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/xop/XOPDecodingStreamReaderTest.java
    webservices/axiom/trunk/testing/soap-testsuite/pom.xml
    webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/MTOMSample.java

Modified: webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/om/TestConstants.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/om/TestConstants.java?rev=1679939&r1=1679938&r2=1679939&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/om/TestConstants.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/om/TestConstants.java Mon May 18 05:55:00 2015
@@ -40,7 +40,6 @@ public class TestConstants {
             "start-info=\"application/soap+xml\"; " +
             "charset=UTF-8;" +
             "action=\"mtomSample\"");
-    public static final String MTOM_MESSAGE_INLINED = "mtom/MTOMAttachmentStream_inlined.xml";
     public static final String MTOM_MESSAGE_IMAGE1 = "mtom/img/test.jpg";
     public static final String MTOM_MESSAGE_IMAGE2 = "mtom/img/test2.jpg";
     

Modified: webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/xop/XOPDecodingStreamReaderTest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/xop/XOPDecodingStreamReaderTest.java?rev=1679939&r1=1679938&r2=1679939&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/xop/XOPDecodingStreamReaderTest.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/xop/XOPDecodingStreamReaderTest.java Mon May 18 05:55:00 2015
@@ -43,7 +43,7 @@ public class XOPDecodingStreamReaderTest
     
     public void testCompareToInlined() throws Exception {
         XMLStreamReader expected = StAXUtils.createXMLStreamReader(
-                getTestResource(TestConstants.MTOM_MESSAGE_INLINED));
+                TestConstants.MTOM_MESSAGE.getInlinedMessage());
         XMLStreamReader actual = getXOPDecodingStreamReader();
         XMLStreamReaderComparator comparator = new XMLStreamReaderComparator(expected, actual);
         comparator.addPrefix("xop");

Modified: webservices/axiom/trunk/testing/soap-testsuite/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/soap-testsuite/pom.xml?rev=1679939&r1=1679938&r2=1679939&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/soap-testsuite/pom.xml (original)
+++ webservices/axiom/trunk/testing/soap-testsuite/pom.xml Mon May 18 05:55:00 2015
@@ -44,6 +44,14 @@
             <artifactId>geronimo-javamail_1.4_spec</artifactId>
         </dependency>
         <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>

Modified: webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/MTOMSample.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/MTOMSample.java?rev=1679939&r1=1679938&r2=1679939&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/MTOMSample.java (original)
+++ webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/MTOMSample.java Mon May 18 05:55:00 2015
@@ -18,8 +18,82 @@
  */
 package org.apache.axiom.ts.soap;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.activation.DataSource;
+import javax.mail.BodyPart;
+import javax.mail.internet.MimeMultipart;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.IOUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
 public class MTOMSample extends MIMESample {
     public MTOMSample(String name, String contentType) {
         super(name, contentType);
     }
+    
+    public InputStream getInlinedMessage() {
+        try {
+            MimeMultipart mp = new MimeMultipart(new DataSource() {
+                @Override
+                public OutputStream getOutputStream() throws IOException {
+                    throw new UnsupportedOperationException();
+                }
+                
+                @Override
+                public String getName() {
+                    return null;
+                }
+                
+                @Override
+                public InputStream getInputStream() throws IOException {
+                    return MTOMSample.this.getInputStream();
+                }
+                
+                @Override
+                public String getContentType() {
+                    return MTOMSample.this.getContentType();
+                }
+            });
+            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+            documentBuilderFactory.setNamespaceAware(true);
+            Document rootPart = documentBuilderFactory.newDocumentBuilder().parse(
+                    mp.getBodyPart(0).getInputStream());
+            process(rootPart.getDocumentElement(), mp);
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            TransformerFactory.newInstance().newTransformer().transform(
+                    new DOMSource(rootPart), new StreamResult(baos));
+            return new ByteArrayInputStream(baos.toByteArray());
+        } catch (Exception ex) {
+            throw new Error(ex);
+        }
+    }
+    
+    private void process(Element element, MimeMultipart mp) throws Exception {
+        if (element.getNamespaceURI().equals("http://www.w3.org/2004/08/xop/include")
+                && element.getLocalName().equals("Include")) {
+            String cid = element.getAttribute("href").substring(4);
+            BodyPart part = mp.getBodyPart("<" + cid + ">");
+            String base64 = Base64.encodeBase64String(IOUtils.toByteArray(part.getInputStream()));
+            element.getParentNode().replaceChild(
+                    element.getOwnerDocument().createTextNode(base64), element);
+        } else {
+            for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling()) {
+                if (child instanceof Element) {
+                    process((Element)child, mp);
+                }
+            }
+        }
+    }
 }