Author: veithen
Date: Sun Jun  7 09:48:08 2015
New Revision: 1684011

URL: http://svn.apache.org/r1684011
Log:
Enable direct writing to OutputStream from OMDataSource implementations when 
serializing without specifying an OMOutputFormat. Also fixed a related issue in 
MTOMXMLStreamWriter.

Modified:
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
    
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
    
webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj?rev=1684011&r1=1684010&r2=1684011&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
 Sun Jun  7 09:48:08 2015
@@ -248,12 +248,7 @@ public aspect AxiomContainerSupport {
     }
 
     public final void AxiomContainer.serialize(OutputStream output) throws 
XMLStreamException {
-        XMLStreamWriter xmlStreamWriter = 
StAXUtils.createXMLStreamWriter(output);
-        try {
-            serialize(xmlStreamWriter);
-        } finally {
-            xmlStreamWriter.close();
-        }
+        serialize(output, new OMOutputFormat());
     }
 
     public final void AxiomContainer.serialize(Writer writer) throws 
XMLStreamException {
@@ -266,12 +261,7 @@ public aspect AxiomContainerSupport {
     }
 
     public final void AxiomContainer.serializeAndConsume(OutputStream output) 
throws XMLStreamException {
-        XMLStreamWriter xmlStreamWriter = 
StAXUtils.createXMLStreamWriter(output);
-        try {
-            serializeAndConsume(xmlStreamWriter);
-        } finally {
-            xmlStreamWriter.close();
-        }
+        serializeAndConsume(output, new OMOutputFormat());
     }
 
     public final void AxiomContainer.serializeAndConsume(Writer writer) throws 
XMLStreamException {

Modified: 
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java?rev=1684011&r1=1684010&r2=1684011&view=diff
==============================================================================
--- 
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
 (original)
+++ 
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
 Sun Jun  7 09:48:08 2015
@@ -218,7 +218,10 @@ public class MTOMXMLStreamWriter impleme
     public void close() throws XMLStreamException {
         // TODO: we should probably call flush if the attachments have not 
been written yet
         log.debug("close");
-        xmlWriter.close();
+        // Only call flush because data may have been written to the 
underlying output stream
+        // without ever calling writeStartElement. In this case, close would 
trigger an
+        // exception.
+        xmlWriter.flush();
     }
 
     /**

Modified: 
webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java?rev=1684011&r1=1684010&r2=1684011&view=diff
==============================================================================
--- 
webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
 (original)
+++ 
webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
 Sun Jun  7 09:48:08 2015
@@ -569,6 +569,10 @@ public class OMTestSuiteBuilder extends
                 }
             }
             addTest(new 
org.apache.axiom.ts.om.sourcedelement.TestSerializeModifiedOMSEWithNonDestructiveDataSource(metaFactory));
+            for (SerializationStrategy ss : 
getInstances(SerializationStrategy.class)) {
+                addTest(new 
org.apache.axiom.ts.om.sourcedelement.TestSerializeOMDataSourceWritingToOutputStream(metaFactory,
 ss, false));
+                addTest(new 
org.apache.axiom.ts.om.sourcedelement.TestSerializeOMDataSourceWritingToOutputStream(metaFactory,
 ss, true));
+            }
             addTest(new 
org.apache.axiom.ts.om.sourcedelement.TestSetDataSource(metaFactory));
             addTest(new 
org.apache.axiom.ts.om.sourcedelement.TestSetDataSourceOnAlreadyExpandedElement(metaFactory));
             addTest(new 
org.apache.axiom.ts.om.sourcedelement.TestSetLocalName(metaFactory, false));


Reply via email to