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 722603ac3 [AXIOM-506] Migrate OMAttachmentAccessor to Blob 722603ac3 is described below commit 722603ac367d6d4ebbbb80397f1494bcb6584a76 Author: Andreas Veithen <andreas.veit...@gmail.com> AuthorDate: Sun Nov 6 00:32:02 2022 +0000 [AXIOM-506] Migrate OMAttachmentAccessor to Blob --- .../org/apache/axiom/attachments/Attachments.java | 9 +++- .../org/apache/axiom/om/OMAttachmentAccessor.java | 8 ++-- .../impl/builder/AttachmentsMimePartProvider.java | 50 ---------------------- .../om/util/jaxb/AttachmentUnmarshallerImpl.java | 8 ++-- .../om/impl/common/factory/meta/BuilderSpec.java | 9 ++-- .../axiom/om/impl/mixin/AxiomContainerMixin.java | 3 +- .../impl/stream/xop/XOPDecodingFilterHandler.java | 9 ++-- .../impl/stream/xop/XOPEncodingFilterHandler.java | 6 +-- .../axiom/ts/om/text/DummyAttachmentAccessor.java | 6 ++- .../mtom/TestGetXMLStreamReaderMTOMEncoded.java | 12 +++--- 10 files changed, 38 insertions(+), 82 deletions(-) diff --git a/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java b/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java index a229af96c..db40cc704 100644 --- a/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java +++ b/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java @@ -22,6 +22,7 @@ package org.apache.axiom.attachments; import org.apache.axiom.attachments.lifecycle.DataHandlerExt; import org.apache.axiom.attachments.lifecycle.LifecycleManager; import org.apache.axiom.attachments.lifecycle.impl.LifecycleManagerImpl; +import org.apache.axiom.blob.Blob; import org.apache.axiom.blob.Blobs; import org.apache.axiom.blob.MemoryBlob; import org.apache.axiom.blob.WritableBlob; @@ -32,6 +33,7 @@ import org.apache.axiom.mime.MultipartBody; import org.apache.axiom.om.OMAttachmentAccessor; import org.apache.axiom.om.OMException; import org.apache.axiom.om.impl.MTOMConstants; +import org.apache.axiom.util.activation.DataHandlerUtils; import javax.activation.DataHandler; import javax.activation.DataSource; @@ -221,7 +223,6 @@ public class Attachments implements OMAttachmentAccessor { * @return the {@link DataHandler} of the MIME part referred by the content ID or * <code>null</code> if the MIME part referred by the content ID does not exist */ - @Override public DataHandler getDataHandler(String contentID) { return delegate.getDataHandler(contentID); } @@ -409,4 +410,10 @@ public class Attachments implements OMAttachmentAccessor { public MultipartBody getMultipartBody() { return delegate.getMultipartBody(); } + + @Override + public Blob getBlob(String contentID) { + DataHandler dh = getDataHandler(contentID); + return dh == null ? null : DataHandlerUtils.toBlob(dh); + } } \ No newline at end of file diff --git a/axiom-api/src/main/java/org/apache/axiom/om/OMAttachmentAccessor.java b/axiom-api/src/main/java/org/apache/axiom/om/OMAttachmentAccessor.java index e1dd059f1..1452d72f4 100644 --- a/axiom-api/src/main/java/org/apache/axiom/om/OMAttachmentAccessor.java +++ b/axiom-api/src/main/java/org/apache/axiom/om/OMAttachmentAccessor.java @@ -18,20 +18,20 @@ */ package org.apache.axiom.om; -import javax.activation.DataHandler; +import org.apache.axiom.blob.Blob; /** * Interface to look up MIME parts. */ public interface OMAttachmentAccessor { /** - * Get the {@link DataHandler} for the MIME part identified by a given content ID. + * Get the content of the MIME part identified by a given content ID. * * @param contentID * the raw content ID (without the surrounding angle brackets and {@code cid:} * prefix) of the MIME part - * @return the {@link DataHandler} of the MIME part referred by the content ID or + * @return the content of the MIME part referred by the content ID or * <code>null</code> if the MIME part referred by the content ID does not exist */ - public DataHandler getDataHandler(String contentID); + public Blob getBlob(String contentID); } diff --git a/axiom-compat/src/main/java/org/apache/axiom/om/impl/builder/AttachmentsMimePartProvider.java b/axiom-compat/src/main/java/org/apache/axiom/om/impl/builder/AttachmentsMimePartProvider.java deleted file mode 100644 index 970817cea..000000000 --- a/axiom-compat/src/main/java/org/apache/axiom/om/impl/builder/AttachmentsMimePartProvider.java +++ /dev/null @@ -1,50 +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.builder; - -import java.io.IOException; - -import javax.activation.DataHandler; - -import org.apache.axiom.attachments.Attachments; -import org.apache.axiom.util.stax.xop.MimePartProvider; - -/** - * Adapts an {@link Attachments} instance to the {@link MimePartProvider} interface. - * <p> - * For internal use only. - */ -public class AttachmentsMimePartProvider implements MimePartProvider { - private final Attachments attachments; - - public AttachmentsMimePartProvider(Attachments attachments) { - this.attachments = attachments; - } - - @Override - public DataHandler getDataHandler(String contentID) throws IOException { - DataHandler dh = attachments.getDataHandler(contentID); - if (dh == null) { - throw new IllegalArgumentException("No attachment found for content ID '" + contentID + "'"); - } else { - return dh; - } - } -} diff --git a/axiom-jaxb/src/main/java/org/apache/axiom/om/util/jaxb/AttachmentUnmarshallerImpl.java b/axiom-jaxb/src/main/java/org/apache/axiom/om/util/jaxb/AttachmentUnmarshallerImpl.java index ad6e4aafe..f401c98d9 100644 --- a/axiom-jaxb/src/main/java/org/apache/axiom/om/util/jaxb/AttachmentUnmarshallerImpl.java +++ b/axiom-jaxb/src/main/java/org/apache/axiom/om/util/jaxb/AttachmentUnmarshallerImpl.java @@ -24,7 +24,9 @@ import java.net.URLDecoder; import javax.activation.DataHandler; import javax.xml.bind.attachment.AttachmentUnmarshaller; +import org.apache.axiom.blob.Blob; import org.apache.axiom.om.OMAttachmentAccessor; +import org.apache.axiom.util.activation.DataHandlerUtils; final class AttachmentUnmarshallerImpl extends AttachmentUnmarshaller { private final OMAttachmentAccessor attachmentAccessor; @@ -63,11 +65,11 @@ final class AttachmentUnmarshallerImpl extends AttachmentUnmarshaller { @Override public DataHandler getAttachmentAsDataHandler(String cid) { - DataHandler dh = attachmentAccessor.getDataHandler(getContentIDFromURL(cid)); - if (dh == null) { + Blob blob = attachmentAccessor.getBlob(getContentIDFromURL(cid)); + if (blob == null) { throw new IllegalArgumentException("No MIME part found for content ID '" + cid + "'"); } else { - return dh; + return DataHandlerUtils.toDataHandler(blob); } } diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java index 4a18e5703..a521da6c9 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java @@ -24,7 +24,6 @@ import java.io.InputStream; import java.io.Reader; import java.net.URL; -import javax.activation.DataHandler; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.transform.Source; @@ -33,6 +32,7 @@ import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stax.StAXSource; import javax.xml.transform.stream.StreamSource; +import org.apache.axiom.blob.Blob; import org.apache.axiom.core.stream.FilteredXmlInput; import org.apache.axiom.core.stream.NamespaceRepairingFilter; import org.apache.axiom.core.stream.XmlInput; @@ -48,7 +48,6 @@ import org.apache.axiom.om.impl.stream.stax.pull.AxiomXMLStreamReaderHelperFacto import org.apache.axiom.om.impl.stream.xop.XOPDecodingFilter; import org.apache.axiom.om.util.StAXParserConfiguration; import org.apache.axiom.om.util.StAXUtils; -import org.apache.axiom.util.activation.DataHandlerUtils; import org.apache.axiom.util.stax.XMLFragmentStreamReader; import org.apache.axiom.util.xml.stream.XMLEventUtils; import org.w3c.dom.Node; @@ -220,11 +219,9 @@ public final class BuilderSpec { new XOPDecodingFilter( new OMAttachmentAccessor() { @Override - public DataHandler getDataHandler(String contentID) { + public Blob getBlob(String contentID) { Part part = message.getPart(contentID); - return part == null - ? null - : DataHandlerUtils.toDataHandler(part.getBlob()); + return part == null ? null : part.getBlob(); } })), new Detachable() { diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerMixin.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerMixin.java index 944e10faf..b504279a9 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerMixin.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerMixin.java @@ -386,7 +386,8 @@ public abstract class AxiomContainerMixin implements AxiomContainer { if (encoder != null) { rootPartOutputStream.close(); for (String contentID : encoder.getContentIDs()) { - DataHandler dataHandler = encoder.getDataHandler(contentID); + DataHandler dataHandler = + DataHandlerUtils.toDataHandler(encoder.getBlob(contentID)); if (cache || !(dataHandler instanceof PartDataHandler)) { multipartWriter.writePart(DataHandlerUtils.toBlob(dataHandler), contentID); } else { diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPDecodingFilterHandler.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPDecodingFilterHandler.java index a9445cf27..f8e8627ba 100644 --- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPDecodingFilterHandler.java +++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPDecodingFilterHandler.java @@ -20,8 +20,6 @@ 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.core.stream.XmlHandler; import org.apache.axiom.core.stream.xop.AbstractXOPDecodingFilterHandler; @@ -29,7 +27,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; final class XOPDecodingFilterHandler extends AbstractXOPDecodingFilterHandler { private static class DataHandlerProviderImpl implements BlobProvider { @@ -43,11 +40,11 @@ final class XOPDecodingFilterHandler extends AbstractXOPDecodingFilterHandler { @Override public Blob getBlob() throws IOException { - DataHandler dh = attachmentAccessor.getDataHandler(contentID); - if (dh == null) { + Blob blob = attachmentAccessor.getBlob(contentID); + if (blob == null) { throw new OMException("No MIME part found for content ID '" + contentID + "'"); } else { - return DataHandlerUtils.toBlob(dh); + return blob; } } } 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 3e1f98d86..14f0c305c 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 @@ -81,15 +81,15 @@ public final class XOPEncodingFilterHandler extends AbstractXOPEncodingFilterHan } @Override - public DataHandler getDataHandler(String contentID) { + public Blob getBlob(String contentID) { Object blobObject = blobObjects.get(contentID); if (blobObject == null) { return null; } else if (blobObject instanceof Blob) { - return DataHandlerUtils.toDataHandler((Blob) blobObject); + return (Blob) blobObject; } else { try { - return DataHandlerUtils.toDataHandler(((BlobProvider) blobObject).getBlob()); + return ((BlobProvider) blobObject).getBlob(); } catch (IOException ex) { throw new OMException(ex); } diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/DummyAttachmentAccessor.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/DummyAttachmentAccessor.java index 5a900a4e1..e86d62291 100644 --- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/DummyAttachmentAccessor.java +++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/text/DummyAttachmentAccessor.java @@ -20,7 +20,9 @@ package org.apache.axiom.ts.om.text; import javax.activation.DataHandler; +import org.apache.axiom.blob.Blob; import org.apache.axiom.om.OMAttachmentAccessor; +import org.apache.axiom.util.activation.DataHandlerUtils; final class DummyAttachmentAccessor implements OMAttachmentAccessor { private final String contentID; @@ -37,12 +39,12 @@ final class DummyAttachmentAccessor implements OMAttachmentAccessor { } @Override - public DataHandler getDataHandler(String contentID) { + public Blob getBlob(String contentID) { if (!contentID.equals(this.contentID)) { return null; } else { loaded = true; - return dataHandler; + return DataHandlerUtils.toBlob(dataHandler); } } } diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestGetXMLStreamReaderMTOMEncoded.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestGetXMLStreamReaderMTOMEncoded.java index 0e4ee76c6..05a72d651 100644 --- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestGetXMLStreamReaderMTOMEncoded.java +++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/mtom/TestGetXMLStreamReaderMTOMEncoded.java @@ -22,10 +22,10 @@ import static com.google.common.truth.Truth.assertThat; import java.io.InputStream; -import javax.activation.DataHandler; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamReader; +import org.apache.axiom.blob.Blob; import org.apache.axiom.mime.MultipartBody; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMMetaFactory; @@ -62,8 +62,8 @@ public class TestGetXMLStreamReaderMTOMEncoded extends AxiomTestCase { XOPEncoded<XMLStreamReader> xopEncodedStream = root.getXOPEncodedStreamReader(cache); XMLStreamReader xmlStreamReader = xopEncodedStream.getRootPart(); - DataHandler dh = null; - while (xmlStreamReader.hasNext() && dh == null) { + Blob blob = null; + while (xmlStreamReader.hasNext() && blob == null) { xmlStreamReader.next(); if (xmlStreamReader.isStartElement()) { QName qName = xmlStreamReader.getName(); @@ -71,15 +71,15 @@ public class TestGetXMLStreamReaderMTOMEncoded extends AxiomTestCase { String hrefValue = xmlStreamReader.getAttributeValue("", "href"); assertThat(hrefValue).startsWith("cid:"); if (hrefValue != null) { - dh = + blob = xopEncodedStream .getAttachmentAccessor() - .getDataHandler(hrefValue.substring(4)); + .getBlob(hrefValue.substring(4)); } } } } - assertTrue(dh != null); + assertTrue(blob != null); // Make sure next event is an an XOP_Include END element xmlStreamReader.next();