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]

Reply via email to