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/03/05 10:02:14 UTC
svn commit: r514611 - in
/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp:
ClientHandler.java ClientWorker.java HttpCoreNIOSender.java
Author: asankha
Date: Mon Mar 5 01:02:13 2007
New Revision: 514611
URL: http://svn.apache.org/viewvc?view=rev&rev=514611
Log:
update NIO transport to read and write back custom http headers on the responses
Modified:
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientWorker.java
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java?view=diff&rev=514611&r1=514610&r2=514611
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java Mon Mar 5 01:02:13 2007
@@ -312,7 +312,7 @@
context.setAttribute(HttpContext.HTTP_RESPONSE, response);
workerPool.execute(
- new ClientWorker(cfgCtx, Channels.newInputStream(responsePipe.source()),
+ new ClientWorker(cfgCtx, Channels.newInputStream(responsePipe.source()), response,
(MessageContext) context.getAttribute(OUTGOING_MESSAGE_CONTEXT)));
} catch (IOException e) {
Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientWorker.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientWorker.java?view=diff&rev=514611&r1=514610&r2=514611
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientWorker.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientWorker.java Mon Mar 5 01:02:13 2007
@@ -27,9 +27,13 @@
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.http.HttpResponse;
+import org.apache.http.Header;
import java.io.InputStream;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
/**
* Performs processing of the HTTP response received for our outgoing request. An instance of this
@@ -47,6 +51,8 @@
private InputStream in = null;
/** the original request message context */
private MessageContext outMsgCtx = null;
+ /** the HttpResponse received */
+ private HttpResponse response = null;
/**
* Create the thread that would process the response message received for the outgoing message
@@ -55,11 +61,13 @@
* @param in the InputStream to read the body of the response message received
* @param outMsgCtx the original outgoing message context (i.e. corresponding request)
*/
- public ClientWorker(ConfigurationContext cfgCtx, InputStream in, MessageContext outMsgCtx) {
+ public ClientWorker(ConfigurationContext cfgCtx, InputStream in,
+ HttpResponse response, MessageContext outMsgCtx) {
this.cfgCtx = cfgCtx;
this.in = in;
this.outMsgCtx = outMsgCtx;
+ this.response = response;
try {
responseMsgCtx = outMsgCtx.getOperationContext().
@@ -78,6 +86,17 @@
.getProperty(MessageContext.TRANSPORT_IN));
responseMsgCtx.setTransportIn(outMsgCtx.getTransportIn());
responseMsgCtx.setTransportOut(outMsgCtx.getTransportOut());
+
+ // set any transport headers received
+ Header[] headers = response.getAllHeaders();
+ if (headers != null && headers.length > 0) {
+ Map headerMap = new HashMap();
+ for (int i=0; i<headers.length; i++) {
+ Header header = headers[i];
+ headerMap.put(header.getName(), header.getValue());
+ }
+ responseMsgCtx.setProperty(MessageContext.TRANSPORT_HEADERS, headerMap);
+ }
responseMsgCtx.setOperationContext(outMsgCtx.getOperationContext());
responseMsgCtx.setConfigurationContext(outMsgCtx.getConfigurationContext());
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=514611&r1=514610&r2=514611
==============================================================================
--- 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 Mon Mar 5 01:02:13 2007
@@ -52,6 +52,8 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.net.InetSocketAddress;
+import java.util.Map;
+import java.util.Iterator;
/**
* NIO transport sender for Axis2 based on HttpCore and NIO extensions
@@ -246,6 +248,18 @@
response.setHeader(HTTP.CONTENT_TYPE, Util.getContentType(msgContext) + "; charset=" + format.getCharSetEncoding());
+ // set any transport headers
+ Map transportHeaders = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
+ if (transportHeaders != null && !transportHeaders.values().isEmpty()) {
+ Iterator iter = transportHeaders.keySet().iterator();
+ while (iter.hasNext()) {
+ Object header = iter.next();
+ Object value = transportHeaders.get(header);
+ if (value != null && header instanceof String && value instanceof String) {
+ response.setHeader((String) header, (String) value);
+ }
+ }
+ }
worker.getServiceHandler().commitResponse(worker.getConn(), response);
OutputStream out = worker.getOutputStream();
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org