svn commit: r1036556 - in /axis/axis2/java/core/trunk/modules: addressing/src/org/apache/axis2/handlers/addressing/ jaxws/src/org/apache/axis2/jaxws/dispatchers/ kernel/src/org/apache/axis2/engine/ ke

2010-11-18 Thread scheu
Author: scheu
Date: Thu Nov 18 17:44:54 2010
New Revision: 1036556

URL: http://svn.apache.org/viewvc?rev=1036556&view=rev
Log:
AXIS2-4881
Contributor:Rich Scheuerle
Introduce (optional) two-phase handler model

Modified:

axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java

axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java

axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/dispatchers/MustUnderstandChecker.java

axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/Phase.java

axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/handlers/AbstractHandler.java

Modified: 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java?rev=1036556&r1=1036555&r2=1036556&view=diff
==
--- 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
 Thu Nov 18 17:44:54 2010
@@ -22,6 +22,7 @@ package org.apache.axis2.handlers.addres
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.soap.RolePlayer;
+import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axis2.AxisFault;
@@ -36,6 +37,7 @@ import org.apache.axis2.context.MessageC
 import org.apache.axis2.description.HandlerDescription;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler.InvocationResponse;
 import org.apache.axis2.handlers.AbstractHandler;
 import org.apache.axis2.util.JavaUtils;
 import org.apache.axis2.util.LoggingControl;
@@ -71,16 +73,18 @@ public class AddressingInHandler extends
 }
 
 public InvocationResponse invoke(MessageContext msgContext) throws 
AxisFault {
+
+if (invoke_stage1(msgContext)) {
+return invoke_stage2(msgContext);
+} else {
+return InvocationResponse.CONTINUE;
+}
+}
+public boolean invoke_stage1(MessageContext msgContext) throws AxisFault {
 //Set the defaults on the message context.
 msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, 
Boolean.TRUE);
 msgContext.setProperty(IS_ADDR_INFO_ALREADY_PROCESSED, Boolean.FALSE);
 
-
-// if there are not headers put a flag to disable addressing temporary
-SOAPHeader header = msgContext.getEnvelope().getHeader();
-if (header == null) {
-return InvocationResponse.CONTINUE;
-}
 //Determine if we want to ignore addressing headers. This parameter 
must
 //be retrieved from the message context because it's value can vary on 
a
 //per service basis.
@@ -91,10 +95,19 @@ public class AddressingInHandler extends
 log.debug(
 "The AddressingInHandler has been disabled. No further 
processing will take place.");
 }
-return InvocationResponse.CONTINUE; 
+return false; 
 }
 
