Author: veithen
Date: Sun Aug  4 09:53:19 2013
New Revision: 1510122

URL: http://svn.apache.org/r1510122
Log:
Eliminated the dependency between the SAAJ implementation and JavaMail.

Modified:
    axis/axis2/java/core/trunk/modules/jaxws/pom.xml
    axis/axis2/java/core/trunk/modules/saaj/pom.xml
    
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
    
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
    
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java

Modified: axis/axis2/java/core/trunk/modules/jaxws/pom.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/pom.xml?rev=1510122&r1=1510121&r2=1510122&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/pom.xml Sun Aug  4 09:53:19 2013
@@ -54,6 +54,10 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-javamail_1.4_spec</artifactId>
+        </dependency>
+        <dependency>
             <groupId>xml-resolver</groupId>
             <artifactId>xml-resolver</artifactId>
         </dependency>

Modified: axis/axis2/java/core/trunk/modules/saaj/pom.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/pom.xml?rev=1510122&r1=1510121&r2=1510122&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/saaj/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/saaj/pom.xml Sun Aug  4 09:53:19 2013
@@ -42,10 +42,6 @@
             <artifactId>geronimo-saaj_1.3_spec</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-javamail_1.4_spec</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-dom</artifactId>
             <scope>runtime</scope>

Modified: 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java?rev=1510122&r1=1510121&r2=1510122&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
 Sun Aug  4 09:53:19 2013
@@ -20,19 +20,18 @@
 package org.apache.axis2.saaj;
 
 import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.mime.ContentTypeBuilder;
+import org.apache.axiom.mime.MediaType;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.om.impl.OMMultipartWriter;
 import org.apache.axiom.soap.SOAP11Version;
-import org.apache.axiom.soap.SOAP12Version;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.util.UIDGenerator;
 import org.apache.axis2.saaj.util.SAAJUtil;
 import org.apache.axis2.transport.http.HTTPConstants;
 
-import javax.mail.internet.ContentType;
-import javax.mail.internet.ParseException;
 import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.MimeHeader;
 import javax.xml.soap.MimeHeaders;
@@ -46,6 +45,7 @@ import javax.xml.soap.SOAPPart;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Hashtable;
@@ -63,12 +63,7 @@ public class SOAPMessageImpl extends SOA
 
     public SOAPMessageImpl(SOAPEnvelopeImpl soapEnvelope) {
         this.mimeHeaders = new MimeHeaders();
-        if 
(((SOAPFactory)soapEnvelope.omTarget.getOMFactory()).getSOAPVersion() == 
SOAP11Version.getSingleton()) {
-            this.mimeHeaders.addHeader("content-type", 
HTTPConstants.MEDIA_TYPE_TEXT_XML);
-        } else if 
(((SOAPFactory)soapEnvelope.omTarget.getOMFactory()).getSOAPVersion() == 
SOAP12Version.getSingleton()) {
-            this.mimeHeaders.addHeader("content-type",
-                    HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML);
-        }
+        this.mimeHeaders.addHeader("content-type", 
((SOAPFactory)soapEnvelope.omTarget.getOMFactory()).getSOAPVersion().getMediaType().toString());
         soapPart = new SOAPPartImpl(this, soapEnvelope);
     }
 
