Author: dims
Date: Thu May 29 21:00:43 2008
New Revision: 661562
URL: http://svn.apache.org/viewvc?rev=661562&view=rev
Log:
prep the code to enable someone to write multiple mime parts where the root is
a data handler too (see AXIS2-3805)
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java?rev=661562&r1=661561&r2=661562&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
Thu May 29 21:00:43 2008
@@ -42,6 +42,8 @@
import java.util.List;
import java.util.Set;
import java.util.TreeMap;
+import java.util.Map;
+import java.util.Collections;
public class Attachments implements OMAttachmentAccessor {
@@ -412,6 +414,9 @@
* of the first MIME part of the MIME message
*/
public String getSOAPPartContentID() {
+ if(contentType == null) {
+ return null;
+ }
String rootContentID = contentType.getParameter("start");
if (log.isDebugEnabled()) {
log.debug("getSOAPPartContentID rootContentID=" + rootContentID);
@@ -499,6 +504,17 @@
return attachmentsMap.keySet();
}
+ public Map getMap() {
+ DataHandler dataHandler;
+ while (!noStreams) {
+ dataHandler = this.getNextPartDataHandler();
+ if (dataHandler == null) {
+ break;
+ }
+ }
+ return Collections.unmodifiableMap(attachmentsMap);
+ }
+
/**
* @return List of content ids in order of appearance in message
*/
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java?rev=661562&r1=661561&r2=661562&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
Thu May 29 21:00:43 2008
@@ -24,6 +24,7 @@
import java.io.StringWriter;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.Map;
import javax.activation.DataHandler;
import javax.mail.MessagingException;
@@ -259,23 +260,30 @@
Attachments attachments,
OMOutputFormat format) {
String SOAPContentType;
+ if (format.isSOAP11()) {
+ SOAPContentType = SOAP11Constants.SOAP_11_CONTENT_TYPE;
+ } else {
+ SOAPContentType = SOAP12Constants.SOAP_12_CONTENT_TYPE;
+ }
+ String contentType = SOAPContentType + "; charset=" +
format.getCharSetEncoding();
+ javax.activation.DataHandler dh = new javax.activation.DataHandler(
+ writer.toString(), "text/xml; charset="
+ + format.getCharSetEncoding());
+ writeDataHandlerWithAttachmentsMessage(dh, contentType, outputStream,
attachments.getMap(), format);
+ }
+
+ public static void writeDataHandlerWithAttachmentsMessage(DataHandler
rootDataHandler,
+ String contentType,
+ OutputStream
outputStream,
+ Map attachments,
+ OMOutputFormat format) {
try {
- if (format.isSOAP11()) {
- SOAPContentType = SOAP11Constants.SOAP_11_CONTENT_TYPE;
- } else {
- SOAPContentType = SOAP12Constants.SOAP_12_CONTENT_TYPE;
- }
startWritingMime(outputStream, format.getMimeBoundary());
- javax.activation.DataHandler dh = new javax.activation.DataHandler(
- writer.toString(), "text/xml; charset="
- + format.getCharSetEncoding());
MimeBodyPart rootMimeBodyPart = new MimeBodyPart();
- rootMimeBodyPart.setDataHandler(dh);
+ rootMimeBodyPart.setDataHandler(rootDataHandler);
- rootMimeBodyPart.addHeader("Content-Type",
- SOAPContentType + "; charset="
- + format.getCharSetEncoding());
+ rootMimeBodyPart.addHeader("Content-Type", contentType);
rootMimeBodyPart.addHeader("Content-Transfer-Encoding", "8bit");
rootMimeBodyPart.addHeader("Content-ID", "<"
+ format.getRootContentId() + ">");
@@ -283,12 +291,12 @@
writeBodyPart(outputStream, rootMimeBodyPart, format
.getMimeBoundary());
- Iterator attachmentIDIterator =
attachments.getContentIDSet().iterator();
- while (attachmentIDIterator.hasNext()) {
- String contentID = (String) attachmentIDIterator.next();
- DataHandler dataHandler =
attachments.getDataHandler(contentID);
- writeBodyPart(outputStream, createMimeBodyPart(contentID,
- dataHandler),
+ Iterator iterator = attachments.keySet().iterator();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+ MimeBodyPart part = createMimeBodyPart(key,
+ (DataHandler) attachments.get(key));
+ writeBodyPart(outputStream, part,
format.getMimeBoundary());
}
finishWritingMime(outputStream);