Author: thilina
Date: Tue Sep 5 23:38:54 2006
New Revision: 440632
URL: http://svn.apache.org/viewvc?view=rev&rev=440632
Log:
preliminary support for SOAP With Attachments
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MIMEOutputUtils.java
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/MIMEOutputUtilsTest.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java?view=diff&rev=440632&r1=440631&r2=440632
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
Tue Sep 5 23:38:54 2006
@@ -64,10 +64,10 @@
}
// MTOM is given priority
if (isOptimized()) {
- return this.getContentTypeForMime(SOAPContentType,
MTOMConstants.MTOM_TYPE);
+ return this.getContentTypeForMTOM(SOAPContentType);
} else if (isDoingSWA())
{
- return this.getContentTypeForMime(SOAPContentType,
MTOMConstants.SWA_TYPE);
+ return this.getContentTypeForSwA(SOAPContentType);
}
else {
return SOAPContentType;
@@ -152,18 +152,31 @@
this.doingSWA = doingSWA;
}
- public String getContentTypeForMime(String SOAPContentType, String
type) {
+ public String getContentTypeForMTOM(String SOAPContentType) {
StringBuffer sb = new StringBuffer();
sb.append("multipart/related");
sb.append("; ");
sb.append("boundary=");
sb.append(getMimeBoundary());
sb.append("; ");
- sb.append("type=\""+type+"\"");
+ sb.append("type=\""+MTOMConstants.MTOM_TYPE+"\"");
sb.append("; ");
sb.append("start=\"<" + getRootContentId() + ">\"");
sb.append("; ");
sb.append("start-info=\""+SOAPContentType+"\"");
+ return sb.toString();
+ }
+
+ public String getContentTypeForSwA(String SOAPContentType) {
+ StringBuffer sb = new StringBuffer();
+ sb.append("multipart/related");
+ sb.append("; ");
+ sb.append("boundary=");
+ sb.append(getMimeBoundary());
+ sb.append("; ");
+ sb.append("type=\""+MTOMConstants.SWA_TYPE+"\"");
+ sb.append("; ");
+ sb.append("start=\"<" + getRootContentId() + ">\"");
return sb.toString();
}
}
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?view=diff&rev=440632&r1=440631&r2=440632
==============================================================================
---
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
Tue Sep 5 23:38:54 2006
@@ -16,25 +16,24 @@
package org.apache.axiom.om.impl;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMException;
-import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.OMText;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
-
-import javax.activation.DataHandler;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeBodyPart;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.StringWriter;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
+import javax.activation.DataHandler;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeBodyPart;
+
+import org.apache.axiom.om.OMConstants;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+
public class MIMEOutputUtils {
private static byte[] CRLF = { 13, 10 };
@@ -60,24 +59,24 @@
Iterator binaryNodeIterator = binaryNodeList.iterator();
while (binaryNodeIterator.hasNext()) {
- OMText binaryNode = (OMText) binaryNodeIterator.next();
- writeBodyPart(outStream, createMimeBodyPart(binaryNode),
- boundary);
- }
- finishWritingMime(outStream);
+ OMText binaryNode = (OMText)
binaryNodeIterator.next();
+ writeBodyPart(outStream,
createMimeBodyPart(binaryNode
+ .getContentID(), (DataHandler)
binaryNode
+ .getDataHandler()), boundary);
+ }
+ finishWritingMime(outStream);
} catch (IOException e) {
- throw new OMException("Problem with the OutputStream.", e);
+ throw new OMException("Error while writing to the OutputStream.",
e);
} catch (MessagingException e) {
throw new OMException("Problem writing Mime Parts.", e);
}
}
- public static MimeBodyPart createMimeBodyPart(OMText node)
+ public static MimeBodyPart createMimeBodyPart(String contentID,
DataHandler dataHandler)
throws MessagingException {
MimeBodyPart mimeBodyPart = new MimeBodyPart();
- final DataHandler dataHandler = (DataHandler) node.getDataHandler();
mimeBodyPart.setDataHandler(dataHandler);
- mimeBodyPart.addHeader("content-id", "<"+node.getContentID()+">");
+ mimeBodyPart.addHeader("content-id", "<"+contentID+">");
mimeBodyPart.addHeader("content-type", dataHandler.getContentType());
mimeBodyPart.addHeader("content-transfer-encoding", "binary");
return mimeBodyPart;
@@ -129,36 +128,46 @@
outStream.write(new byte[]{45, 45});
}
- public static void writeSOAPWithAttachmentsMessage(StringWriter
writer,OutputStream outputStream, Map attachmentMap,OMOutputFormat format)
- {
-// String SOAPContentType;
-// 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.addHeader("content-type",
-// "application/xop+xml; charset=" +
format.getCharSetEncoding() +
-// "; type=\""+SOAPContentType+"\";");
-// rootMimeBodyPart.addHeader("content-transfer-encoding", "binary");
-//
rootMimeBodyPart.addHeader("content-id","<"+format.getRootContentId()+">");
-//
-// writeBodyPart(outputStream, rootMimeBodyPart,
format.getMimeBoundary());
-//
-// Iterator attachmentIDIterator = attachmentMap.keySet().iterator();
-// while (binaryNodeIterator.hasNext()) {
-// OMText binaryNode = (OMText) binaryNodeIterator.next();
-// writeBodyPart(outStream, createMimeBodyPart(binaryNode),
-// boundary);
-// }
-// finishWritingMime(outStream);
-
- }
+ public static void writeSOAPWithAttachmentsMessage(StringWriter writer,
+ OutputStream outputStream, Map attachmentMap,
OMOutputFormat format) {
+ String SOAPContentType;
+ 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.addHeader("content-type",
+ MTOMConstants.SWA_TYPE+"; charset="
+ +
format.getCharSetEncoding());
+ rootMimeBodyPart.addHeader("content-transfer-encoding",
"8bit");
+ rootMimeBodyPart.addHeader("content-id", "<"
+ + format.getRootContentId() + ">");
+
+ writeBodyPart(outputStream, rootMimeBodyPart, format
+ .getMimeBoundary());
+
+ Iterator attachmentIDIterator =
attachmentMap.keySet().iterator();
+ while (attachmentIDIterator.hasNext()) {
+ String contentID = (String)
attachmentIDIterator.next();
+ DataHandler dataHandler = (DataHandler)
attachmentMap
+ .get(contentID);
+ writeBodyPart(outputStream,
createMimeBodyPart(contentID,
+ dataHandler),
format.getMimeBoundary());
+ }
+ finishWritingMime(outputStream);
+ } catch (IOException e) {
+ throw new OMException("Error while writing to the
OutputStream.", e);
+ } catch (MessagingException e) {
+ throw new OMException("Problem writing Mime Parts.", e);
+ }
+ }
}
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/MIMEOutputUtilsTest.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/MIMEOutputUtilsTest.java?view=diff&rev=440632&r1=440631&r2=440632
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/MIMEOutputUtilsTest.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/MIMEOutputUtilsTest.java
Tue Sep 5 23:38:54 2006
@@ -30,6 +30,9 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.StringWriter;
+import java.nio.channels.WritableByteChannel;
+import java.util.HashMap;
import java.util.Properties;
public class MIMEOutputUtilsTest extends TestCase {
@@ -63,10 +66,12 @@
outStream.write(new byte[]{13,10});
MIMEOutputUtils.startWritingMime(outStream, boundary);
- MimeBodyPart part1 = MIMEOutputUtils.createMimeBodyPart(textData);
- MIMEOutputUtils.writeBodyPart(outStream, part1, boundary);
- MimeBodyPart part2 = MIMEOutputUtils.createMimeBodyPart(text);
- MIMEOutputUtils.writeBodyPart(outStream, part2, boundary);
+ MimeBodyPart part1 = MIMEOutputUtils.createMimeBodyPart(textData
+ .getContentID(), (DataHandler)
textData.getDataHandler());
+ MIMEOutputUtils.writeBodyPart(outStream, part1, boundary);
+ MimeBodyPart part2 = MIMEOutputUtils.createMimeBodyPart(text
+ .getContentID(), (DataHandler)
text.getDataHandler());
+ MIMEOutputUtils.writeBodyPart(outStream, part2, boundary);
MIMEOutputUtils.finishWritingMime(outStream);
buffer = outStream.toByteArray();
}
@@ -87,4 +92,25 @@
assertNotNull(object1);
assertEquals(multiPart.getCount(),2);
}
+// public void testWriteSOAPWithAttachmentsMessage()
+// {
+// ByteArrayOutputStream byteArrayOutputStream = new
ByteArrayOutputStream();
+// SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+// ByteArrayOutputStream outStream;
+// String boundary;
+//
+// OMOutputFormat omOutput = new OMOutputFormat();
+// boundary = omOutput.getMimeBoundary();
+// omOutput.setCharSetEncoding(OMConstants.DEFAULT_CHAR_SET_ENCODING);
+// omOutput.setSOAP11(false);
+//
+// StringWriter stringWriter = new StringWriter();
+// stringWriter.write("Apache Axis2");
+// DataHandler dataHandler = new DataHandler(
+// "Apache Software Foundation", "text/plain");
+// HashMap map = new HashMap();
+// map.put("uuid_dsjkjkda",dataHandler);
+//
MIMEOutputUtils.writeSOAPWithAttachmentsMessage(stringWriter,byteArrayOutputStream,map,omOutput);
+// System.out.println(byteArrayOutputStream.toString());
+// }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]