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/07/19 18:24:39 UTC

svn commit: r795563 - in /webservices/commons/trunk/modules/axiom/modules: axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java

Author: veithen
Date: Sun Jul 19 16:24:38 2009
New Revision: 795563

URL: http://svn.apache.org/viewvc?rev=795563&view=rev
Log:
WSCOMMONS-446: Added DataHandlerReader support to StreamingOMSerializer.

Modified:
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java
    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-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java?rev=795563&r1=795562&r2=795563&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java Sun Jul 19 16:24:38 2009
@@ -19,9 +19,11 @@
 
 package org.apache.axiom.om.impl.serialize;
 
+import org.apache.axiom.ext.stax.datahandler.DataHandlerReader;
 import org.apache.axiom.ext.stax.datahandler.DataHandlerWriter;
 import org.apache.axiom.om.OMAttachmentAccessor;
 import org.apache.axiom.om.OMSerializer;
+import org.apache.axiom.om.impl.builder.DataHandlerReaderUtil;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
 import org.apache.axiom.om.util.ElementHelper;
 import org.apache.axiom.util.stax.XMLStreamWriterUtil;
@@ -60,6 +62,7 @@
     public static final QName XOP_INCLUDE = 
         new QName("http://www.w3.org/2004/08/xop/include", "Include");
     
+    private DataHandlerReader dataHandlerReader;
     private DataHandlerWriter dataHandlerWriter;
     private boolean inputHasAttachments = false;
     private boolean skipEndElement = false;
@@ -90,6 +93,7 @@
             inputHasAttachments = true;
         }
         
+        dataHandlerReader = DataHandlerReaderUtil.getDataHandlerReader(reader);
         dataHandlerWriter = XMLStreamWriterUtil.getDataHandlerWriter(writer);
         
         serializeNode(reader, writer, startAtNext);
@@ -136,6 +140,11 @@
                     serializeAttributes(reader, writer);
                     break;
                 case CHARACTERS:
+                    if (dataHandlerReader != null && dataHandlerReader.isBinary()) {
+                        serializeDataHandler();
+                        break;
+                    }
+                    // Fall through
                 case SPACE:
                     serializeText(reader, writer);
                     break;
@@ -632,4 +641,18 @@
         }
         return cid2;
     }
+    
+    private void serializeDataHandler() throws XMLStreamException {
+        try {
+            if (dataHandlerReader.isDeferred()) {
+                dataHandlerWriter.writeDataHandler(dataHandlerReader.getDataHandlerProvider(),
+                        dataHandlerReader.getContentID(), dataHandlerReader.isOptimized());
+            } else {
+                dataHandlerWriter.writeDataHandler(dataHandlerReader.getDataHandler(),
+                        dataHandlerReader.getContentID(), dataHandlerReader.isOptimized());
+            }
+        } catch (IOException ex) {
+            throw new XMLStreamException("Error while reading data handler", ex);
+        }
+    }
 }

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=795563&r1=795562&r2=795563&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 Sun Jul 19 16:24:38 2009
@@ -212,10 +212,12 @@
      * Test reading a message containing XOP.
      * Serialize the tree (with caching).
      * Then ensure that the XOP is preserved when it is serialized again.
+     * <p>
+     * Regression test for WSCOMMONS-446.
+     * 
      * @throws Exception
      */
-    // Test for unresolved issue WSCOMMONS-446
-    public void _testCreateSerializeAndSerializeOptimized() throws Exception {
+    public void testCreateSerializeAndSerializeOptimized() throws Exception {
         OMElement root = createTestMTOMMessage();
         
         // Serialize the tree (with caching).