You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/05/03 20:58:58 UTC

svn commit: r1742180 - in /webservices/axiom/trunk: axiom-api/ axiom-api/src/main/java/org/apache/axiom/om/ds/ axiom-api/src/main/java/org/apache/axiom/om/util/ axiom-compat/src/main/java/org/apache/axiom/om/ds/ testing/axiom-testsuite/src/main/java/or...

Author: veithen
Date: Tue May  3 18:58:58 2016
New Revision: 1742180

URL: http://svn.apache.org/viewvc?rev=1742180&view=rev
Log:
Deprecate OMDataSourceExtBase and its remaining subclasses.

Added:
    webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java
      - copied, changed from r1741856, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java
    webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java
      - copied, changed from r1741856, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java
    webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java
      - copied unchanged from r1741856, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java
Removed:
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestInputStreamDS.java
Modified:
    webservices/axiom/trunk/axiom-api/pom.xml
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/BlobOMDataSource.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java

Modified: webservices/axiom/trunk/axiom-api/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/pom.xml?rev=1742180&r1=1742179&r2=1742180&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/pom.xml (original)
+++ webservices/axiom/trunk/axiom-api/pom.xml Tue May  3 18:58:58 2016
@@ -324,8 +324,6 @@
                                 org.apache.axiom.om.ds.AbstractOMDataSource -> org.apache.axiom.om.util.StAXUtils,
                                 org.apache.axiom.om.ds.AbstractPushOMDataSource -> org.apache.axiom.om.util.StAXUtils,
                                 org.apache.axiom.om.ds.BlobOMDataSource -> org.apache.axiom.om.util.StAXUtils,
-                                org.apache.axiom.om.ds.ByteArrayDataSource -> org.apache.axiom.om.util.StAXUtils,
-                                org.apache.axiom.om.ds.InputStreamDataSource -> org.apache.axiom.om.util.StAXUtils,
                                 org.apache.axiom.om.ds.StringOMDataSource -> org.apache.axiom.om.util.StAXUtils,
                                 org.apache.axiom.om.impl.MTOMXMLStreamWriter -> org.apache.axiom.om.util.StAXUtils,
                                 <!-- This should go away in a redesign of the OMDataSource API -->

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/BlobOMDataSource.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/BlobOMDataSource.java?rev=1742180&r1=1742179&r2=1742180&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/BlobOMDataSource.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/BlobOMDataSource.java Tue May  3 18:58:58 2016
@@ -24,6 +24,7 @@ import javax.xml.stream.XMLStreamExcepti
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.blob.Blob;
+import org.apache.axiom.blob.Blobs;
 import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.util.StAXUtils;
 
@@ -51,6 +52,16 @@ public final class BlobOMDataSource exte
 
     private Data data;
 
+    /**
+     * Constructor.
+     * 
+     * @param blob
+     *            the blob to read from
+     * @param encoding
+     *            the encoding of the data in the blob
+     * 
+     * @see Blobs
+     */
     public BlobOMDataSource(Blob blob, String encoding) {
         data = new Data(blob, encoding);
     }

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java?rev=1742180&r1=1742179&r2=1742180&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java Tue May  3 18:58:58 2016
@@ -19,13 +19,15 @@
 
 package org.apache.axiom.om.util;
 
+import org.apache.axiom.blob.Blobs;
+import org.apache.axiom.blob.MemoryBlob;
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.ds.ByteArrayDataSource;
+import org.apache.axiom.om.ds.BlobOMDataSource;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axiom.util.stax.xop.XOPUtils;
@@ -34,8 +36,8 @@ import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.Reader;
 import java.io.Writer;
 import java.util.Iterator;
@@ -197,10 +199,12 @@ public class ElementHelper {
         QName name = omElement.getQName();
         String localName = name.getLocalPart();
         OMNamespace namespace = factory.createOMNamespace(name.getNamespaceURI(), name.getPrefix());
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        omElement.serialize(baos);
-        ByteArrayDataSource bads = new ByteArrayDataSource(baos.toByteArray(), "utf-8");
-        SOAPHeaderBlock block = factory.createSOAPHeaderBlock(localName, namespace, bads);
+        MemoryBlob blob = Blobs.createMemoryBlob();
+        OutputStream out = blob.getOutputStream();
+        omElement.serialize(out);
+        out.close();
+        BlobOMDataSource ds = new BlobOMDataSource(blob, "utf-8");
+        SOAPHeaderBlock block = factory.createSOAPHeaderBlock(localName, namespace, ds);
         
         return block;
     }

