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();

Reply via email to