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 69f5b3b18 [AXIOM-506] Migrate OptimizationPolicy to Blob 69f5b3b18 is described below commit 69f5b3b1800a0eb65f9c8118401cac84ceedab0b Author: Andreas Veithen <andreas.veit...@gmail.com> AuthorDate: Sat Nov 12 16:25:34 2022 +0000 [AXIOM-506] Migrate OptimizationPolicy to Blob --- .../om/impl/stream/xop/OptimizationPolicy.java | 27 ++++++++++------------ .../om/impl/stream/xop/OptimizationPolicyImpl.java | 9 ++++---- .../impl/stream/xop/XOPEncodingFilterHandler.java | 6 ++--- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicy.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicy.java index 0b6778a8a..5bb807485 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicy.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicy.java @@ -21,8 +21,7 @@ package org.apache.axiom.om.impl.stream.xop; import java.io.IOException; -import javax.activation.DataHandler; - +import org.apache.axiom.blob.Blob; import org.apache.axiom.ext.stax.BlobProvider; /** @@ -30,9 +29,8 @@ import org.apache.axiom.ext.stax.BlobProvider; * using XOP. The implementation takes the decision based on the submitted binary content and the * "eligible for optimization" flag. Depending on the context of use, this flag is provided by the * return value of {@link org.apache.axiom.ext.stax.BlobReader#isOptimized()} or the <code>optimize - * </code> argument of {@link org.apache.axiom.ext.stax.BlobWriter#writeBlob(DataHandler, String, - * boolean)} or {@link org.apache.axiom.ext.stax.BlobWriter#writeBlob(BlobProvider, String, - * boolean)}. + * </code> argument of {@link org.apache.axiom.ext.stax.BlobWriter#writeBlob(Blob, String, boolean)} + * or {@link org.apache.axiom.ext.stax.BlobWriter#writeBlob(BlobProvider, String, boolean)}. */ public interface OptimizationPolicy { /** @@ -41,12 +39,12 @@ public interface OptimizationPolicy { OptimizationPolicy DEFAULT = new OptimizationPolicy() { @Override - public boolean isOptimized(DataHandler dataHandler, boolean optimize) { + public boolean isOptimized(Blob blob, boolean optimize) { return optimize; } @Override - public boolean isOptimized(BlobProvider dataHandlerProvider, boolean optimize) { + public boolean isOptimized(BlobProvider blobProvider, boolean optimize) { return optimize; } }; @@ -58,28 +56,27 @@ public interface OptimizationPolicy { OptimizationPolicy ALL = new OptimizationPolicy() { @Override - public boolean isOptimized(DataHandler dataHandler, boolean optimize) { + public boolean isOptimized(Blob blob, boolean optimize) { return true; } @Override - public boolean isOptimized(BlobProvider dataHandlerProvider, boolean optimize) { + public boolean isOptimized(BlobProvider blobProvider, boolean optimize) { return true; } }; /** - * Determine whether the binary content supplied by a given {@link DataHandler} should be - * optimized. + * Determine whether the binary content supplied by a given {@link Blob} should be optimized. * - * @param dataHandler the binary content + * @param blob the binary content * @param optimize indicates whether the binary content was initially marked as eligible for * optimization (see above) * @return <code>true</code> if the binary content should be optimized using XOP, i.e. encoded * using {@code xop:Include} - * @throws IOException if an error occurs while reading the data handler + * @throws IOException if an error occurs while reading the blob */ - boolean isOptimized(DataHandler dataHandler, boolean optimize) throws IOException; + boolean isOptimized(Blob blob, boolean optimize) throws IOException; /** * Determine whether the binary content supplied by a given {@link BlobProvider} should be @@ -90,7 +87,7 @@ public interface OptimizationPolicy { * optimization (see above) * @return <code>true</code> if the binary content should be optimized using XOP, i.e. encoded * using {@code xop:Include} - * @throws IOException if an error occurs while reading the data handler + * @throws IOException if an error occurs while reading the blob */ boolean isOptimized(BlobProvider blobProvider, boolean optimize) throws IOException; } diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicyImpl.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicyImpl.java index e2e79f01f..246d21e82 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicyImpl.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/OptimizationPolicyImpl.java @@ -21,8 +21,7 @@ package org.apache.axiom.om.impl.stream.xop; import java.io.IOException; -import javax.activation.DataHandler; - +import org.apache.axiom.blob.Blob; import org.apache.axiom.ext.stax.BlobProvider; import org.apache.axiom.om.OMOutputFormat; import org.apache.axiom.util.activation.DataHandlerUtils; @@ -45,7 +44,7 @@ public final class OptimizationPolicyImpl implements OptimizationPolicy { } @Override - public boolean isOptimized(DataHandler dataHandler, boolean optimize) { + public boolean isOptimized(Blob blob, boolean optimize) { if (!optimize) { return false; } @@ -54,7 +53,7 @@ public final class OptimizationPolicyImpl implements OptimizationPolicy { return true; } try { - return DataHandlerUtils.isLargerThan(dataHandler, threshold); + return DataHandlerUtils.isLargerThan(DataHandlerUtils.toDataHandler(blob), threshold); } catch (IOException ex) { log.warn("DataHandler.writeTo(OutputStream) threw IOException", ex); return true; @@ -71,7 +70,7 @@ public final class OptimizationPolicyImpl implements OptimizationPolicy { // DataHandlerProvider#getDataHandler(), which would force loading the data handler. return true; } else { - return isOptimized(DataHandlerUtils.toDataHandler(blobProvider.getBlob()), optimize); + return isOptimized(blobProvider.getBlob(), optimize); } } } 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 00826519b..8d42f9064 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 @@ -32,7 +32,6 @@ import org.apache.axiom.ext.stax.BlobProvider; import org.apache.axiom.om.OMAttachmentAccessor; import org.apache.axiom.om.OMException; import org.apache.axiom.om.impl.intf.TextContent; -import org.apache.axiom.util.activation.DataHandlerUtils; public final class XOPEncodingFilterHandler extends AbstractXOPEncodingFilterHandler implements XOPHandler, OMAttachmentAccessor { @@ -53,7 +52,7 @@ public final class XOPEncodingFilterHandler extends AbstractXOPEncodingFilterHan public String prepareBlob(Blob blob) { boolean doOptimize; try { - doOptimize = optimizationPolicy.isOptimized(DataHandlerUtils.toDataHandler(blob), true); + doOptimize = optimizationPolicy.isOptimized(blob, true); } catch (IOException ex) { doOptimize = true; } @@ -109,8 +108,7 @@ public final class XOPEncodingFilterHandler extends AbstractXOPEncodingFilterHan } else { optimize = optimizationPolicy.isOptimized( - DataHandlerUtils.toDataHandler((Blob) blobObject), - textContent.isOptimize()); + (Blob) blobObject, textContent.isOptimize()); } } catch (IOException ex) { throw new StreamException(ex);