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 2022/11/06 14:30:16 UTC
[ws-axiom] branch master updated: [AXIOM-506] Replace OMText.getDataHandler()
This is an automated email from the ASF dual-hosted git repository.
veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git
The following commit(s) were added to refs/heads/master by this push:
new d6c42034c [AXIOM-506] Replace OMText.getDataHandler()
d6c42034c is described below
commit d6c42034c664e49b60290769d1892d310044338a
Author: Andreas Veithen <an...@gmail.com>
AuthorDate: Sun Nov 6 14:30:05 2022 +0000
[AXIOM-506] Replace OMText.getDataHandler()
---
axiom-api/pom.xml | 6 -
.../src/main/java/org/apache/axiom/om/OMText.java | 9 +-
.../org/apache/axiom/om/impl/jaxp/OMSource.java | 52 ---
.../axiom/om/impl/serialize/OMXMLReader.java | 365 ---------------------
.../java/org/apache/axiom/om/util/TextHelper.java | 104 ------
.../org/apache/axiom/om/util/TextHelperTest.java | 136 --------
.../GetDataHandlerBridgeMethodInjector.java | 77 -----
.../axiom/buildutils/classes/PostProcessMojo.java | 90 -----
implementations/pom.xml | 1 -
.../om/impl/common/factory/OMFactoryImpl.java | 4 +-
.../apache/axiom/om/impl/mixin/AxiomTextMixin.java | 7 +-
.../java/org/apache/axiom/samples/MTOMSample.java | 12 +-
systests/compat-tests/pom.xml | 99 ------
.../src/test/java/DataHandlerTest.java | 46 ---
.../om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java | 12 +-
systests/pom.xml | 1 -
.../TestReadAttachmentBeforeRootPartComplete.java | 13 +-
.../factory/TestCreateOMTextFromBlobProvider.java | 2 +-
.../jaxb/TestDataHandlerExpansion.java | 3 +-
.../jaxb/TestDataHandlerSerializationWithMTOM.java | 11 +-
.../push/WriteBlobProviderScenario.java | 5 +-
.../om/sourcedelement/push/WriteBlobScenario.java | 5 +-
.../apache/axiom/ts/om/text/TestCloneBinary.java | 3 +-
.../apache/axiom/ts/om/xop/XOPRoundtripTest.java | 3 +-
.../soap12/envelope/TestBuildWithAttachments.java | 6 +-
.../soap12/envelope/TestMTOMForwardStreaming.java | 9 +-
.../axiom/ts/soap12/mtom/TestBuilderDetach.java | 3 +-
27 files changed, 56 insertions(+), 1028 deletions(-)
diff --git a/axiom-api/pom.xml b/axiom-api/pom.xml
index 6de2c96cb..03577785a 100644
--- a/axiom-api/pom.xml
+++ b/axiom-api/pom.xml
@@ -140,12 +140,6 @@
<artifactId>buildutils-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
- <execution>
- <id>post-process-classes</id>
- <goals>
- <goal>post-process-classes</goal>
- </goals>
- </execution>
<execution>
<id>post-process-sources-jar</id>
<goals>
diff --git a/axiom-api/src/main/java/org/apache/axiom/om/OMText.java b/axiom-api/src/main/java/org/apache/axiom/om/OMText.java
index 595a33a5c..29d6cb4ac 100644
--- a/axiom-api/src/main/java/org/apache/axiom/om/OMText.java
+++ b/axiom-api/src/main/java/org/apache/axiom/om/OMText.java
@@ -19,9 +19,10 @@
package org.apache.axiom.om;
-import javax.activation.DataHandler;
import javax.xml.namespace.QName;
+import org.apache.axiom.blob.Blob;
+
/**
* Represents character data in an XML document. A node of this type is used to
* represent character data that may appear in element content as well as the
@@ -80,11 +81,11 @@ public interface OMText extends OMNode {
OMNamespace getNamespace();
/**
- * Gets the datahandler.
+ * Returns a {@link Blob} containing the base64-decoded content of this node.
*
- * @return Returns datahandler.
+ * @return the base64-decoded content
*/
- DataHandler getDataHandler();
+ Blob getBlob();
/** @return Returns boolean flag saying whether the node contains an optimized text or not. */
// TODO: inconsistent naming
diff --git a/axiom-compat/src/main/java/org/apache/axiom/om/impl/jaxp/OMSource.java b/axiom-compat/src/main/java/org/apache/axiom/om/impl/jaxp/OMSource.java
deleted file mode 100644
index b38ece65c..000000000
--- a/axiom-compat/src/main/java/org/apache/axiom/om/impl/jaxp/OMSource.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.axiom.om.impl.jaxp;
-
-import javax.xml.transform.sax.SAXSource;
-
-import org.apache.axiom.om.OMContainer;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.serialize.OMXMLReader;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.ext.DeclHandler;
-import org.xml.sax.ext.LexicalHandler;
-
-/**
- * Implementation of {@link javax.xml.transform.Source} for AXIOM.
- * The implementation is based on {@link SAXSource} and directly transforms an AXIOM
- * tree into a stream of SAX events using {@link OMXMLReader}.
- * <p>
- * Note that this class only supports {@link ContentHandler} and {@link LexicalHandler}.
- * {@link DTDHandler} and {@link DeclHandler} are not supported.
- *
- * @deprecated As of version 1.2.13, application code should use
- * {@link OMContainer#getSAXSource(boolean)} instead of this class.
- */
-public class OMSource extends SAXSource {
- public OMSource(OMElement element) {
- this((OMContainer)element);
- }
-
- public OMSource(OMContainer node) {
- super(new OMXMLReader(node), new InputSource());
- }
-}
diff --git a/axiom-compat/src/main/java/org/apache/axiom/om/impl/serialize/OMXMLReader.java b/axiom-compat/src/main/java/org/apache/axiom/om/impl/serialize/OMXMLReader.java
deleted file mode 100644
index 666bef38c..000000000
--- a/axiom-compat/src/main/java/org/apache/axiom/om/impl/serialize/OMXMLReader.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.axiom.om.impl.serialize;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.activation.DataHandler;
-import javax.xml.transform.sax.SAXSource;
-
-import org.apache.axiom.om.OMAttribute;
-import org.apache.axiom.om.OMComment;
-import org.apache.axiom.om.OMContainer;
-import org.apache.axiom.om.OMDocType;
-import org.apache.axiom.om.OMDocument;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMEntityReference;
-import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.OMProcessingInstruction;
-import org.apache.axiom.om.OMText;
-import org.apache.axiom.om.impl.jaxp.OMSource;
-import org.apache.axiom.util.base64.Base64EncodingWriterOutputStream;
-import org.apache.axiom.util.sax.AbstractXMLReader;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.DeclHandler;
-import org.xml.sax.ext.LexicalHandler;
-
-/**
- * SAX {@link XMLReader} implementation that traverses a given OM tree and invokes the
- * callback methods on the configured {@link ContentHandler}. This can be used to
- * serialize an Axiom tree to SAX.
- * <p>
- * Note that this class only supports {@link ContentHandler} and {@link LexicalHandler}.
- * {@link DTDHandler} and {@link DeclHandler} are not supported.
- * <p>
- * This class can also generate SAX events for a subtree. This is the case if the
- * element passed to the constructor is not the root element of the document. In this
- * case, care is taken to properly generate <code>startPrefixMapping</code> and
- * <code>endPrefixMapping</code> events also for namespace mappings declared on the ancestors
- * of the element.
- * <p>
- * To understand why this is important, consider the following example:
- * <pre><root xmlns:ns="urn:ns"><element attr="ns:someThing"/><root></pre>
- * In that case, to correctly interpret the attribute value, the SAX content handler must be
- * aware of the namespace mapping for the {@code ns} prefix, even if the serialization starts
- * only at the child element.
- *
- * @deprecated This class is used internally by {@link OMSource}. Starting with Axiom 1.2.13,
- * application code should use {@link OMContainer#getSAXSource(boolean)} to serialize an OM tree to
- * SAX. If there is a need to obtain an {@link XMLReader} instance, use
- * {@link SAXSource#getXMLReader()} on the {@link SAXSource} returned by
- * {@link OMContainer#getSAXSource(boolean)}.
- */
-@SuppressWarnings({"rawtypes", "unchecked"})
-public class OMXMLReader extends AbstractXMLReader {
- private final OMContainer root;
- private final AttributesAdapter attributesAdapter = new AttributesAdapter();
-
- public OMXMLReader(OMContainer root) {
- this.root = root;
- }
-
- @Override
- public void parse(InputSource input) throws IOException, SAXException {
- parse();
- }
-
- @Override
- public void parse(String systemId) throws IOException, SAXException {
- parse();
- }
-
- private void parse() throws SAXException {
- if (root instanceof OMDocument) {
- generateEvents((OMDocument)root);
- } else {
- OMElement element = (OMElement)root;
- contentHandler.startDocument();
- generateParentPrefixMappingEvents(element, true);
- generateEvents(element);
- generateParentPrefixMappingEvents(element, false);
- contentHandler.endDocument();
- }
- }
-
- private void generateEvents(OMDocument document) throws SAXException {
- contentHandler.startDocument();
- generateEventsForChildren(document);
- contentHandler.endDocument();
- }
-
- private void generatePrefixMappingEvents(OMNamespace ns, boolean start) throws SAXException {
- String prefix = ns.getPrefix();
- if (prefix != null) {
- if (start) {
- contentHandler.startPrefixMapping(prefix, ns.getNamespaceURI());
- } else {
- contentHandler.endPrefixMapping(prefix);
- }
- }
- }
-
- private void generatePrefixMappingEvents(OMElement omElement, boolean start)
- throws SAXException {
-
- for (Iterator it = omElement.getAllDeclaredNamespaces(); it.hasNext(); ) {
- generatePrefixMappingEvents((OMNamespace)it.next(), start);
- }
- }
-
- private void generateParentPrefixMappingEvents(OMElement omElement, boolean start)
- throws SAXException {
-
- if (!(omElement.getParent() instanceof OMElement)) {
- return;
- }
- // Maintain a set of the prefixes we have already seen. This is required to take into
- // account that a namespace mapping declared on an element can hide another one declared
- // for the same prefix on an ancestor of the element.
- Set/*<String>*/ seenPrefixes = new HashSet();
- for (Iterator it = omElement.getAllDeclaredNamespaces(); it.hasNext(); ) {
- seenPrefixes.add(((OMNamespace)it.next()).getPrefix());
- }
- OMElement current = omElement;
- while (true) {
- OMContainer parent = current.getParent();
- if (!(parent instanceof OMElement)) {
- return;
- }
- current = (OMElement)parent;
- for (Iterator it = current.getAllDeclaredNamespaces(); it.hasNext(); ) {
- OMNamespace ns = (OMNamespace)it.next();
- if (seenPrefixes.add(ns.getPrefix())) {
- generatePrefixMappingEvents(ns, start);
- }
- }
- }
- }
-
- private void generateEvents(OMElement omElement) throws SAXException {
- generatePrefixMappingEvents(omElement, true);
- OMNamespace omNamespace = omElement.getNamespace();
- String uri;
- String prefix;
- if (omNamespace != null) {
- uri = omNamespace.getNamespaceURI();
- prefix = omNamespace.getPrefix();
- } else {
- uri = "";
- prefix = null;
- }
- String localName = omElement.getLocalName();
- String qName;
- if (prefix == null || prefix.length() == 0) {
- qName = localName;
- } else {
- qName = prefix + ":" + localName;
- }
- // For performance reasons, we always reuse the same instance of AttributesAdapter.
- // This is explicitely allowed by the specification of the startElement method.
- attributesAdapter.setAttributes(omElement);
- contentHandler.startElement(uri, localName, qName, attributesAdapter);
- generateEventsForChildren(omElement);
- contentHandler.endElement(uri, localName, qName);
- generatePrefixMappingEvents(omElement, false);
- }
-
- private void generateEventsForChildren(OMContainer parent) throws SAXException {
- for (Iterator it = parent.getChildren(); it.hasNext(); ) {
- OMNode node = (OMNode)it.next();
- switch (node.getType()) {
- case OMNode.DTD_NODE:
- if (lexicalHandler != null) {
- OMDocType doctype = (OMDocType)node;
- lexicalHandler.startDTD(doctype.getRootName(), doctype.getPublicId(), doctype.getSystemId());
- lexicalHandler.endDTD();
- }
- break;
- case OMNode.ELEMENT_NODE:
- generateEvents((OMElement)node);
- break;
- case OMNode.TEXT_NODE:
- generateEvents((OMText)node, false);
- break;
- case OMNode.SPACE_NODE:
- generateEvents((OMText)node, true);
- break;
- case OMNode.CDATA_SECTION_NODE:
- if (lexicalHandler != null) {
- lexicalHandler.startCDATA();
- }
- generateEvents((OMText)node, false);
- if (lexicalHandler != null) {
- lexicalHandler.endCDATA();
- }
- break;
- case OMNode.COMMENT_NODE:
- if (lexicalHandler != null) {
- char[] ch = ((OMComment)node).getValue().toCharArray();
- lexicalHandler.comment(ch, 0, ch.length);
- }
- break;
- case OMNode.PI_NODE:
- OMProcessingInstruction pi = (OMProcessingInstruction)node;
- contentHandler.processingInstruction(pi.getTarget(), pi.getValue());
- break;
- case OMNode.ENTITY_REFERENCE_NODE:
- contentHandler.skippedEntity(((OMEntityReference)node).getName());
- break;
- default:
- throw new IllegalStateException("Unrecognized node type " + node.getType());
- }
- }
- }
-
- private void generateEvents(OMText omText, boolean space) throws SAXException {
- if (omText.isBinary()) {
- // Stream the binary content
- DataHandler dh = omText.getDataHandler();
- Base64EncodingWriterOutputStream out = new Base64EncodingWriterOutputStream(new ContentHandlerWriter(contentHandler));
- try {
- dh.writeTo(out);
- out.complete();
- } catch (IOException ex) {
- Throwable cause = ex.getCause();
- if (cause instanceof SAXException) {
- throw (SAXException)ex.getCause();
- } else {
- throw new SAXException(ex);
- }
- }
- } else {
- char[] ch = omText.getTextCharacters();
- if (space) {
- contentHandler.ignorableWhitespace(ch, 0, ch.length);
- } else {
- contentHandler.characters(ch, 0, ch.length);
- }
- }
- }
-
- protected static class AttributesAdapter implements Attributes {
- private List/*<OMAttribute>*/ attributes = new ArrayList(5);
-
- public void setAttributes(OMElement element) {
- attributes.clear();
- for (Iterator it = element.getAllAttributes(); it.hasNext(); ) {
- attributes.add(it.next());
- }
- }
-
- @Override
- public int getLength() {
- return attributes.size();
- }
-
- @Override
- public int getIndex(String qName) {
- for (int i=0, len=attributes.size(); i<len; i++) {
- if (getQName(i).equals(qName)) {
- return i;
- }
- }
- return -1;
- }
-
- @Override
- public int getIndex(String uri, String localName) {
- for (int i=0, len=attributes.size(); i<len; i++) {
- if (getURI(i).equals(uri) && getLocalName(i).equals(localName)) {
- return i;
- }
- }
- return -1;
- }
-
- @Override
- public String getLocalName(int index) {
- return ((OMAttribute)attributes.get(index)).getLocalName();
- }
-
- @Override
- public String getQName(int index) {
- OMAttribute attribute = ((OMAttribute)attributes.get(index));
- OMNamespace ns = attribute.getNamespace();
- if (ns == null) {
- return attribute.getLocalName();
- } else {
- String prefix = ns.getPrefix();
- if (prefix == null || prefix.length() == 0) {
- return attribute.getLocalName();
- } else {
- return ns.getPrefix() + ":" + attribute.getLocalName();
- }
- }
- }
-
- @Override
- public String getType(int index) {
- return ((OMAttribute)attributes.get(index)).getAttributeType();
- }
-
- @Override
- public String getType(String qName) {
- int index = getIndex(qName);
- return index == -1 ? null : getType(index);
- }
-
- @Override
- public String getType(String uri, String localName) {
- int index = getIndex(uri, localName);
- return index == -1 ? null : getType(index);
- }
-
- @Override
- public String getURI(int index) {
- OMNamespace ns = ((OMAttribute)attributes.get(index)).getNamespace();
- return ns == null ? "" : ns.getNamespaceURI();
- }
-
- @Override
- public String getValue(int index) {
- return ((OMAttribute)attributes.get(index)).getAttributeValue();
- }
-
- @Override
- public String getValue(String qName) {
- int index = getIndex(qName);
- return index == -1 ? null : getValue(index);
- }
-
- @Override
- public String getValue(String uri, String localName) {
- int index = getIndex(uri, localName);
- return index == -1 ? null : getValue(index);
- }
- }
-}
diff --git a/axiom-compat/src/main/java/org/apache/axiom/om/util/TextHelper.java b/axiom-compat/src/main/java/org/apache/axiom/om/util/TextHelper.java
deleted file mode 100644
index 3de26c069..000000000
--- a/axiom-compat/src/main/java/org/apache/axiom/om/util/TextHelper.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.axiom.om.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.activation.DataHandler;
-
-import org.apache.axiom.om.OMText;
-import org.apache.axiom.util.base64.Base64EncodingStringBufferOutputStream;
-import org.apache.axiom.util.base64.Base64Utils;
-
-/**
- * @deprecated Class containing only deprecated utility methods.
- */
-public class TextHelper {
- /**
- * @deprecated This method was internally used by Axiom before version 1.2.9 but is no longer
- * required.
- */
- public static String toString(InputStream inStream) throws IOException {
- StringBuffer buffer = new StringBuffer();
- toStringBuffer(inStream, buffer);
- return buffer.toString();
- }
-
- /**
- * @deprecated This method was internally used by Axiom before version 1.2.9 but is no longer
- * required.
- */
- public static void toStringBuffer(InputStream inStream, StringBuffer buffer) throws IOException {
- int avail = inStream.available();
-
- // The Base64 will increase the size by 1.33 + some additional
- // space at the data byte[] boundaries. So a factor of 1.35 is used
- // to ensure capacity.
- if (avail > 0) {
- buffer.ensureCapacity((int) (avail* 1.35) + buffer.length());
- }
-
- // The size of the buffer must be a multiple of 3. Otherwise usage of the
- // stateless Base64 class would produce filler characters inside the Base64
- // encoded text.
- byte[] data = new byte[1023];
- boolean eos = false;
- do {
- int len = 0;
- do {
- // Always fill the buffer entirely (unless the end of the stream has
- // been reached); see above.
- int read = inStream.read(data, len, data.length-len);
- if (read == -1) {
- eos = true;
- break;
- }
- len += read;
- } while (len < data.length);
- Base64Utils.encode(data, 0, len, buffer);
- } while (!eos);
- }
-
- /**
- * @deprecated If you really need to write the base64 encoded content of an {@link OMText}
- * instance to a {@link StringBuffer}, then request the {@link DataHandler} using
- * {@link OMText#getDataHandler()} and use
- * {@link Base64EncodingStringBufferOutputStream} to encode it.
- */
- public static void toStringBuffer(OMText omText, StringBuffer buffer) throws IOException {
- // If an InputStream is present, stream the BASE64 text to the StreamBuffer
- if (omText.isOptimized()) {
- DataHandler dh = omText.getDataHandler();
- if (dh != null) {
- InputStream is = dh.getInputStream();
- if (is != null) {
- toStringBuffer(is, buffer);
- return;
- }
- }
- }
-
- // Otherwise append the text
- buffer.append(omText.getText());
- return;
- }
-
-}
diff --git a/axiom-compat/src/test/java/org/apache/axiom/om/util/TextHelperTest.java b/axiom-compat/src/test/java/org/apache/axiom/om/util/TextHelperTest.java
deleted file mode 100644
index 75ae0869c..000000000
--- a/axiom-compat/src/test/java/org/apache/axiom/om/util/TextHelperTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.axiom.om.util;
-
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMText;
-
-import javax.activation.DataHandler;
-import javax.activation.FileDataSource;
-
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.SequenceInputStream;
-
-import junit.framework.TestCase;
-
-/**
- * Validate TextHelper code
- */
-@SuppressWarnings("deprecation")
-public class TextHelperTest extends TestCase {
- private File tempDir;
- private File file;
- private FileInputStream fis;
- private static final long SIZE = 101 * 1024; // More than the threshold
- private static final long EXPECTED_BASE64_SIZE = 137900;
- private static final String EXPECTED_STARTS_WITH =
- "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJC";
-
-
- public TextHelperTest(String testName) {
- super(testName);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- tempDir = new File(System.getProperty("basedir", "."), "target/temp");
- tempDir.mkdirs();
- file = new File(tempDir, "TextHelperTest.txt");
- FileOutputStream fos = new FileOutputStream(file);
- BufferedOutputStream bos = new BufferedOutputStream(fos);
- for (long i = 0; i < SIZE; i++) {
- bos.write((byte)(i % 256));
- }
- bos.flush();
- bos.close();
- fis = new FileInputStream(file);
- file.deleteOnExit();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- if (file != null) {
- file.delete();
- }
- }
-
- /**
- * Test the InputStream - > BASE64 String
- * code.
- *
- * @throws Exception
- */
- public void test_toString() throws Exception {
- String text = TextHelper.toString(fis);
- assertTrue(text.length() > SIZE);
- assertTrue(text.length() == EXPECTED_BASE64_SIZE);
- assertTrue(text.startsWith(EXPECTED_STARTS_WITH));
- }
-
- /**
- * Regression test for AXIOM-101.
- *
- * @throws Exception
- */
- public void test_toString2() throws Exception {
- InputStream in = new SequenceInputStream(
- new ByteArrayInputStream("aa".getBytes()),
- new ByteArrayInputStream("a".getBytes()));
- assertEquals("YWFh", TextHelper.toString(in));
- }
-
- /**
- * Test the InputStream -> BASE64 StringBuffer code
- * @throws Exception
- */
- public void test_toStringBuffer() throws Exception {
- StringBuffer buffer = new StringBuffer();
- TextHelper.toStringBuffer(fis, buffer);
- assertTrue(buffer.length() > SIZE);
- String text = buffer.toString();
- assertTrue(text.length() == EXPECTED_BASE64_SIZE);
- assertTrue(text.startsWith(EXPECTED_STARTS_WITH));
- }
-
- /**
- * Test the OMText -> StringBuffer code
- * @throws Exception
- */
- public void test_fromOMText() throws Exception {
-
- OMFactory factory = OMAbstractFactory.getOMFactory();
- FileDataSource fds = new FileDataSource(file);
- DataHandler dh = new DataHandler(fds);
- OMText omText = factory.createOMText(dh, true);
- StringBuffer buffer = new StringBuffer();
- TextHelper.toStringBuffer(omText, buffer);
- assertTrue(buffer.length() > SIZE);
- String text = buffer.toString();
- assertTrue(text.length() == EXPECTED_BASE64_SIZE);
- assertTrue(text.startsWith(EXPECTED_STARTS_WITH));
- }
-}
\ No newline at end of file
diff --git a/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/GetDataHandlerBridgeMethodInjector.java b/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/GetDataHandlerBridgeMethodInjector.java
deleted file mode 100644
index 9684f0d45..000000000
--- a/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/GetDataHandlerBridgeMethodInjector.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.axiom.buildutils.classes;
-
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-
-/**
- * Injects a bridge method for {@code getDataHandler} returning {@link Object}, for compatibility
- * with previous versions of {@code OMText}.
- */
-final class GetDataHandlerBridgeMethodInjector extends ClassVisitor {
- private String className;
-
- GetDataHandlerBridgeMethodInjector(ClassVisitor cv) {
- super(Opcodes.ASM9, cv);
- }
-
- @Override
- public void visit(
- int version,
- int access,
- String name,
- String signature,
- String superName,
- String[] interfaces) {
- super.visit(version, access, name, signature, superName, interfaces);
- className = name;
- }
-
- @Override
- public MethodVisitor visitMethod(
- int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("getDataHandler")) {
- if (desc.equals("()Ljavax/activation/DataHandler;")) {
- MethodVisitor mv =
- super.visitMethod(
- (access | Opcodes.ACC_BRIDGE | Opcodes.ACC_SYNTHETIC)
- & ~Opcodes.ACC_FINAL,
- name,
- "()Ljava/lang/Object;",
- null,
- exceptions);
- if ((access & Opcodes.ACC_ABSTRACT) == 0) {
- mv.visitCode();
- mv.visitVarInsn(Opcodes.ALOAD, 0);
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, className, name, desc, false);
- mv.visitInsn(Opcodes.ARETURN);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- }
- } else if ((access & Opcodes.ACC_BRIDGE) != 0 && desc.equals("()Ljava/lang/Object;")) {
- // Skip any existing bridge method so that the transformation is idempotent. That's
- // important when rebuilding without cleaning.
- return null;
- }
- }
- return super.visitMethod(access, name, desc, signature, exceptions);
- }
-}
diff --git a/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/PostProcessMojo.java b/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/PostProcessMojo.java
deleted file mode 100644
index f7683c5bd..000000000
--- a/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/PostProcessMojo.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.axiom.buildutils.classes;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.codehaus.plexus.util.DirectoryScanner;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-
-@Mojo(name = "post-process-classes", defaultPhase = LifecyclePhase.PROCESS_CLASSES)
-public class PostProcessMojo extends AbstractMojo {
- @Parameter(property = "project.build.outputDirectory", required = true, readonly = true)
- private File classesDir;
-
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException {
- if (!classesDir.exists()) {
- return;
- }
- DirectoryScanner ds = new DirectoryScanner();
- ds.setIncludes(new String[] {"**/*.class"});
- ds.setBasedir(classesDir);
- ds.scan();
- for (String relativePath : ds.getIncludedFiles()) {
- File file = new File(classesDir, relativePath);
- ClassWriter classWriter;
- try {
- InputStream in = new FileInputStream(file);
- try {
- ClassReader classReader = new ClassReader(in);
- classWriter = new ClassWriter(classReader, 0);
- ClassVisitor classVisitor = classWriter;
- if (relativePath.equals("org/apache/axiom/om/OMText.class")
- || relativePath.equals(
- "org/apache/axiom/om/impl/llom/AxiomCharacterDataNodeImpl.class")
- || relativePath.equals(
- "org/apache/axiom/om/impl/dom/DOMTextNodeImpl.class")) {
- classVisitor = new GetDataHandlerBridgeMethodInjector(classVisitor);
- }
- classReader.accept(classVisitor, 0);
- } finally {
- in.close();
- }
- } catch (IOException ex) {
- throw new MojoExecutionException(
- "Failed to read " + relativePath + ": " + ex.getMessage(), ex);
- }
- try {
- OutputStream out = new FileOutputStream(file);
- try {
- out.write(classWriter.toByteArray());
- } finally {
- out.close();
- }
- } catch (IOException ex) {
- throw new MojoExecutionException(
- "Failed to write " + relativePath + ": " + ex.getMessage(), ex);
- }
- }
- }
-}
diff --git a/implementations/pom.xml b/implementations/pom.xml
index 92d5d8f10..67202f286 100644
--- a/implementations/pom.xml
+++ b/implementations/pom.xml
@@ -67,7 +67,6 @@
<executions>
<execution>
<goals>
- <goal>post-process-classes</goal>
<goal>post-process-sources-jar</goal>
</goals>
</execution>
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
index 9add26edd..ca3d8f705 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
@@ -428,9 +428,7 @@ public class OMFactoryImpl implements OMFactory {
if (text.isBinary()) {
content =
new TextContent(
- text.getContentID(),
- text.getDataHandler(),
- text.isOptimized());
+ text.getContentID(), text.getBlob(), text.isOptimized());
} else {
content = text.getText();
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomTextMixin.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomTextMixin.java
index 7f06fefba..ff776a645 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomTextMixin.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomTextMixin.java
@@ -21,6 +21,7 @@ package org.apache.axiom.om.impl.mixin;
import javax.activation.DataHandler;
import javax.xml.namespace.QName;
+import org.apache.axiom.blob.Blob;
import org.apache.axiom.core.CoreModelException;
import org.apache.axiom.mime.activation.PartDataHandler;
import org.apache.axiom.om.OMElement;
@@ -129,11 +130,11 @@ public abstract class AxiomTextMixin implements AxiomText {
}
@Override
- public final DataHandler getDataHandler() {
+ public final Blob getBlob() {
try {
Object content = coreGetCharacterData();
if (content instanceof TextContent) {
- return DataHandlerUtils.toDataHandler(((TextContent) content).getBlob());
+ return ((TextContent) content).getBlob();
} else {
throw new OMException("No DataHandler available");
}
@@ -150,7 +151,7 @@ public abstract class AxiomTextMixin implements AxiomText {
@Override
public final void buildWithAttachments() {
if (isOptimized()) {
- DataHandler dataHandler = getDataHandler();
+ DataHandler dataHandler = DataHandlerUtils.getDataHandler(getBlob());
if (dataHandler instanceof PartDataHandler) {
((PartDataHandler) dataHandler).getPart().fetch();
}
diff --git a/samples/src/test/java/org/apache/axiom/samples/MTOMSample.java b/samples/src/test/java/org/apache/axiom/samples/MTOMSample.java
index d67240a33..468153e69 100644
--- a/samples/src/test/java/org/apache/axiom/samples/MTOMSample.java
+++ b/samples/src/test/java/org/apache/axiom/samples/MTOMSample.java
@@ -23,15 +23,14 @@ import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
-import javax.activation.DataHandler;
import javax.xml.namespace.QName;
import javax.xml.ws.Endpoint;
import junit.framework.TestCase;
+import org.apache.axiom.blob.Blob;
import org.apache.axiom.mime.MultipartBody;
-import org.apache.axiom.mime.activation.PartDataHandlerBlobFactory;
-import org.apache.axiom.mime.activation.PartDataHandler;
+import org.apache.axiom.mime.PartBlob;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMOutputFormat;
@@ -69,15 +68,14 @@ public class MTOMSample extends TestCase {
MultipartBody multipartBody = MultipartBody.builder()
.setInputStream(in)
.setContentType(connection.getContentType())
- .setPartBlobFactory(PartDataHandlerBlobFactory.DEFAULT)
.build();
SOAPEnvelope response = OMXMLBuilderFactory.createSOAPModelBuilder(multipartBody).getSOAPEnvelope();
OMElement retrieveContentResponse = response.getBody().getFirstElement();
OMElement content = retrieveContentResponse.getFirstElement();
- // Extract the DataHandler representing the optimized binary data
- DataHandler dh = ((OMText)content.getFirstOMChild()).getDataHandler();
+ // Extract the Blob representing the optimized binary data
+ Blob blob = ((OMText)content.getFirstOMChild()).getBlob();
// Stream the content of the MIME part
- InputStream contentStream = ((PartDataHandler)dh).getPart().getInputStream(false);
+ InputStream contentStream = ((PartBlob)blob).getPart().getInputStream(false);
// Write the content to the result stream
IOUtils.copy(contentStream, result);
contentStream.close();
diff --git a/systests/compat-tests/pom.xml b/systests/compat-tests/pom.xml
deleted file mode 100644
index 278aaf793..000000000
--- a/systests/compat-tests/pom.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.ws.commons.axiom</groupId>
- <artifactId>systests</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>compat-tests</artifactId>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>axiom-impl</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>axiom-dom</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.synapse</groupId>
- <artifactId>synapse-core</artifactId>
- <version>3.0.1</version>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.apache.synapse</groupId>
- <artifactId>synapse-securevault</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.synapse</groupId>
- <artifactId>synapse-commons</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.synapse</groupId>
- <artifactId>synapse-tasks</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.synapse</groupId>
- <artifactId>synapse-nhttp-transport</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.wso2.eventing</groupId>
- <artifactId>wso2eventing-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.wso2.caching</groupId>
- <artifactId>wso2caching-core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.wso2.uri.template</groupId>
- <artifactId>wso2-uri-templates</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.axis2</groupId>
- <artifactId>axis2-adb</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.ws.commons.axiom</groupId>
- <artifactId>axiom-dom</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.neethi</groupId>
- <artifactId>neethi</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>testutils</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/systests/compat-tests/src/test/java/DataHandlerTest.java b/systests/compat-tests/src/test/java/DataHandlerTest.java
deleted file mode 100644
index 500d9aba8..000000000
--- a/systests/compat-tests/src/test/java/DataHandlerTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import static com.google.common.truth.Truth.assertThat;
-
-import javax.activation.DataHandler;
-
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.testutils.activation.TestDataSource;
-import org.apache.synapse.util.PayloadHelper;
-import org.junit.Test;
-
-public class DataHandlerTest {
- private void test(String feature) {
- DataHandler dh = new DataHandler(new TestDataSource('x', 1000));
- SOAPEnvelope envelope = OMAbstractFactory.getMetaFactory(feature).getSOAP11Factory().createDefaultSOAPMessage().getSOAPEnvelope();
- PayloadHelper.setBinaryPayload(envelope, dh);
- assertThat(PayloadHelper.getBinaryPayload(envelope)).isSameInstanceAs(dh);
- }
-
- @Test
- public void testLLOM() {
- test(OMAbstractFactory.FEATURE_DEFAULT);
- }
-
- @Test
- public void testDOOM() {
- test(OMAbstractFactory.FEATURE_DOM);
- }
-}
diff --git a/systests/old-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java b/systests/old-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
index e77470ef9..690e35249 100644
--- a/systests/old-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
+++ b/systests/old-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
@@ -20,6 +20,7 @@
package org.apache.axiom.om.impl.mtom;
import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.blob.Blob;
import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMOutputFormat;
@@ -29,8 +30,6 @@ import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.soap.SOAPModelBuilder;
import org.apache.axiom.ts.soap.MTOMSample;
-import javax.activation.DataHandler;
-
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -81,7 +80,7 @@ public class MTOMStAXSOAPModelBuilderTest extends TestCase {
Iterator childIt = data.getChildren();
OMElement child = (OMElement) childIt.next();
- OMText blob = (OMText) child.getFirstOMChild();
+ OMText blobNode = (OMText) child.getFirstOMChild();
/*
* Following is the procedure the user has to follow to read objects in
* OBBlob User has to know the object type & whether it is serializable.
@@ -90,8 +89,7 @@ public class MTOMStAXSOAPModelBuilderTest extends TestCase {
*/
byte[] expectedObject = new byte[] { 13, 56, 65, 32, 12, 12, 7, -3, -2,
-1, 98 };
- DataHandler actualDH;
- actualDH = blob.getDataHandler();
+ Blob actualBlob = blobNode.getBlob();
//ByteArrayInputStream object = (ByteArrayInputStream) actualDH
//.getContent();
//byte[] actualObject= null;
@@ -125,9 +123,9 @@ public class MTOMStAXSOAPModelBuilderTest extends TestCase {
// At this moment only the SOAP part should have been loaded
assertEquals(1, attachments.getContentIDList().size());
for (OMText node : binaryNodes) {
- // Request the DataHandler and do something with it to make sure
+ // Request the Blob and do something with it to make sure
// the part is loaded
- node.getDataHandler().getInputStream().close();
+ node.getBlob().getInputStream().close();
}
assertEquals(binaryNodes.size() + 1, attachments.getContentIDList().size());
}
diff --git a/systests/pom.xml b/systests/pom.xml
index d4ec578bc..690272fe0 100644
--- a/systests/pom.xml
+++ b/systests/pom.xml
@@ -32,7 +32,6 @@
<name>System Tests</name>
<modules>
- <module>compat-tests</module>
<module>cross-om-tests</module>
<module>eclipse-tests</module>
<module>jaxws-tests</module>
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestReadAttachmentBeforeRootPartComplete.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestReadAttachmentBeforeRootPartComplete.java
index bd14fb255..69fbfa815 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestReadAttachmentBeforeRootPartComplete.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestReadAttachmentBeforeRootPartComplete.java
@@ -23,6 +23,7 @@ import java.io.OutputStream;
import javax.activation.DataHandler;
import javax.activation.DataSource;
+import org.apache.axiom.blob.Blob;
import org.apache.axiom.blob.Blobs;
import org.apache.axiom.blob.MemoryBlob;
import org.apache.axiom.mime.MultipartBody;
@@ -77,8 +78,8 @@ public class TestReadAttachmentBeforeRootPartComplete extends AxiomTestCase {
// Serialize the message
OMOutputFormat format = new OMOutputFormat();
format.setDoOptimize(true);
- MemoryBlob blob = Blobs.createMemoryBlob();
- OutputStream out = blob.getOutputStream();
+ MemoryBlob xop = Blobs.createMemoryBlob();
+ OutputStream out = xop.getOutputStream();
orgRoot.serialize(out, format);
out.close();
@@ -88,16 +89,16 @@ public class TestReadAttachmentBeforeRootPartComplete extends AxiomTestCase {
factory,
StAXParserConfiguration.NON_COALESCING,
MultipartBody.builder()
- .setInputStream(blob.getInputStream())
+ .setInputStream(xop.getInputStream())
.setContentType(format.getContentType())
.build());
OMElement root = builder.getDocumentElement();
OMElement child1 = (OMElement) root.getFirstOMChild();
OMText text = (OMText) child1.getFirstOMChild();
assertTrue(text.isBinary());
- // Access the DataHandler
- DataHandler dh = text.getDataHandler();
- IOTestUtils.compareStreams(ds.getInputStream(), dh.getInputStream());
+ // Access the Blob
+ Blob blob = text.getBlob();
+ IOTestUtils.compareStreams(ds.getInputStream(), blob.getInputStream());
OMElement child2 = (OMElement) child1.getNextOMSibling();
assertFalse(child2.isComplete());
assertEquals(s, child2.getText());
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMTextFromBlobProvider.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMTextFromBlobProvider.java
index a38ddbb62..47940e9ad 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMTextFromBlobProvider.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMTextFromBlobProvider.java
@@ -63,7 +63,7 @@ public class TestCreateOMTextFromBlobProvider extends AxiomTestCase {
String contentID = nullContentID ? null : UIDGenerator.generateContentId();
OMText text = factory.createOMText(contentID, prov, true);
assertFalse(prov.isBlobCreated());
- assertEquals(text.getDataHandler().getContent(), "Data");
+ assertEquals(DataHandlerUtils.toDataHandler(text.getBlob()).getContent(), "Data");
assertTrue(prov.isBlobCreated());
if (contentID == null) {
assertThat(text.getContentID()).isNotNull();
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerExpansion.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerExpansion.java
index 136ebb1e3..864e26ab2 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerExpansion.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerExpansion.java
@@ -29,6 +29,7 @@ import org.apache.axiom.om.OMText;
import org.apache.axiom.om.ds.jaxb.JAXBOMDataSource;
import org.apache.axiom.ts.AxiomTestCase;
import org.apache.axiom.ts.jaxb.beans.DocumentBean;
+import org.apache.axiom.util.activation.DataHandlerUtils;
/**
* Tests the expansion of an {@link OMSourcedElement} backed by a {@link JAXBOMDataSource} with a
@@ -57,6 +58,6 @@ public class TestDataHandlerExpansion extends AxiomTestCase {
OMText content = (OMText) child.getFirstOMChild();
assertTrue(content.isBinary());
assertTrue(content.isOptimized());
- assertSame(dh, content.getDataHandler());
+ assertSame(dh, DataHandlerUtils.toDataHandler(content.getBlob()));
}
}
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerSerializationWithMTOM.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerSerializationWithMTOM.java
index cc8221228..bc69c1efc 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerSerializationWithMTOM.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/jaxb/TestDataHandlerSerializationWithMTOM.java
@@ -24,6 +24,7 @@ import javax.activation.DataHandler;
import javax.xml.bind.JAXBContext;
import javax.xml.namespace.QName;
+import org.apache.axiom.blob.Blob;
import org.apache.axiom.blob.Blobs;
import org.apache.axiom.blob.MemoryBlob;
import org.apache.axiom.mime.MultipartBody;
@@ -66,8 +67,8 @@ public class TestDataHandlerSerializationWithMTOM extends AxiomTestCase {
// Serialize the message
OMOutputFormat format = new OMOutputFormat();
format.setDoOptimize(true);
- MemoryBlob blob = Blobs.createMemoryBlob();
- OutputStream out = blob.getOutputStream();
+ MemoryBlob mtom = Blobs.createMemoryBlob();
+ OutputStream out = mtom.getOutputStream();
orgEnvelope.serialize(out, format);
out.close();
assertFalse(element.isExpanded());
@@ -75,7 +76,7 @@ public class TestDataHandlerSerializationWithMTOM extends AxiomTestCase {
// Parse the serialized message
MultipartBody mb =
MultipartBody.builder()
- .setInputStream(blob.getInputStream())
+ .setInputStream(mtom.getInputStream())
.setContentType(format.getContentType())
.build();
assertEquals(2, mb.getPartCount());
@@ -89,7 +90,7 @@ public class TestDataHandlerSerializationWithMTOM extends AxiomTestCase {
OMText content = (OMText) contentElement.getFirstOMChild();
assertTrue(content.isBinary());
assertTrue(content.isOptimized());
- DataHandler dh = content.getDataHandler();
- assertEquals("some content", IOUtils.toString(dh.getInputStream(), "utf-8"));
+ Blob blob = content.getBlob();
+ assertEquals("some content", IOUtils.toString(blob.getInputStream(), "utf-8"));
}
}
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobProviderScenario.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobProviderScenario.java
index 170adb229..82c4384a2 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobProviderScenario.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobProviderScenario.java
@@ -78,11 +78,12 @@ public class WriteBlobProviderScenario implements PushOMDataSourceScenario {
OMText child = (OMText) element.getFirstOMChild();
if (dataHandlersPreserved) {
Assert.assertTrue(child.isBinary());
- Assert.assertSame(dh, child.getDataHandler());
+ Assert.assertSame(dh, DataHandlerUtils.toDataHandler(child.getBlob()));
} else {
child.setBinary(true);
IOTestUtils.compareStreams(
- dh.getInputStream(), child.getDataHandler().getInputStream());
+ dh.getInputStream(),
+ DataHandlerUtils.toDataHandler(child.getBlob()).getInputStream());
}
}
}
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobScenario.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobScenario.java
index 978b3aab2..9e3f78a90 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobScenario.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/WriteBlobScenario.java
@@ -69,12 +69,13 @@ public class WriteBlobScenario implements PushOMDataSourceScenario {
OMText child = (OMText) element.getFirstOMChild();
if (dataHandlersPreserved) {
Assert.assertTrue(child.isBinary());
- Assert.assertSame(dh, child.getDataHandler());
+ Assert.assertSame(dh, DataHandlerUtils.toDataHandler(child.getBlob()));
} else {
// TODO: this will only work if a single text node was created
child.setBinary(true);
IOTestUtils.compareStreams(
- dh.getInputStream(), child.getDataHandler().getInputStream());
+ dh.getInputStream(),
+ DataHandlerUtils.toDataHandler(child.getBlob()).getInputStream());
}
}
}
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/TestCloneBinary.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/TestCloneBinary.java
index 2f42d569c..5d6653022 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/TestCloneBinary.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/TestCloneBinary.java
@@ -30,6 +30,7 @@ import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.testutils.activation.RandomDataSource;
import org.apache.axiom.ts.AxiomTestCase;
+import org.apache.axiom.util.activation.DataHandlerUtils;
public class TestCloneBinary extends AxiomTestCase {
private boolean fetch;
@@ -60,6 +61,6 @@ public class TestCloneBinary extends AxiomTestCase {
OMText clone = (OMText) text.clone(options);
assertTrue(clone.isBinary());
assertEquals(fetch, attachmentAccessor.isLoaded());
- assertSame(dh, clone.getDataHandler());
+ assertSame(dh, DataHandlerUtils.toDataHandler(clone.getBlob()));
}
}
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/xop/XOPRoundtripTest.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/xop/XOPRoundtripTest.java
index 8a313ab98..ec933368d 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/xop/XOPRoundtripTest.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/xop/XOPRoundtripTest.java
@@ -31,6 +31,7 @@ import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.om.XOPEncoded;
import org.apache.axiom.testutils.activation.TestDataSource;
import org.apache.axiom.ts.AxiomTestCase;
+import org.apache.axiom.util.activation.DataHandlerUtils;
public class XOPRoundtripTest extends AxiomTestCase {
public XOPRoundtripTest(OMMetaFactory metaFactory) {
@@ -54,6 +55,6 @@ public class XOPRoundtripTest extends AxiomTestCase {
assertNotNull(child);
assertTrue(child.isBinary());
assertTrue(child.isOptimized());
- assertSame(dh, child.getDataHandler());
+ assertSame(dh, DataHandlerUtils.toDataHandler(child.getBlob()));
}
}
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestBuildWithAttachments.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestBuildWithAttachments.java
index 2cb5103cf..52c96b742 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestBuildWithAttachments.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestBuildWithAttachments.java
@@ -56,11 +56,9 @@ public class TestBuildWithAttachments extends AxiomTestCase {
OMElement image2 = it.next();
IOTestUtils.compareStreams(
- ((OMText) image1.getFirstOMChild()).getDataHandler().getInputStream(),
- sample.getPart(1));
+ ((OMText) image1.getFirstOMChild()).getBlob().getInputStream(), sample.getPart(1));
IOTestUtils.compareStreams(
- ((OMText) image2.getFirstOMChild()).getDataHandler().getInputStream(),
- sample.getPart(2));
+ ((OMText) image2.getFirstOMChild()).getBlob().getInputStream(), sample.getPart(2));
}
}
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestMTOMForwardStreaming.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestMTOMForwardStreaming.java
index 58777bc82..25e41df4d 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestMTOMForwardStreaming.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/envelope/TestMTOMForwardStreaming.java
@@ -39,6 +39,7 @@ import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.testutils.activation.TestDataSource;
import org.apache.axiom.testutils.io.IOTestUtils;
import org.apache.axiom.ts.AxiomTestCase;
+import org.apache.axiom.util.activation.DataHandlerUtils;
/**
* Tests that attachments are streamed (i.e. not read entirely into memory) if the original message
@@ -150,12 +151,16 @@ public class TestMTOMForwardStreaming extends AxiomTestCase {
IOTestUtils.compareStreams(
ds1.getInputStream(),
- ((PartDataHandler) ((OMText) data1.getFirstOMChild()).getDataHandler())
+ ((PartDataHandler)
+ DataHandlerUtils.toDataHandler(
+ ((OMText) data1.getFirstOMChild()).getBlob()))
.getPart()
.getInputStream(false));
IOTestUtils.compareStreams(
ds2.getInputStream(),
- ((PartDataHandler) ((OMText) data2.getFirstOMChild()).getDataHandler())
+ ((PartDataHandler)
+ DataHandlerUtils.toDataHandler(
+ ((OMText) data2.getFirstOMChild()).getBlob()))
.getPart()
.getInputStream(false));
} finally {
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestBuilderDetach.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestBuilderDetach.java
index a9a06b0b5..78b42d6cb 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestBuilderDetach.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestBuilderDetach.java
@@ -61,8 +61,7 @@ public class TestBuilderDetach extends AxiomTestCase {
OMText text = (OMText) node;
if (text.isBinary()) {
IOTestUtils.compareStreams(
- sample.getPart(text.getContentID()),
- text.getDataHandler().getInputStream());
+ sample.getPart(text.getContentID()), text.getBlob().getInputStream());
binaryCount++;
}
}