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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]