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 2016/04/29 08:17:41 UTC

svn commit: r1741556 - in /webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments: Part.java PartDataSource.java PartImpl.java

Author: veithen
Date: Fri Apr 29 06:17:41 2016
New Revision: 1741556

URL: http://svn.apache.org/viewvc?rev=1741556&view=rev
Log:
AXIOM-350: Expose the underlying Blob via the Part interface.

Modified:
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataSource.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartImpl.java

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java?rev=1741556&r1=1741555&r2=1741556&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java Fri Apr 29 06:17:41 2016
@@ -23,6 +23,8 @@ import java.io.InputStream;
 
 import javax.activation.DataHandler;
 
+import org.apache.axiom.blob.Blob;
+
 /**
  * Interface representing a MIME part. A part can be the SOAP part (or more generally the root part
  * for non-MTOM XOP encoded messages) or an attachment part.
@@ -34,11 +36,6 @@ public interface Part {
     public DataHandler getDataHandler();
     
     /**
-     * @return size
-     */
-    public long getSize();
-
-    /**
      * @return content type of the part
      */
     public String getContentType();
@@ -60,6 +57,13 @@ public interface Part {
 
     /**
      * Get the content of this part.
+     * 
+     * @return the content of this part
+     */
+    public Blob getBlob();
+
+    /**
+     * Get the content of this part.
      * 
      * @param preserve
      *            {@code true} if the content should be preserved so that it can be read multiple

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataSource.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataSource.java?rev=1741556&r1=1741555&r2=1741556&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataSource.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataSource.java Fri Apr 29 06:17:41 2016
@@ -53,6 +53,6 @@ class PartDataSource implements SizeAwar
     }
 
     public long getSize() {
-        return part.getSize();
+        return part.getBlob().getSize();
     }
 }

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartImpl.java?rev=1741556&r1=1741555&r2=1741556&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartImpl.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartImpl.java Fri Apr 29 06:17:41 2016
@@ -20,6 +20,7 @@
 package org.apache.axiom.attachments;
 
 import org.apache.axiom.attachments.Part;
+import org.apache.axiom.blob.Blob;
 import org.apache.axiom.blob.OverflowableBlob;
 import org.apache.axiom.blob.WritableBlob;
 import org.apache.axiom.blob.WritableBlobFactory;
@@ -137,10 +138,6 @@ final class PartImpl implements Part {
         return dataHandler;
     }
 
-    public long getSize() {
-        return getContent().getSize();
-    }
-
     private WritableBlob getContent() {
         switch (state) {
             case STATE_UNREAD:
@@ -153,6 +150,18 @@ final class PartImpl implements Part {
         }
     }
     
+    @Override
+    public Blob getBlob() {
+        WritableBlob blob = getContent();
+        if (blob instanceof OverflowableBlob) {
+            WritableBlob overflowBlob = ((OverflowableBlob)blob).getOverflowBlob();
+            if (overflowBlob != null) {
+                blob = overflowBlob;
+            }
+        }
+        return blob;
+    }
+
     private static void checkParserState(EntityState state, EntityState expected) throws IllegalStateException {
         if (expected != state) {
             throw new IllegalStateException("Internal error: expected parser to be in state "