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 07b42d42b [AXIOM-506] Migrate MTOMXMLStreamWriter to Blob 07b42d42b is described below commit 07b42d42bc0ddc1fe57bf4f1a90ad07c63edba70 Author: Andreas Veithen <andreas.veit...@gmail.com> AuthorDate: Mon Nov 7 20:48:56 2022 +0000 [AXIOM-506] Migrate MTOMXMLStreamWriter to Blob --- axiom-api/pom.xml | 1 - .../main/java/org/apache/axiom/om/OMDataSource.java | 3 +-- .../org/apache/axiom/om/impl/MTOMXMLStreamWriter.java | 13 ++++++------- .../axiom/om/ds/jaxb/AttachmentMarshallerImpl.java | 3 ++- .../om/impl/stream/ds/MTOMXMLStreamWriterImpl.java | 6 +++--- .../om/impl/stream/ds/PushOMDataSourceXOPHandler.java | 18 ++++++++---------- .../om/impl/stream/xop/XOPEncodingFilterHandler.java | 8 +++----- .../apache/axiom/om/impl/stream/xop/XOPHandler.java | 4 ++-- 8 files changed, 25 insertions(+), 31 deletions(-) diff --git a/axiom-api/pom.xml b/axiom-api/pom.xml index 3d278f885..e44b51d69 100644 --- a/axiom-api/pom.xml +++ b/axiom-api/pom.xml @@ -290,7 +290,6 @@ org.apache.axiom.util.base64.Base64Utils -> org.apache.axiom.util.activation.DataSourceUtils, org.apache.axiom.util.base64.Base64Utils -> javax.activation.DataSource, org.apache.axiom.util.base64.Base64Utils -> javax.activation.DataHandler, - org.apache.axiom.om.impl.MTOMXMLStreamWriter -> javax.activation.DataHandler, <!-- o.a.a.soap should be a layer on top of o.a.a.om --> org.apache.axiom.om.OMAbstractFactory -> org.apache.axiom.soap.SOAPFactory, org.apache.axiom.om.OMMetaFactory -> org.apache.axiom.soap.SOAPFactory, diff --git a/axiom-api/src/main/java/org/apache/axiom/om/OMDataSource.java b/axiom-api/src/main/java/org/apache/axiom/om/OMDataSource.java index 50e353262..751e31e75 100644 --- a/axiom-api/src/main/java/org/apache/axiom/om/OMDataSource.java +++ b/axiom-api/src/main/java/org/apache/axiom/om/OMDataSource.java @@ -22,7 +22,6 @@ */ package org.apache.axiom.om; -import javax.activation.DataHandler; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; @@ -130,7 +129,7 @@ public interface OMDataSource { * utility methods) to write the data to the stream. This is the preferred approach, unless the * content is produced by a third party library that is not aware of these APIs. * <li>Cast the {@link XMLStreamWriter} to an {@link MTOMXMLStreamWriter}, use - * {@link MTOMXMLStreamWriter#prepareDataHandler(DataHandler)} and generate the + * {@link MTOMXMLStreamWriter#prepareBlob(Blob)} and generate the * necessary {@code xop:Include} elements. In this case, the implementation MAY use * {@link MTOMXMLStreamWriter#isOptimized()} to check if XOP/MTOM is enabled at all. * </ul> diff --git a/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java b/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java index a7bd1cf27..ea1140495 100644 --- a/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java +++ b/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java @@ -21,7 +21,6 @@ package org.apache.axiom.om.impl; import java.io.OutputStream; -import javax.activation.DataHandler; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; @@ -51,7 +50,7 @@ public abstract class MTOMXMLStreamWriter implements XMLStreamWriter { * entirely transparent for the caller and there should be no need to check if the writer is * producing MTOM. However, in some cases this is not possible, such as when integrating with * 3rd party libraries. The serialization code should then use - * {@link #prepareDataHandler(DataHandler)} so that it can write {@code xop:Include} elements + * {@link #prepareBlob(Blob)} so that it can write {@code xop:Include} elements * directly to the stream. In that case, the code may use the {@link #isOptimized()} method * check if MTOM is enabled at all. * @@ -60,9 +59,9 @@ public abstract class MTOMXMLStreamWriter implements XMLStreamWriter { public abstract boolean isOptimized(); /** - * Prepare a {@link DataHandler} for serialization without using the {@link BlobWriter} + * Prepare a {@link Blob} for serialization without using the {@link BlobWriter} * API. The method first determines whether the binary data represented by the - * {@link DataHandler} should be optimized or inlined. If the data should not be optimized, then + * {@link Blob} should be optimized or inlined. If the data should not be optimized, then * the method returns <code>null</code> and the caller is expected to use * {@link #writeCharacters(String)} or {@link #writeCharacters(char[], int, int)} to write the * base64 encoded data to the stream. If the data should be optimized, then the method returns a @@ -77,12 +76,12 @@ public abstract class MTOMXMLStreamWriter implements XMLStreamWriter { * should be used to write base64Binary values and the application code should never generate * {@code xop:Include} elements itself. * - * @param dataHandler - * the {@link DataHandler} that the caller intends to write to the stream + * @param blob + * the {@link Blob} that the caller intends to write to the stream * @return the content ID that the caller must use in the {@code xop:Include} element or * <code>null</code> if the base64 encoded data should not be optimized */ - public abstract String prepareDataHandler(DataHandler dataHandler); + public abstract String prepareBlob(Blob blob); /** * Returns the character set encoding scheme. If the value of the charSetEncoding is not set diff --git a/axiom-jaxb/src/main/java/org/apache/axiom/om/ds/jaxb/AttachmentMarshallerImpl.java b/axiom-jaxb/src/main/java/org/apache/axiom/om/ds/jaxb/AttachmentMarshallerImpl.java index cf63dca35..98a8521a7 100644 --- a/axiom-jaxb/src/main/java/org/apache/axiom/om/ds/jaxb/AttachmentMarshallerImpl.java +++ b/axiom-jaxb/src/main/java/org/apache/axiom/om/ds/jaxb/AttachmentMarshallerImpl.java @@ -24,6 +24,7 @@ import javax.xml.bind.attachment.AttachmentMarshaller; import org.apache.axiom.blob.Blobs; import org.apache.axiom.om.impl.MTOMXMLStreamWriter; import org.apache.axiom.util.activation.BlobDataSource; +import org.apache.axiom.util.activation.DataHandlerUtils; final class AttachmentMarshallerImpl extends AttachmentMarshaller { private final MTOMXMLStreamWriter out; @@ -40,7 +41,7 @@ final class AttachmentMarshallerImpl extends AttachmentMarshaller { @Override public String addMtomAttachment(DataHandler data, String elementNamespace, String elementLocalName) { - return "cid:" + out.prepareDataHandler(data); + return "cid:" + out.prepareBlob(DataHandlerUtils.toBlob(data)); } @Override diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/MTOMXMLStreamWriterImpl.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/MTOMXMLStreamWriterImpl.java index 9b3ea1075..7f4bf293a 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/MTOMXMLStreamWriterImpl.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/MTOMXMLStreamWriterImpl.java @@ -21,11 +21,11 @@ package org.apache.axiom.om.impl.stream.ds; import java.io.OutputStream; -import javax.activation.DataHandler; import javax.xml.namespace.NamespaceContext; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; +import org.apache.axiom.blob.Blob; import org.apache.axiom.core.stream.DocumentElementExtractingFilterHandler; import org.apache.axiom.core.stream.NamespaceRepairingFilterHandler; import org.apache.axiom.core.stream.StreamException; @@ -249,11 +249,11 @@ final class MTOMXMLStreamWriterImpl extends MTOMXMLStreamWriter { } @Override - public String prepareDataHandler(DataHandler dataHandler) { + public String prepareBlob(Blob blob) { XmlHandler handler = getHandler(); while (handler instanceof XmlHandlerWrapper) { if (handler instanceof XOPHandler) { - return ((XOPHandler) handler).prepareDataHandler(dataHandler); + return ((XOPHandler) handler).prepareBlob(blob); } handler = ((XmlHandlerWrapper) handler).getParent(); } diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/PushOMDataSourceXOPHandler.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/PushOMDataSourceXOPHandler.java index 980d249b8..6580b7759 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/PushOMDataSourceXOPHandler.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/ds/PushOMDataSourceXOPHandler.java @@ -21,37 +21,35 @@ package org.apache.axiom.om.impl.stream.ds; import java.util.HashMap; import java.util.Map; -import javax.activation.DataHandler; - +import org.apache.axiom.blob.Blob; import org.apache.axiom.core.stream.StreamException; import org.apache.axiom.core.stream.XmlHandler; import org.apache.axiom.core.stream.xop.AbstractXOPDecodingFilterHandler; import org.apache.axiom.om.impl.intf.TextContent; import org.apache.axiom.om.impl.stream.xop.XOPHandler; import org.apache.axiom.util.UIDGenerator; -import org.apache.axiom.util.activation.DataHandlerUtils; final class PushOMDataSourceXOPHandler extends AbstractXOPDecodingFilterHandler implements XOPHandler { - private final Map<String, DataHandler> dataHandlers = new HashMap<String, DataHandler>(); + private final Map<String, Blob> blobs = new HashMap<>(); PushOMDataSourceXOPHandler(XmlHandler parent) { super(parent); } @Override - public String prepareDataHandler(DataHandler dataHandler) { + public String prepareBlob(Blob blob) { String contentID = UIDGenerator.generateContentId(); - dataHandlers.put(contentID, dataHandler); + blobs.put(contentID, blob); return contentID; } @Override protected Object buildCharacterData(String contentID) throws StreamException { - DataHandler dataHandler = dataHandlers.get(contentID); - if (dataHandler == null) { - throw new StreamException("No DataHandler found for content ID " + contentID); + Blob blob = blobs.get(contentID); + if (blob == null) { + throw new StreamException("No Blob found for content ID " + contentID); } - return new TextContent(contentID, DataHandlerUtils.toBlob(dataHandler), true); + return new TextContent(contentID, blob, true); } } diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java index 14f0c305c..00826519b 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java @@ -24,8 +24,6 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; -import javax.activation.DataHandler; - import org.apache.axiom.blob.Blob; import org.apache.axiom.core.stream.StreamException; import org.apache.axiom.core.stream.XmlHandler; @@ -52,16 +50,16 @@ public final class XOPEncodingFilterHandler extends AbstractXOPEncodingFilterHan } @Override - public String prepareDataHandler(DataHandler dataHandler) { + public String prepareBlob(Blob blob) { boolean doOptimize; try { - doOptimize = optimizationPolicy.isOptimized(dataHandler, true); + doOptimize = optimizationPolicy.isOptimized(DataHandlerUtils.toDataHandler(blob), true); } catch (IOException ex) { doOptimize = true; } if (doOptimize) { String contentID = contentIDGenerator.generateContentID(null); - blobObjects.put(contentID, DataHandlerUtils.toBlob(dataHandler)); + blobObjects.put(contentID, blob); return contentID; } else { return null; diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPHandler.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPHandler.java index 6d9c41a98..e85ccd4b2 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPHandler.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPHandler.java @@ -18,8 +18,8 @@ */ package org.apache.axiom.om.impl.stream.xop; -import javax.activation.DataHandler; +import org.apache.axiom.blob.Blob; public interface XOPHandler { - String prepareDataHandler(DataHandler dataHandler); + String prepareBlob(Blob blob); }