@@ -275,23 +270,20 @@ public class SOAPMessageImpl extends SOA
     public void saveChanges() throws SOAPException {
         try {
             String contentTypeValue = 
getSingleHeaderValue(HTTPConstants.HEADER_CONTENT_TYPE);
-            ContentType contentType = null;
+            ContentTypeBuilder contentType;
             if (isEmptyString(contentTypeValue)) {
-                if (attachmentParts.size() > 0) {
-                    contentTypeValue = 
HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED;
-                } else {
-                    contentTypeValue = getBaseType();
+                contentType = new ContentTypeBuilder(attachmentParts.size() > 
0 ? MediaType.MULTIPART_RELATED : getMediaType());
+            } else {
+                contentType = new ContentTypeBuilder(contentTypeValue);
+                //Use configures the baseType with multipart/related while no 
attachment exists or all the attachments are removed
+                if 
(contentType.getMediaType().equals(MediaType.MULTIPART_RELATED) && 
attachmentParts.size() == 0) {
+                    contentType.setMediaType(getMediaType());
+                    contentType.clearParameters();
                 }
             }
-            contentType = new ContentType(contentTypeValue);
-            
-            //Use configures the baseType with multipart/related while no 
attachment exists or all the attachments are removed
-            
if(contentType.getBaseType().equals(HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED) 
&& attachmentParts.size() == 0) {
-                contentType = new ContentType(getBaseType());
-            }
            
             //If it is of multipart/related, initialize those required values 
in the content-type, including boundary etc.
-            if 
(contentType.getBaseType().equals(HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED)) {
+            if 
(contentType.getMediaType().equals(MediaType.MULTIPART_RELATED)) {
                 
                 //Configure boundary
                 String boundaryParam = contentType.getParameter("boundary");
@@ -315,15 +307,15 @@ public class SOAPMessageImpl extends SOA
                 }
                 
                 //Configure type                
-                contentType.setParameter("type", getBaseType());
+                contentType.setParameter("type", getMediaType().toString());
                 
                 //Configure charset
                 String soapPartContentTypeValue = 
getSingleHeaderValue(soapPart.getMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE));
-                ContentType soapPartContentType = null;
+                ContentTypeBuilder soapPartContentType = null;
                 if (isEmptyString(soapPartContentTypeValue)) {
-                    soapPartContentType = new 
ContentType(soapPartContentTypeValue);
+                    soapPartContentType = new 
ContentTypeBuilder(soapPartContentTypeValue);
                 } else {
-                    soapPartContentType = new ContentType(getBaseType());
+                    soapPartContentType = new 
ContentTypeBuilder(getMediaType());
                 }                
                 setCharsetParameter(soapPartContentType);
             } else {
@@ -382,7 +374,7 @@ public class SOAPMessageImpl extends SOA
             if (attachmentParts.isEmpty()) {
                 envelope.serialize(out, format);
             } else {
-                ContentType contentType = new 
ContentType(getSingleHeaderValue(HTTPConstants.HEADER_CONTENT_TYPE));
+                ContentTypeBuilder contentType = new 
ContentTypeBuilder(getSingleHeaderValue(HTTPConstants.HEADER_CONTENT_TYPE));
                 String boundary = contentType.getParameter("boundary");
                 if(isEmptyString(boundary)) {
                     boundary = UIDGenerator.generateMimeBoundary();
@@ -612,9 +604,8 @@ public class SOAPMessageImpl extends SOA
         }
     }
     
-    private String getBaseType() throws SOAPException {
-        boolean isSOAP12 = ((SOAPFactory)((SOAPEnvelopeImpl) 
soapPart.getEnvelope()).omTarget.getOMFactory()).getSOAPVersion() == 
SOAP12Version.getSingleton();
-        return isSOAP12 ? HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML : 
HTTPConstants.MEDIA_TYPE_TEXT_XML;
+    private MediaType getMediaType() throws SOAPException {
+        return ((SOAPFactory)((SOAPEnvelopeImpl) 
soapPart.getEnvelope()).omTarget.getOMFactory()).getSOAPVersion().getMediaType();
     }
     
     /**
@@ -624,7 +615,7 @@ public class SOAPMessageImpl extends SOA
      * @param contentType
      * @throws SOAPException
      */
-    private void setCharsetParameter(ContentType contentType) throws 
SOAPException{
+    private void setCharsetParameter(ContentTypeBuilder contentType) throws 
SOAPException{
         String charset = (String)getProperty(CHARACTER_SET_ENCODING); 
         if (!isEmptyString(charset)) {
             contentType.setParameter("charset", charset);

Modified: 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java?rev=1510122&r1=1510121&r2=1510122&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
 Sun Aug  4 09:53:19 2013
@@ -20,6 +20,8 @@
 package org.apache.axis2.saaj;
 
 import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.mime.ContentType;
+import org.apache.axiom.mime.MediaType;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.impl.MTOMConstants;
@@ -52,8 +54,6 @@ import org.w3c.dom.ProcessingInstruction
 import org.w3c.dom.Text;
 import org.w3c.dom.UserDataHandler;
 
-import javax.mail.internet.ContentType;
-import javax.mail.internet.ParseException;
 import javax.xml.soap.MimeHeaders;
 import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPEnvelope;
@@ -71,9 +71,11 @@ import javax.xml.transform.TransformerFa
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
+import java.text.ParseException;
 import java.util.Iterator;
 
 public class SOAPPartImpl extends SOAPPart {
@@ -146,25 +148,29 @@ public class SOAPPartImpl extends SOAPPa
             soapFactory = metaFactory.getSOAP11Factory();
             soapEnvelopeNamespaceURI = null;
         } else {
-            String baseType = contentType.getBaseType().toLowerCase();
-            String soapContentType;
-            if (baseType.equals(MTOMConstants.MTOM_TYPE)) {
+            MediaType baseType = contentType.getMediaType();
+            MediaType soapContentType;
+            if (baseType.equals(MediaType.APPLICATION_XOP_XML)) {
                 isMTOM = true;
                 String typeParam = contentType.getParameter("type");
                 if (typeParam == null) {
                     throw new SOAPException("Missing 'type' parameter in XOP 
content type");
                 } else {
-                    soapContentType = typeParam.toLowerCase();
+                    try {
+                        soapContentType = new 
ContentType(typeParam).getMediaType();
+                    } catch (ParseException ex) {
+                        throw new SOAPException("Failed to parse the 'type' 
parameter", ex);
+                    }
                 }
             } else {
                 isMTOM = false;
                 soapContentType = baseType;
             }
             
-            if (soapContentType.equals(HTTPConstants.MEDIA_TYPE_TEXT_XML)) {
+            if (soapContentType.equals(MediaType.TEXT_XML)) {
                 soapEnvelopeNamespaceURI = 
SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
                 soapFactory = metaFactory.getSOAP11Factory();
-            } else if 
(soapContentType.equals(HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML)) {
+            } else if (soapContentType.equals(MediaType.APPLICATION_SOAP_XML)) 
{
                 soapEnvelopeNamespaceURI = 
SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
                 soapFactory = metaFactory.getSOAP12Factory();
             } else {

Modified: 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java?rev=1510122&r1=1510121&r2=1510122&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java
 Sun Aug  4 09:53:19 2013
@@ -20,6 +20,9 @@
 package org.apache.axis2.saaj;
 
 import junit.framework.Assert;
+
+import org.apache.axiom.mime.ContentType;
+import org.apache.axiom.mime.MediaType;
 import org.apache.axis2.saaj.util.SAAJDataSource;
 import org.apache.axis2.transport.http.HTTPConstants;
 import org.junit.Before;
@@ -27,7 +30,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import javax.activation.DataHandler;
-import javax.mail.internet.ContentType;
 import javax.xml.namespace.QName;
 import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.MessageFactory;
@@ -46,6 +48,7 @@ import javax.xml.soap.SOAPHeaderElement;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.soap.SOAPPart;
 import javax.xml.transform.stream.StreamSource;
+
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -247,7 +250,7 @@ public class SOAPMessageTest extends Ass
         //start parameter is not checked, due to it is optional parameter, and 
seems RI will not add this value
         //assertNotNull("start parameter should exist in the content-type 
header", contentType.getParameter("start"));
         assertNotNull("type parameter should exist in the content-type 
header", contentType.getParameter("type"));
-        assertEquals(HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED, 
contentType.getBaseType());        
+        assertEquals(MediaType.MULTIPART_RELATED, contentType.getMediaType()); 
       
     }
 
     @Validated @Test
@@ -266,7 +269,7 @@ public class SOAPMessageTest extends Ass
         msg2.saveChanges();
         ContentType contentType2 = new 
ContentType(msg2.getMimeHeaders().getHeader(HTTPConstants.HEADER_CONTENT_TYPE)[0]);
 
-        assertEquals(contentType.getBaseType(), contentType2.getBaseType());
+        assertEquals(contentType.getMediaType(), contentType2.getMediaType());
         assertEquals(contentType.getParameter("boundary"), 
contentType2.getParameter("boundary"));
         assertEquals(contentType.getParameter("type"), 
contentType2.getParameter("type"));
         //start parameter is not checked, due to it is an optional parameter, 
and seems RI will not add this value
@@ -284,14 +287,14 @@ public class SOAPMessageTest extends Ass
         
         
assertNotNull(msg.getMimeHeaders().getHeader(HTTPConstants.HEADER_CONTENT_TYPE));
         ContentType contentType = new 
ContentType(msg.getMimeHeaders().getHeader(HTTPConstants.HEADER_CONTENT_TYPE)[0]);
        
-        assertEquals(HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED, 
contentType.getBaseType());
+        assertEquals(MediaType.MULTIPART_RELATED, contentType.getMediaType());
         
         msg.removeAllAttachments();
         msg.saveChanges();
 
         
assertNotNull(msg.getMimeHeaders().getHeader(HTTPConstants.HEADER_CONTENT_TYPE));
         contentType = new 
ContentType(msg.getMimeHeaders().getHeader(HTTPConstants.HEADER_CONTENT_TYPE)[0]);
        
-        assertEquals("text/xml", contentType.getBaseType());
+        assertEquals(MediaType.TEXT_XML, contentType.getMediaType());
     }
 
     private StringBuffer copyToBuffer(InputStream inputStream) {


Reply via email to