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