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).


Reply via email to