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/30 23:15:58 UTC

svn commit: r1741816 - in /webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom: attachments/ mime/

Author: veithen
Date: Sat Apr 30 21:15:58 2016
New Revision: 1741816

URL: http://svn.apache.org/viewvc?rev=1741816&view=rev
Log:
AXIOM-350: Clean up the Part interface and move it to org.apache.axiom.mime.

Added:
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Part.java
      - copied, changed from r1741790, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java
Removed:
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java
Modified:
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/IncomingAttachmentStreams.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/LegacyPartDataHandler.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessage.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessageAdapter.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataHandler.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
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartIterator.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Util.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Header.java

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/IncomingAttachmentStreams.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/IncomingAttachmentStreams.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/IncomingAttachmentStreams.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/IncomingAttachmentStreams.java Sat Apr 30 21:15:58 2016
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.util.Iterator;
 
 import org.apache.axiom.mime.Header;
+import org.apache.axiom.mime.Part;
 import org.apache.axiom.om.OMException;
 
 /**

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/LegacyPartDataHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/LegacyPartDataHandler.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/LegacyPartDataHandler.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/LegacyPartDataHandler.java Sat Apr 30 21:15:58 2016
@@ -25,6 +25,7 @@ import javax.activation.DataSource;
 
 import org.apache.axiom.attachments.lifecycle.DataHandlerExt;
 import org.apache.axiom.blob.Blob;
+import org.apache.axiom.mime.Part;
 
 final class LegacyPartDataHandler extends PartDataHandler implements DataHandlerExt {
     public LegacyPartDataHandler(Part part) {
@@ -46,7 +47,7 @@ final class LegacyPartDataHandler extend
     }
 
     public void purgeDataSource() throws IOException {
-        getPart().releaseContent();
+        getPart().discard();
     }
 
     public void deleteWhenReadOnce() throws IOException {

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessage.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessage.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessage.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessage.java Sat Apr 30 21:15:58 2016
@@ -33,6 +33,7 @@ import org.apache.axiom.blob.MemoryBlob;
 import org.apache.axiom.blob.WritableBlobFactory;
 import org.apache.axiom.mime.ContentType;
 import org.apache.axiom.mime.Header;
+import org.apache.axiom.mime.Part;
 import org.apache.axiom.om.OMException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessageAdapter.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessageAdapter.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessageAdapter.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/MIMEMessageAdapter.java Sat Apr 30 21:15:58 2016
@@ -30,6 +30,8 @@ import javax.activation.DataHandler;
 
 import org.apache.axiom.blob.WritableBlobFactory;
 import org.apache.axiom.mime.ContentType;
+import org.apache.axiom.mime.Header;
+import org.apache.axiom.mime.Part;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.util.UIDGenerator;
 import org.apache.commons.logging.Log;
@@ -152,7 +154,7 @@ final class MIMEMessageAdapter extends A
 
     @Override
     String getRootPartContentType() {
-        return rootPart.getContentType();
+        return rootPart.getHeader(Header.CONTENT_TYPE);
     }
 
     @Override

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataHandler.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataHandler.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartDataHandler.java Sat Apr 30 21:15:58 2016
@@ -24,6 +24,8 @@ import java.io.OutputStream;
 import javax.activation.DataHandler;
 import javax.activation.DataSource;
 
+import org.apache.axiom.mime.Part;
+
 /**
  * {@link DataHandler} implementation for MIME parts read from a stream.
  */

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=1741816&r1=1741815&r2=1741816&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 Sat Apr 30 21:15:58 2016
@@ -23,6 +23,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 
 import org.apache.axiom.ext.activation.SizeAwareDataSource;
