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