Copied: webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java (from r1741856, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java?p2=webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java&p1=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java&r1=1741856&r2=1742180&rev=1742180&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java (original)
+++ webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java Tue May  3 18:58:58 2016
@@ -31,10 +31,7 @@ import java.io.ByteArrayInputStream;
 import java.io.UnsupportedEncodingException;
 
 /**
- * ByteArrayDataSource is an example implementation of OMDataSourceExt.
- * Use it to insert a (byte[], encoding) into an OM Tree.
- * This data source is useful for placing bytes into an OM
- * tree, instead of having a deeply nested tree.
+ * @deprecated Use {@link BlobOMDataSource} instead.
  */
 public class ByteArrayDataSource extends OMDataSourceExtBase {
 

Copied: webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java (from r1741856, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java?p2=webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java&p1=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java&r1=1741856&r2=1742180&rev=1742180&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java (original)
+++ webservices/axiom/trunk/axiom-compat/src/main/java/org/apache/axiom/om/ds/InputStreamDataSource.java Tue May  3 18:58:58 2016
@@ -21,6 +21,8 @@ package org.apache.axiom.om.ds;
 import org.apache.axiom.om.OMDataSourceExt;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.OMSourcedElement;
+import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.util.StAXUtils;
 
 import javax.xml.stream.XMLStreamException;
@@ -35,10 +37,12 @@ import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 
 /**
- * InputStream is an example OMDataSourceExt.
- * Use it to insert a (InputStream, encoding) into an OM Tree.
- * This data source is useful for placing an InputStream into an OM
- * tree, instead of having a deeply nested tree.
+ * @deprecated This class has been deprecated without replacement. Generally there is no need for
+ *             {@link OMDataSource} instances that are pull based (i.e. use an
+ *             {@link XMLStreamReader}) and that are destructive. For these scenarios, simply use
+ *             {@link OMXMLBuilderFactory} to create an {@link OMElement} and add it to the tree.
+ *             Since this operation will not expand the element (in Axiom 1.3.x), the result will be
+ *             the same as using an {@link OMSourcedElement} with a destructive {@link OMDataSource}.
  */
 public class InputStreamDataSource extends OMDataSourceExtBase {
 

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=1742180&r1=1742179&r2=1742180&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 Tue May  3 18:58:58 2016
@@ -569,7 +569,6 @@ public class OMTestSuiteBuilder extends
             addTest(new org.apache.axiom.ts.om.sourcedelement.TestGetSAXSourceWithPushOMDataSource(metaFactory, scenario, true));
         }
         addTest(new org.apache.axiom.ts.om.sourcedelement.TestGetTextAsStreamWithNonDestructiveOMDataSource(metaFactory));
-        addTest(new org.apache.axiom.ts.om.sourcedelement.TestInputStreamDS(metaFactory));
         addTest(new org.apache.axiom.ts.om.sourcedelement.TestName1DefaultPrefix(metaFactory));
         addTest(new org.apache.axiom.ts.om.sourcedelement.TestName1QualifiedPrefix(metaFactory));
         addTest(new org.apache.axiom.ts.om.sourcedelement.TestName1Unqualified(metaFactory));

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java?rev=1742180&r1=1742179&r2=1742180&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java Tue May  3 18:58:58 2016
@@ -18,17 +18,18 @@
  */
 package org.apache.axiom.ts.om.sourcedelement;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
+import static com.google.common.truth.Truth.assertThat;
 
+import java.io.StringWriter;
+
+import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMSourcedElement;
-import org.apache.axiom.om.ds.ByteArrayDataSource;
-import org.apache.axiom.om.ds.InputStreamDataSource;
 import org.apache.axiom.ts.AxiomTestCase;
+import org.apache.axiom.ts.om.sourcedelement.util.PullOMDataSource;
 
 /**
  * Verifies that a OMDataSource can be replaced with another one
@@ -40,29 +41,27 @@ public class TestSetDataSource extends A
     }
 
     protected void runTest() throws Throwable {
-        String ENCODING = "utf-8";
         String payload1 = "<tns:myPayload xmlns:tns=\"urn://test\">Payload One</tns:myPayload>";
         String payload2 = "<tns:myPayload xmlns:tns=\"urn://test\">Payload Two</tns:myPayload>";
-        ByteArrayDataSource bads1 = new ByteArrayDataSource(payload1.getBytes(ENCODING), ENCODING);
-        ByteArrayDataSource bads2 = new ByteArrayDataSource(payload2.getBytes(ENCODING), ENCODING);
-        InputStreamDataSource isds1 = new InputStreamDataSource(new ByteArrayInputStream(payload1.getBytes(ENCODING)), ENCODING);
-        InputStreamDataSource isds2 = new InputStreamDataSource(new ByteArrayInputStream(payload2.getBytes(ENCODING)), ENCODING);
+        OMDataSource nonDestructiveOMDataSource1 = new PullOMDataSource(payload1, false);
+        OMDataSource nonDestructiveOMDataSource2 = new PullOMDataSource(payload2, false);
+        OMDataSource destructiveOMDataSource1 = new PullOMDataSource(payload1, true);
+        OMDataSource destructiveOMDataSource2 = new PullOMDataSource(payload2, true);
         
         OMFactory factory = metaFactory.getOMFactory();
         OMElement parent = factory.createOMElement("parent", null);
-        OMSourcedElement omse = factory.createOMElement(bads1, "myPayload", factory.createOMNamespace("urn://test", "tns"));
+        OMSourcedElement omse = factory.createOMElement(nonDestructiveOMDataSource1, "myPayload", factory.createOMNamespace("urn://test", "tns"));
         parent.addChild(omse);
         OMNode firstChild = parent.getFirstOMChild();
         assertTrue("Expected OMSourcedElement child", firstChild instanceof OMSourcedElement);
         OMSourcedElement child = (OMSourcedElement) firstChild;
         assertTrue("OMSourcedElement is expanded.  This is unexpected", !child.isExpanded());
-        assertTrue("OMSourcedElement should be backed by a ByteArrayDataSource",
-                   child.getDataSource() instanceof ByteArrayDataSource);
+        assertThat(child.getDataSource()).isSameAs(nonDestructiveOMDataSource1);
         
         // Write out the body
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        parent.serialize(baos);
-        String output = baos.toString(ENCODING);
+        StringWriter sw = new StringWriter();
+        parent.serialize(sw);
+        String output = sw.toString();
 //        System.out.println(output);
         assertTrue("The payload was not present in the output",
                    output.indexOf(payload1) > 0);
@@ -71,32 +70,32 @@ public class TestSetDataSource extends A
         // Replace with payload2.  
         // Important note, it is legal to replace the OMDataSource, but
         // the namespace and local name of the OMSourcedElement cannot be changed.
-        child.setDataSource(bads2);
+        child.setDataSource(nonDestructiveOMDataSource2);
         
         // Write out the body
-        baos = new ByteArrayOutputStream();
-        parent.serialize(baos);
-        output = baos.toString(ENCODING);
+        sw = new StringWriter();
+        parent.serialize(sw);
+        output = sw.toString();
 //        System.out.println(output);
         assertTrue("The payload was not present in the output",
                    output.indexOf(payload2) > 0);
         assertTrue("OMSourcedElement is expanded.  This is unexpected", !child.isExpanded());
         
-        // Now Replace with payload1 from an InputStreamDataSource
-        child.setDataSource(isds1);
-        baos = new ByteArrayOutputStream();
-        parent.serialize(baos);
-        output = baos.toString(ENCODING);
+        // Now Replace with payload1 from an destructiveOMDataSource1
+        child.setDataSource(destructiveOMDataSource1);
+        sw = new StringWriter();
+        parent.serialize(sw);
+        output = sw.toString();
 //        System.out.println(output);
         assertTrue("The payload was not present in the output",
                    output.indexOf(payload1) > 0);
         
-        // Now Replace with payload2 from an InputStreamDataSource.
+        // Now Replace with payload2 from an destructiveOMDataSource2.
         // Note at this point, the child's tree is expanded.
-        child.setDataSource(isds2);
-        baos = new ByteArrayOutputStream();
-        parent.serialize(baos);
-        output = baos.toString(ENCODING);
+        child.setDataSource(destructiveOMDataSource2);
+        sw = new StringWriter();
+        parent.serialize(sw);
+        output = sw.toString();
 //        System.out.println(output);
         assertTrue("The payload was not present in the output",
                    output.indexOf(payload2) > 0);