You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2009/05/20 00:14:52 UTC
svn commit: r776489 -
/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
Author: veithen
Date: Tue May 19 22:14:52 2009
New Revision: 776489
URL: http://svn.apache.org/viewvc?rev=776489&view=rev
Log:
Added a test case checking that loading of attachments is deferred to the moment when OMText#getDataHandler is called.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java?rev=776489&r1=776488&r2=776489&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java Tue May 19 22:14:52 2009
@@ -22,11 +22,14 @@
import org.apache.axiom.attachments.Attachments;
import org.apache.axiom.om.AbstractTestCase;
import org.apache.axiom.om.OMAttachmentAccessor;
+import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMOutputFormat;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.OMXMLStreamReader;
+import org.apache.axiom.om.impl.traverse.OMDescendantsIterator;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;
@@ -42,7 +45,9 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
public class MTOMStAXSOAPModelBuilderTest extends AbstractTestCase {
@@ -59,7 +64,7 @@
super.setUp();
}
- private OMElement createTestMTOMMessage() throws Exception {
+ private MTOMStAXSOAPModelBuilder createBuilderForTestMTOMMessage() throws Exception {
String contentTypeString =
"multipart/Related; charset=\"UTF-8\"; type=\"application/xop+xml\"; boundary=\"----=_AxIs2_Def_boundary_=42214532\"; start=\"SOAPPart\"";
String inFileName = "mtom/MTOMBuilderTestIn.txt";
@@ -68,9 +73,12 @@
XMLStreamReader reader = XMLInputFactory.newInstance()
.createXMLStreamReader(new BufferedReader(new InputStreamReader(attachments
.getSOAPPartInputStream())));
- OMXMLParserWrapper builder = new MTOMStAXSOAPModelBuilder(reader, attachments,
+ return new MTOMStAXSOAPModelBuilder(reader, attachments,
SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
- return builder.getDocumentElement();
+ }
+
+ private OMElement createTestMTOMMessage() throws Exception {
+ return createBuilderForTestMTOMMessage().getDocumentElement();
}
private void checkSerialization(OMElement root, boolean optimize) throws Exception {
@@ -114,6 +122,38 @@
// assertEquals("Object check", expectedObject[5],actualObject[5] );
}
+
+ /**
+ * Test that MIME parts are not loaded before requesting the DataHandlers from the corresponding
+ * OMText nodes.
+ *
+ * @throws Exception
+ */
+ public void testDeferredLoadingOfAttachments() throws Exception {
+ MTOMStAXSOAPModelBuilder builder = createBuilderForTestMTOMMessage();
+ Attachments attachments = builder.getAttachments();
+ OMDocument doc = builder.getDocument();
+ // Find all the binary nodes
+ List/*<OMText>*/ binaryNodes = new ArrayList();
+ for (Iterator it = new OMDescendantsIterator(doc.getFirstOMChild()); it.hasNext(); ) {
+ OMNode node = (OMNode)it.next();
+ if (node instanceof OMText) {
+ OMText text = (OMText)node;
+ if (text.isBinary()) {
+ binaryNodes.add(text);
+ }
+ }
+ }
+ assertFalse(binaryNodes.isEmpty());
+ // At this moment only the SOAP part should have been loaded
+ assertEquals(1, attachments.getContentIDList().size());
+ for (Iterator it = binaryNodes.iterator(); it.hasNext(); ) {
+ // Request the DataHandler and do something with it to make sure
+ // the part is loaded
+ ((DataHandler)((OMText)it.next()).getDataHandler()).getInputStream().close();
+ }
+ assertEquals(binaryNodes.size() + 1, attachments.getContentIDList().size());
+ }
/**
* Test reading a message containing XOP and ensuring that the