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