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 2006/09/04 11:09:05 UTC
svn commit: r439988 -
/incubator/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/AsyncHTTPSender.java
Author: asankha
Date: Mon Sep 4 02:08:59 2006
New Revision: 439988
URL: http://svn.apache.org/viewvc?view=rev&rev=439988
Log:
Send asynchronously only if request was through async listener
Modified:
incubator/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/AsyncHTTPSender.java
Modified: incubator/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/AsyncHTTPSender.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/AsyncHTTPSender.java?view=diff&rev=439988&r1=439987&r2=439988
==============================================================================
--- incubator/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/AsyncHTTPSender.java (original)
+++ incubator/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/AsyncHTTPSender.java Mon Sep 4 02:08:59 2006
@@ -17,8 +17,10 @@
import org.apache.axis2.handlers.AbstractHandler;
import org.apache.axis2.transport.TransportSender;
+import org.apache.axis2.transport.OutTransportInfo;
import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
import org.apache.axis2.transport.http.HTTPTransportUtils;
+import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.OperationContext;
@@ -33,6 +35,7 @@
import org.safehaus.asyncweb.http.HttpResponse;
import org.safehaus.asyncweb.http.ResponseStatus;
+import javax.xml.stream.XMLStreamException;
import java.io.OutputStream;
/**
@@ -111,7 +114,11 @@
}
} else {
if (msgContext.getProperty(Constants.OUT_TRANSPORT_INFO) != null) {
- sendAsyncResponse(msgContext, format, dataOut);
+ if (msgContext.getProperty(Constants.OUT_TRANSPORT_INFO) instanceof HttpRequest) {
+ sendAsyncResponse(msgContext, format, dataOut);
+ } else {
+ sendUsingOutputStream(msgContext, format, dataOut);
+ }
}
else {
throw new AxisFault("Both the TO and Property MessageContext.TRANSPORT_OUT is Null, No where to send");
@@ -141,6 +148,50 @@
}
request.commitResponse(response);
+ }
+
+ private void sendUsingOutputStream(MessageContext msgContext,
+ OMOutputFormat format,
+ OMElement dataOut) throws AxisFault {
+ OutputStream out =
+ (OutputStream) msgContext
+ .getProperty(MessageContext.TRANSPORT_OUT);
+
+ if (msgContext.isServerSide()) {
+ OutTransportInfo transportInfo =
+ (OutTransportInfo) msgContext
+ .getProperty(Constants.OUT_TRANSPORT_INFO);
+
+ if (transportInfo != null) {
+ String contentType;
+
+ Object contentTypeObject = msgContext.getProperty(Constants.Configuration.CONTENT_TYPE);
+ if (contentTypeObject != null) {
+ contentType = (String) contentTypeObject;
+ } else if (msgContext.isDoingREST()) {
+ contentType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
+ } else {
+ contentType = format.getContentType();
+ format.setSOAP11(msgContext.isSOAP11());
+ }
+
+
+ String encoding = contentType + "; charset="
+ + format.getCharSetEncoding();
+
+ transportInfo.setContentType(encoding);
+ } else {
+ throw new AxisFault(Constants.OUT_TRANSPORT_INFO +
+ " has not been set");
+ }
+ }
+
+ format.setDoOptimize(msgContext.isDoingMTOM());
+ try {
+ dataOut.serializeAndConsume(out, format);
+ } catch (XMLStreamException e) {
+ throw new AxisFault(e);
+ }
}
public void cleanup(MessageContext msgContext) throws AxisFault {
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org