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