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/07 20:49:05 UTC
[ws-axiom] branch master updated: [AXIOM-506] Migrate MTOMXMLStreamWriter to Blob
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 <an...@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);
}