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]

Reply via email to