You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by as...@apache.org on 2007/04/18 20:40:03 UTC
svn commit: r530123 - in
/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp:
Axis2HttpRequest.java HttpCoreNIOSender.java Util.java
Author: asankha
Date: Wed Apr 18 11:40:02 2007
New Revision: 530123
URL: http://svn.apache.org/viewvc?view=rev&rev=530123
Log:
Use MessageFormatters to write messages always and also to decide on the content type to resolve MTOM issue on responses
Modified:
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Util.java
Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java?view=diff&rev=530123&r1=530122&r2=530123
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java Wed Apr 18 11:40:02 2007
@@ -23,6 +23,8 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.transport.nhttp.util.PipeImpl;
import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.MessageFormatter;
+import org.apache.axis2.transport.TransportUtils;
import org.apache.http.*;
import org.apache.http.protocol.HTTP;
import org.apache.http.entity.BasicHttpEntity;
@@ -57,6 +59,10 @@
private MessageContext msgContext = null;
/** the Pipe which facilitates the serialization output to be written to the channel */
private PipeImpl pipe = null;
+ /** The Axis2 MessageFormatter that will ensure proper serialization as per Axis2 semantics */
+ MessageFormatter messageFormatter = null;
+ /** The OM Output format holder */
+ OMOutputFormat format = null;
public Axis2HttpRequest(EndpointReference epr, HttpHost httpHost, MessageContext msgContext) {
this.epr = epr;
@@ -85,7 +91,7 @@
* Create and return a new HttpPost request to the destination EPR
* @return the HttpRequest to be sent out
*/
- public HttpRequest getRequest() {
+ public HttpRequest getRequest() throws IOException {
HttpPost httpRequest = new HttpPost(epr.getAddress());
httpRequest.setEntity(new BasicHttpEntity());
@@ -125,9 +131,16 @@
soapAction);
}
+ format = Util.getOMOutputFormat(msgContext);
+ try {
+ messageFormatter = TransportUtils.getMessageFormatter(msgContext);
+ } catch (AxisFault axisFault) {
+ throw new IOException(
+ "Cannot find a suitable MessageFormatter : " + axisFault.getMessage());
+ }
httpRequest.setHeader(
- HTTP.CONTENT_TYPE, Util.getContentType(msgContext) +
- "; charset=" + Util.getOMOutputFormat(msgContext).getCharSetEncoding());
+ HTTP.CONTENT_TYPE,
+ messageFormatter.getContentType(msgContext, format, msgContext.getSoapAction()));
return httpRequest;
}
@@ -150,16 +163,7 @@
log.debug("start streaming outgoing http request");
OutputStream out = Channels.newOutputStream(pipe.sink());
- OMOutputFormat format = Util.getOMOutputFormat(msgContext);
-
- try {
- (msgContext.isDoingREST() ?
- msgContext.getEnvelope().getBody().getFirstElement() : msgContext.getEnvelope())
- .serializeAndConsume(out, format);
- } catch (XMLStreamException e) {
- handleException("Error serializing response message", e);
- }
-
+ messageFormatter.writeTo(msgContext, format, out, false);
try {
out.flush();
out.close();
Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java?view=diff&rev=530123&r1=530122&r2=530123
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java Wed Apr 18 11:40:02 2007
@@ -291,8 +291,10 @@
HttpResponse response = worker.getResponse();
OMOutputFormat format = Util.getOMOutputFormat(msgContext);
-
- response.setHeader(HTTP.CONTENT_TYPE, Util.getContentType(msgContext) + "; charset=" + format.getCharSetEncoding());
+ MessageFormatter messageFormatter = TransportUtils.getMessageFormatter(msgContext);
+ response.setHeader(
+ HTTP.CONTENT_TYPE,
+ messageFormatter.getContentType(msgContext, format, msgContext.getSoapAction()));
// set any transport headers
Map transportHeaders = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
@@ -309,9 +311,7 @@
worker.getServiceHandler().commitResponse(worker.getConn(), response);
OutputStream out = worker.getOutputStream();
- format.setDoOptimize(msgContext.isDoingMTOM());
- try {
- MessageFormatter messageFormatter = TransportUtils.getMessageFormatter(msgContext);
+ try {
messageFormatter.writeTo(msgContext, format, out, false);
out.close();
} catch (IOException e) {
Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Util.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Util.java?view=diff&rev=530123&r1=530122&r2=530123
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Util.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Util.java Wed Apr 18 11:40:02 2007
@@ -61,28 +61,19 @@
public static OMOutputFormat getOMOutputFormat(MessageContext msgContext) {
OMOutputFormat format = new OMOutputFormat();
- String charSetEnc = (String) msgContext.getProperty(
- Constants.Configuration.CHARACTER_SET_ENCODING);
-
- if (charSetEnc == null) {
- OperationContext opctx = msgContext.getOperationContext();
- if (opctx != null) {
- charSetEnc = (String) opctx.getProperty(
- Constants.Configuration.CHARACTER_SET_ENCODING);
- }
- }
-
- // if the charset encoding is still not found use the default
- if (charSetEnc == null) {
- charSetEnc = MessageContext.DEFAULT_CHAR_SET_ENCODING;
- }
- format.setCharSetEncoding(charSetEnc);
-
msgContext.setDoingMTOM(HTTPTransportUtils.doWriteMTOM(msgContext));
msgContext.setDoingSwA(HTTPTransportUtils.doWriteSwA(msgContext));
msgContext.setDoingREST(HTTPTransportUtils.isDoingREST(msgContext));
format.setSOAP11(msgContext.isSOAP11());
format.setDoOptimize(msgContext.isDoingMTOM());
+ format.setDoingSWA(msgContext.isDoingSwA());
+
+ format.setCharSetEncoding(HTTPTransportUtils.getCharSetEncoding(msgContext));
+ Object mimeBoundaryProperty = msgContext.getProperty(Constants.Configuration.MIME_BOUNDARY);
+ if (mimeBoundaryProperty != null) {
+ format.setMimeBoundary((String) mimeBoundaryProperty);
+ }
+
return format;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org