-
+// if there are not headers put a flag to disable addressing temporary
+SOAPHeader header = msgContext.getEnvelope().getHeader();
+if (header == null) {
+return false;
+}
+return true;
+}
+
+public InvocationResponse invoke_stage2(MessageContext msgContext) throws 
AxisFault {
+SOAPHeader header = msgContext.getEnvelope().getHeader();
 if(configuration == null){
AxisConfiguration conf = 
msgContext.getConfigurationContext().getAxisConfiguration();
rolePlayer = 
(RolePlayer)conf.getParameterValue(Constants.SOAP_ROLE_PLAYER_PARAMETER);

Modified: 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?rev=1036556&r1=1036555&r2=1036556&view=diff
==
--- 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
 Thu Nov 18 17:44:54 2010
@@ -64,6 +64,14 @@ public class AddressingOutHandler extend
 private static final Strin

svn commit: r1036624 - /axis/axis2/java/core/trunk/pom.xml

2010-11-18 Thread veithen
Author: veithen
Date: Thu Nov 18 21:03:34 2010
New Revision: 1036624

URL: http://svn.apache.org/viewvc?rev=1036624&view=rev
Log:
AXIS2-4888: Removed the 'jar' classifier from axis2.jar (which was introduced 
unintentionally by r1033898).

Modified:
axis/axis2/java/core/trunk/pom.xml

Modified: axis/axis2/java/core/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/pom.xml?rev=1036624&r1=1036623&r2=1036624&view=diff
==
--- axis/axis2/java/core/trunk/pom.xml (original)
+++ axis/axis2/java/core/trunk/pom.xml Thu Nov 18 21:03:34 2010
@@ -621,6 +621,7 @@
 
 
src/main/assembly/jar.xml
 
+false
 
 
 




svn commit: r1036625 - in /axis/axis2/java/core/branches/1_5: ./ modules/distribution/ modules/kernel/src/org/apache/axis2/transport/http/util/ modules/kernel/test/org/apache/axis2/transport/http/util

2010-11-18 Thread veithen
Author: veithen
Date: Thu Nov 18 21:06:03 2010
New Revision: 1036625

URL: http://svn.apache.org/viewvc?rev=1036625&view=rev
Log:
AXIS2-4888: Merged r1036624 to the 1.5 branch.

Modified:
axis/axis2/java/core/branches/1_5/   (props changed)
axis/axis2/java/core/branches/1_5/modules/distribution/   (props changed)

axis/axis2/java/core/branches/1_5/modules/kernel/src/org/apache/axis2/transport/http/util/QueryStringParser.java
   (props changed)

axis/axis2/java/core/branches/1_5/modules/kernel/test/org/apache/axis2/transport/http/util/QueryStringParserTest.java
   (props changed)
axis/axis2/java/core/branches/1_5/modules/parent/   (props changed)

axis/axis2/java/core/branches/1_5/modules/saaj/test/org/apache/axis2/saaj/TestUtils.java
   (props changed)
axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/   (props 
changed)
axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/pom.xml   
(props changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/src/main/java/org/apache/axis2/handlers/
   (props changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/src/main/resources/META-INF/module.xml
   (props changed)
axis/axis2/java/core/branches/1_5/modules/soapmonitor/servlet/   (props 
changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/applet/
   (props changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/
   (props changed)
axis/axis2/java/core/branches/1_5/modules/transport/http/pom.xml   (props 
changed)
axis/axis2/java/core/branches/1_5/modules/transport/http/src/   (props 
changed)
axis/axis2/java/core/branches/1_5/modules/transport/local/   (props changed)

axis/axis2/java/core/branches/1_5/modules/webapp/src/main/java/org/apache/axis2/webapp/AdminAgent.java
   (props changed)

axis/axis2/java/core/branches/1_5/modules/webapp/src/main/java/org/apache/axis2/webapp/AxisAdminServlet.java
   (props changed)
axis/axis2/java/core/branches/1_5/pom.xml

Propchange: axis/axis2/java/core/branches/1_5/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 21:06:03 2010
@@ -1,2 +1,2 @@
-/axis/axis2/java/core/trunk:922914,922941,922983,935169,935174,935338,937004,944347,944915,951385,960693,960976,960978,960984,960995,961012,961964,962844,963081,963147,965032,965036,965056,965068,965074,965213,965268,965277,965302,965454,966371,966401,966428,966536,979882-979883,979886,980242,981036,981038,981055-981056,981058,981095,981188,981220-981221,981237,981262,981278,981293,981306,981311,981985,981992,982008,982387,982393,982795,982800,983101,983110,983114,983119-983120,983128,983185,983236,983270,983276,983280,983316,983363,983370,983372,985458,985464,985626,985634,985661,985715,985717,985744,985748,985752,985763,985791,985796,985851,986844,986889,987313,987712-987715,987783,987832,987873,987883,987913,987935,990350,990369,990377,990384,990394,990398,990404,990434,990445,990449,1001279,1001452-1001466,1001673,1029034,1029153,1029308,1029372,1029377,1029610-1029651,1030008,1030538,1031350,1031352,1031799,1032001,1032390,1032401,1032681,1032694,1033898,1033942,1033956
 ,1034010,1034015,1034142,1034173,1034213
+/axis/axis2/java/core/trunk:922914,922941,922983,935169,935174,935338,937004,944347,944915,951385,960693,960976,960978,960984,960995,961012,961964,962844,963081,963147,965032,965036,965056,965068,965074,965213,965268,965277,965302,965454,966371,966401,966428,966536,979882-979883,979886,980242,981036,981038,981055-981056,981058,981095,981188,981220-981221,981237,981262,981278,981293,981306,981311,981985,981992,982008,982387,982393,982795,982800,983101,983110,983114,983119-983120,983128,983185,983236,983270,983276,983280,983316,983363,983370,983372,985458,985464,985626,985634,985661,985715,985717,985744,985748,985752,985763,985791,985796,985851,986844,986889,987313,987712-987715,987783,987832,987873,987883,987913,987935,990350,990369,990377,990384,990394,990398,990404,990434,990445,990449,1001279,1001452-1001466,1001673,1029034,1029153,1029308,1029372,1029377,1029610-1029651,1030008,1030538,1031350,1031352,1031799,1032001,1032390,1032401,1032681,1032694,1033898,1033942,1033956
 ,1034010,1034015,1034142,1034173,1034213,1036624
 
/webservices/axis2/trunk/java:728674,731798,732539,732541,732873,732877,732924,732927,732939,733293,733295,733304,733306,733348,733354,733394,733399,733463-733464,733533,733539-733540,733676,733776,733900,733910,734227,734237,734261,738057,738067,738071,738086,738110,738113,738117,738158,740332,740357,740360,741300,741784,741873,741878,741881,748761,751958,754458,754467,754503,757151-757153,759488,759507,759878,759968,761025,761044,761068,761709,761770,761952,763148,765102,771051,777648,777882,777897,777934,778060,780546,783479,795431,801630,803725,805578,805981,8059

svn commit: r1036659 - in /axis/axis2/java/core/trunk/modules/saaj: pom.xml test/org/apache/axis2/saaj/SOAPConnectionTest.java

2010-11-18 Thread veithen
Author: veithen
Date: Thu Nov 18 22:36:21 2010
New Revision: 1036659

URL: http://svn.apache.org/viewvc?rev=1036659&view=rev
Log:
AXIS2-4889: Replaced SOAPConnectionTest#testGet by a no-nonsense test case.

Modified:
axis/axis2/java/core/trunk/modules/saaj/pom.xml

axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java

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=1036659&r1=1036658&r2=1036659&view=diff
==
--- axis/axis2/java/core/trunk/modules/saaj/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/saaj/pom.xml Thu Nov 18 22:36:21 2010
@@ -78,6 +78,12 @@
 test
 
 
+jetty
+jetty
+5.1.10
+test
+
+
 com.sun.xml.messaging.saaj
 saaj-impl
 1.3.2

Modified: 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java?rev=1036659&r1=1036658&r2=1036659&view=diff
==
--- 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
 Thu Nov 18 22:36:21 2010
@@ -20,17 +20,24 @@
 package org.apache.axis2.saaj;
 
 import junit.framework.Assert;
-import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.params.HttpMethodParams;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mortbay.http.HttpContext;
+import org.mortbay.http.HttpException;
+import org.mortbay.http.HttpHandler;
+import org.mortbay.http.HttpRequest;
+import org.mortbay.http.HttpResponse;
+import org.mortbay.http.SocketListener;
+import org.mortbay.http.handler.AbstractHttpHandler;
+import org.mortbay.jetty.Server;
 
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPBody;
 import javax.xml.soap.SOAPConnection;
 import javax.xml.soap.SOAPConnectionFactory;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPMessage;
 import java.io.IOException;
@@ -103,47 +110,38 @@ public class SOAPConnectionTest extends 
 
 
 @Validated @Test
-public void testGet() {
-   if(isNetworkedResourceAvailable("http://java.sun.com/index.html";)){
-try {
-SOAPConnectionFactory sf = new SOAPConnectionFactoryImpl();
-SOAPConnection con = sf.createConnection();
-//Create a valid non webservice endpoint for invoking HTTP-GET
-URL urlEndpoint = new URL("http", "java.sun.com", 80, 
"/index.html");
-//invoking HTTP-GET with a valid non webservice endpoint 
should throw a SOAPException
-SOAPMessage reply = con.get(urlEndpoint);
-} catch (Exception e) {
-assertTrue(e instanceof SOAPException);
+public void testGet() throws Exception {
+Server server = new Server();
+SocketListener listener = new SocketListener();
+server.addListener(listener);
+HttpContext context = new HttpContext(server, "/*");
+HttpHandler handler = new AbstractHttpHandler() {
+public void handle(String pathInContext, String pathParams,
+HttpRequest request, HttpResponse response) throws 
HttpException, IOException {
+
+try {
+SOAPMessage message = 
MessageFactory.newInstance().createMessage();
+SOAPBody body = message.getSOAPBody();
+body.addChildElement("root");
+
response.setContentType(SOAPConstants.SOAP_1_1_CONTENT_TYPE);
+message.writeTo(response.getOutputStream());
+request.setHandled(true);
+} catch (SOAPException ex) {
+throw new RuntimeException("Failed to generate SOAP 
message", ex);
+}
 }
-   }else{
-   //If resource is not available online, do a mock test
-   assertTrue(true);
-   }
-}
-
-
-private boolean isNetworkedResourceAvailable(String url) {
-HttpClient client = new HttpClient();
-GetMethod method = new GetMethod(url);
-
client.getHttpConnectionManager().getParams().setConnectionTimeout(1000);
-method.getParams().s

svn commit: r1036660 - in /axis/axis2/java/core/branches/1_5: ./ modules/distribution/ modules/kernel/src/org/apache/axis2/transport/http/util/ modules/kernel/test/org/apache/axis2/transport/http/util

2010-11-18 Thread veithen
Author: veithen
Date: Thu Nov 18 22:39:42 2010
New Revision: 1036660

URL: http://svn.apache.org/viewvc?rev=1036660&view=rev
Log:
AXIS2-4889: Merged r1036659 to the 1.5 branch.

Modified:
axis/axis2/java/core/branches/1_5/   (props changed)
axis/axis2/java/core/branches/1_5/modules/distribution/   (props changed)

axis/axis2/java/core/branches/1_5/modules/kernel/src/org/apache/axis2/transport/http/util/QueryStringParser.java
   (props changed)

axis/axis2/java/core/branches/1_5/modules/kernel/test/org/apache/axis2/transport/http/util/QueryStringParserTest.java
   (props changed)
axis/axis2/java/core/branches/1_5/modules/parent/   (props changed)
axis/axis2/java/core/branches/1_5/modules/saaj/pom.xml

axis/axis2/java/core/branches/1_5/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java

axis/axis2/java/core/branches/1_5/modules/saaj/test/org/apache/axis2/saaj/TestUtils.java
   (props changed)
axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/   (props 
changed)
axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/pom.xml   
(props changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/src/main/java/org/apache/axis2/handlers/
   (props changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/module/src/main/resources/META-INF/module.xml
   (props changed)
axis/axis2/java/core/branches/1_5/modules/soapmonitor/servlet/   (props 
changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/applet/
   (props changed)

axis/axis2/java/core/branches/1_5/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/
   (props changed)
axis/axis2/java/core/branches/1_5/modules/transport/http/pom.xml   (props 
changed)
axis/axis2/java/core/branches/1_5/modules/transport/http/src/   (props 
changed)
axis/axis2/java/core/branches/1_5/modules/transport/local/   (props changed)

axis/axis2/java/core/branches/1_5/modules/webapp/src/main/java/org/apache/axis2/webapp/AdminAgent.java
   (props changed)

axis/axis2/java/core/branches/1_5/modules/webapp/src/main/java/org/apache/axis2/webapp/AxisAdminServlet.java
   (props changed)

Propchange: axis/axis2/java/core/branches/1_5/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 22:39:42 2010
@@ -1,2 +1,2 @@
-/axis/axis2/java/core/trunk:922914,922941,922983,935169,935174,935338,937004,944347,944915,951385,960693,960976,960978,960984,960995,961012,961964,962844,963081,963147,965032,965036,965056,965068,965074,965213,965268,965277,965302,965454,966371,966401,966428,966536,979882-979883,979886,980242,981036,981038,981055-981056,981058,981095,981188,981220-981221,981237,981262,981278,981293,981306,981311,981985,981992,982008,982387,982393,982795,982800,983101,983110,983114,983119-983120,983128,983185,983236,983270,983276,983280,983316,983363,983370,983372,985458,985464,985626,985634,985661,985715,985717,985744,985748,985752,985763,985791,985796,985851,986844,986889,987313,987712-987715,987783,987832,987873,987883,987913,987935,990350,990369,990377,990384,990394,990398,990404,990434,990445,990449,1001279,1001452-1001466,1001673,1029034,1029153,1029308,1029372,1029377,1029610-1029651,1030008,1030538,1031350,1031352,1031799,1032001,1032390,1032401,1032681,1032694,1033898,1033942,1033956
 ,1034010,1034015,1034142,1034173,1034213,1036624
+/axis/axis2/java/core/trunk:922914,922941,922983,935169,935174,935338,937004,944347,944915,951385,960693,960976,960978,960984,960995,961012,961964,962844,963081,963147,965032,965036,965056,965068,965074,965213,965268,965277,965302,965454,966371,966401,966428,966536,979882-979883,979886,980242,981036,981038,981055-981056,981058,981095,981188,981220-981221,981237,981262,981278,981293,981306,981311,981985,981992,982008,982387,982393,982795,982800,983101,983110,983114,983119-983120,983128,983185,983236,983270,983276,983280,983316,983363,983370,983372,985458,985464,985626,985634,985661,985715,985717,985744,985748,985752,985763,985791,985796,985851,986844,986889,987313,987712-987715,987783,987832,987873,987883,987913,987935,990350,990369,990377,990384,990394,990398,990404,990434,990445,990449,1001279,1001452-1001466,1001673,1029034,1029153,1029308,1029372,1029377,1029610-1029651,1030008,1030538,1031350,1031352,1031799,1032001,1032390,1032401,1032681,1032694,1033898,1033942,1033956
 ,1034010,1034015,1034142,1034173,1034213,1036624,1036659
 
/webservices/axis2/trunk/java:728674,731798,732539,732541,732873,732877,732924,732927,732939,733293,733295,733304,733306,733348,733354,733394,733399,733463-733464,733533,733539-733540,733676,733776,733900,733910,734227,734237,734261,738057,738067,738071,738086,738110,738113,738117,738158,740332,740357,740360,741300,741784,741873,741878,741881,748761,751958,754458,754467,754503,757151-757153,759488,759507,759878,759968,761025,761044,76106

svn commit: r1036675 - /axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java

2010-11-18 Thread veithen
Author: veithen
Date: Thu Nov 18 23:07:54 2010
New Revision: 1036675

URL: http://svn.apache.org/viewvc?rev=1036675&view=rev
Log:
Replaced usage of deprecated MIMEOutputUtils class.

Modified:

axis/axis2/java/core/trunk/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java

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=1036675&r1=1036674&r2=1036675&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
 Thu Nov 18 23:07:54 2010
@@ -20,19 +20,15 @@
 package org.apache.axis2.saaj;
 
 import org.apache.axiom.attachments.Attachments;
-import org.apache.axiom.attachments.ByteArrayDataSource;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.impl.MIMEOutputUtils;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.om.impl.OMMultipartWriter;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
 import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
 import org.apache.axis2.saaj.util.SAAJUtil;
 import org.apache.axis2.transport.http.HTTPConstants;
 
-import javax.activation.DataHandler;
 import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.MimeHeader;
 import javax.xml.soap.MimeHeaders;
@@ -43,7 +39,6 @@ import javax.xml.soap.SOAPHeader;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.soap.SOAPPart;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -51,7 +46,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Hashtable;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.Map;
 
 public class SOAPMessageImpl extends SOAPMessage {
@@ -322,20 +316,14 @@ public class SOAPMessageImpl extends SOA
 } else {
 
format.setSOAP11(((SOAPEnvelopeImpl)soapPart.getEnvelope()).getOMFactory()
 instanceof SOAP11Factory);
-Map attachmentsMap = new 
LinkedHashMap();
+OMMultipartWriter mpw = new OMMultipartWriter(out, format);
+OutputStream rootPartOutputStream = mpw.writeRootPart();
+envelope.serialize(rootPartOutputStream);
+rootPartOutputStream.close();
 for (AttachmentPart ap : attachmentParts) {
-attachmentsMap.put(ap.getContentId(), ap.getDataHandler());
+mpw.writePart(ap.getDataHandler(), ap.getContentId());
 }
-ByteArrayOutputStream baos = new ByteArrayOutputStream();
-envelope.serialize(baos);
-String contentType =
-(format.isSOAP11() ? 
SOAP11Constants.SOAP_11_CONTENT_TYPE :
- 
SOAP12Constants.SOAP_12_CONTENT_TYPE)
-+ "; charset=" + format.getCharSetEncoding();
-DataHandler rootDataHandler =
-new DataHandler(new 
ByteArrayDataSource(baos.toByteArray(), contentType));
-
MIMEOutputUtils.writeDataHandlerWithAttachmentsMessage(rootDataHandler,
-contentType, out, attachmentsMap, format);
+mpw.complete();
 }
 saveChanges();
 } catch (Exception e) {