+import org.apache.axiom.mime.Part;
 
 /**
  * Default {@link DataSource} implementation for MIME parts. This implementation will be used if

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=1741816&r1=1741815&r2=1741816&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 Sat Apr 30 21:15:58 2016
@@ -19,13 +19,13 @@
 
 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;
 import org.apache.axiom.ext.io.StreamCopyException;
 import org.apache.axiom.mime.Header;
+import org.apache.axiom.mime.Part;
 import org.apache.axiom.om.OMException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -37,6 +37,7 @@ import javax.activation.DataHandler;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -119,7 +120,7 @@ final class PartImpl implements Part {
     }
 
     public List<Header> getHeaders() {
-        return headers;
+        return Collections.unmodifiableList(headers);
     }
 
     public String getContentID() {
@@ -254,21 +255,23 @@ final class PartImpl implements Part {
         }
     }
     
-    public void releaseContent() throws IOException {
-        switch (state) {
-            case STATE_UNREAD:
-                try {
-                    EntityState state;
+    public void discard() {
+        try {
+            switch (state) {
+                case STATE_UNREAD:
+                    EntityState parserState;
                     do {
-                        state = parser.next();
-                    } while (state != EntityState.T_START_BODYPART && state != EntityState.T_END_MULTIPART);
-                } catch (MimeException ex) {
-                    throw new OMException(ex);
-                }
-                state = STATE_DISCARDED;
-                break;
-            case STATE_BUFFERED:
-                content.release();
+                        parserState = parser.next();
+                    } while (parserState != EntityState.T_START_BODYPART && parserState != EntityState.T_END_MULTIPART);
+                    state = STATE_DISCARDED;
+                    break;
+                case STATE_BUFFERED:
+                    content.release();
+            }
+        } catch (MimeException ex) {
+            throw new OMException(ex);
+        } catch (IOException ex) {
+            throw new OMException(ex);
         }
     }
     

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartIterator.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartIterator.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartIterator.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/PartIterator.java Sat Apr 30 21:15:58 2016
@@ -21,6 +21,8 @@ package org.apache.axiom.attachments;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
+import org.apache.axiom.mime.Part;
+
 final class PartIterator implements Iterator<Part> {
     private final MIMEMessage message;
     private PartImpl part;

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Util.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Util.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Util.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Util.java Sat Apr 30 21:15:58 2016
@@ -20,6 +20,9 @@ package org.apache.axiom.attachments;
 
 import javax.activation.DataSource;
 
+import org.apache.axiom.mime.Header;
+import org.apache.axiom.mime.Part;
+
 final class Util {
     private Util() {}
 
@@ -46,7 +49,7 @@ final class Util {
      * @return the content type
      */
     static String getDataSourceContentType(Part part) {
-        String ct = part.getContentType();
+        String ct = part.getHeader(Header.CONTENT_TYPE);
         return ct == null ? "application/octet-stream" : ct;
     }
 }

Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Header.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Header.java?rev=1741816&r1=1741815&r2=1741816&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Header.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Header.java Sat Apr 30 21:15:58 2016
@@ -22,6 +22,16 @@ package org.apache.axiom.mime;
  * A MIME header.
  */
 public final class Header {
+    /**
+     * The name of the {@code Content-Type} header.
+     */
+    public static final String CONTENT_TYPE = "Content-Type";
+
+    /**
+     * The name of the {@code Content-ID} header.
+     */
+    public static final String CONTENT_ID = "Content-ID";
+
     private final String name;
     private final String value;
 

Copied: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Part.java (from r1741790, 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/mime/Part.java?p2=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/mime/Part.java&p1=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/attachments/Part.java&r1=1741790&r2=1741816&rev=1741816&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/mime/Part.java Sat Apr 30 21:15:58 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.axiom.attachments;
+package org.apache.axiom.mime;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -25,22 +25,28 @@ import java.util.List;
 import javax.activation.DataHandler;
 
 import org.apache.axiom.blob.Blob;
-import org.apache.axiom.mime.Header;
 
 /**
- * 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.
+ * A MIME part.
  */
 public interface Part {
     /**
-     * @return DataHandler representing this part
+     * Get the headers of this part.
+     * 
+     * @return the headers
      */
-    public DataHandler getDataHandler();
-    
+    List<Header> getHeaders();
+
     /**
-     * @return content type of the part
+     * Get the value of a specific header. If there are multiple headers with the same name, only
+     * the first value is returned.
+     * 
+     * @param name
+     *            the header name
+     * @return the value of the header, or {@code null} if the part doesn't have a header with the
+     *         given name
      */
-    public String getContentType();
+    String getHeader(String name);
 
     /**
      * Get the content ID of this part, i.e. the value of the {@code Content-ID} header with the
@@ -48,24 +54,17 @@ public interface Part {
      * 
      * @return the content ID of the part or {@code null} if the part doesn't have a content ID
      */
-    public String getContentID();
-
-    /**
-     * Get the value of a specific header
-     * @param name
-     * @return value or null
-     */
-    public String getHeader(String name);
+    String getContentID();
 
     /**
-     * Get the content of this part.
+     * Get the content of this part as a {@link Blob}.
      * 
      * @return the content of this part
      */
-    public Blob getBlob();
+    Blob getBlob();
 
     /**
-     * Get the content of this part.
+     * Get the content of this part as an {@link InputStream}.
      * 
      * @param preserve
      *            {@code true} if the content should be preserved so that it can be read multiple
@@ -74,9 +73,17 @@ public interface Part {
      * @throws IOException
      *             if the content couldn't be read
      */
-    public InputStream getInputStream(boolean preserve) throws IOException;
-    
-    public void releaseContent() throws IOException;
-    
-    List<Header> getHeaders();
+    InputStream getInputStream(boolean preserve) throws IOException;
+
+    /**
+     * Get the content of this part as a {@link DataHandler}.
+     * 
+     * @return the content of this part
+     */
+    DataHandler getDataHandler();
+
+    /**
+     * Discard the content of this part.
+     */
+    void discard();
 }