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/04/24 16:52:04 UTC

svn commit: r531965 - in /webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp: ClientWorker.java HttpCoreNIOListener.java ServerHandler.java ServerWorker.java

Author: asankha
Date: Tue Apr 24 07:52:03 2007
New Revision: 531965

URL: http://svn.apache.org/viewvc?view=rev&rev=531965
Log:
use BuilderUtil to determine the charset encoding from http responses
correctly set the transport name into the axis2 MC for https (note: axis2 still does not define a constant for https transport)

Modified:
    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/HttpCoreNIOListener.java
    webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java
    webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java

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=531965&r1=531964&r2=531965
==============================================================================
--- 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 Tue Apr 24 07:52:03 2007
@@ -23,6 +23,7 @@
 import org.apache.axis2.description.WSDL2Constants;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
+import org.apache.axis2.builder.BuilderUtil;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.transport.TransportUtils;
@@ -119,10 +120,13 @@
         SOAPEnvelope envelope = null;
         try {
             String contentType = response.getFirstHeader(HTTP.CONTENT_TYPE).getValue();
+            String charSetEnc = BuilderUtil.getCharSetEncoding(contentType);
+            if (charSetEnc == null) {
+                charSetEnc = MessageContext.DEFAULT_CHAR_SET_ENCODING;
+            }
+
             if (contentType.indexOf(HTTP.CHARSET_PARAM) > 0) {
-                responseMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
-                    contentType.substring(contentType.indexOf(HTTP.CHARSET_PARAM) +
-                    HTTP.CHARSET_PARAM.length()));
+                responseMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
             } else {
                 responseMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
                     MessageContext.DEFAULT_CHAR_SET_ENCODING);

Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java?view=diff&rev=531965&r1=531964&r2=531965
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java Tue Apr 24 07:52:03 2007
@@ -80,7 +80,7 @@
             log.error("Error starting the IOReactor", e);
         }
 
-        NHttpServiceHandler handler = new ServerHandler(cfgCtx, params);
+        NHttpServiceHandler handler = new ServerHandler(cfgCtx, params, sslContext != null);
         IOEventDispatch ioEventDispatch = getEventDispatch(
             handler, sslContext, sslIOSessionHandler, params);
 

Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java?view=diff&rev=531965&r1=531964&r2=531965
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java Tue Apr 24 07:52:03 2007
@@ -67,6 +67,8 @@
 
     /** the Axis2 configuration context */
     ConfigurationContext cfgCtx = null;
+    /** is this https? */
+    private boolean isHttps = false;
 
     /** the thread pool to process requests */
     private Executor workerPool = null;
@@ -78,10 +80,12 @@
     private static final String REQUEST_BUFFER = "request-buffer";
     private static final String RESPONSE_BUFFER = "response-buffer";
 
-    public ServerHandler(final ConfigurationContext cfgCtx, final HttpParams params) {
+    public ServerHandler(final ConfigurationContext cfgCtx, final HttpParams params,
+        final boolean isHttps) {
         super();
         this.cfgCtx = cfgCtx;
         this.params = params;
+        this.isHttps = isHttps;
         this.responseFactory = new DefaultHttpResponseFactory();
         this.httpProcessor = getHttpProcessor();
         this.connStrategy = new DefaultConnectionReuseStrategy();
@@ -128,7 +132,7 @@
 
             // hand off processing of the request to a thread off the pool
             workerPool.execute(
-                new ServerWorker(cfgCtx, conn, this,
+                new ServerWorker(cfgCtx, conn, isHttps, this,
                     request, Channels.newInputStream(requestPipe.source()),
                     response, Channels.newOutputStream(responsePipe.sink())));
 

Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java?view=diff&rev=531965&r1=531964&r2=531965
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java Tue Apr 24 07:52:03 2007
@@ -61,6 +61,8 @@
     private ServerHandler serverHandler = null;
     /** the underlying http connection */
     private NHttpServerConnection conn = null;
+    /** is this https? */
+    private boolean isHttps = false;
     /** the http request */
     private HttpRequest request = null;
     /** the http response message (which the this would be creating) */
@@ -89,12 +91,14 @@
      * @param os the output stream to write the response body if one is applicable
      */
     public ServerWorker(final ConfigurationContext cfgCtx, final NHttpServerConnection conn,
+        final boolean isHttps,
         final ServerHandler serverHandler,
         final HttpRequest request, final InputStream is,
         final HttpResponse response, final OutputStream os) {
 
         this.cfgCtx = cfgCtx;
         this.conn = conn;
+        this.isHttps = isHttps;
         this.serverHandler = serverHandler;
         this.request = request;
         this.response = response;
@@ -114,7 +118,19 @@
         MessageContext msgContext = new MessageContext();
         msgContext.setProperty(MessageContext.TRANSPORT_NON_BLOCKING, Boolean.TRUE);
         msgContext.setConfigurationContext(cfgCtx);
-        msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
+        if (isHttps) {
+            msgContext.setTransportOut(cfgCtx.getAxisConfiguration()
+                .getTransportOut("https"));
+            msgContext.setTransportIn(cfgCtx.getAxisConfiguration()
+                .getTransportIn("https"));
+            msgContext.setIncomingTransportName("https");
+        } else {
+            msgContext.setTransportOut(cfgCtx.getAxisConfiguration()
+                .getTransportOut(Constants.TRANSPORT_HTTP));
+            msgContext.setTransportIn(cfgCtx.getAxisConfiguration()
+                .getTransportIn(Constants.TRANSPORT_HTTP));
+            msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
+        }
         msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, this);
         msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
         msgContext.setServerSide(true);
@@ -135,11 +151,6 @@
                 msgContext.setProperty(MessageContext.REMOTE_ADDR, remoteAddr.getHostAddress());
             }
         }
-
-        msgContext.setTransportOut(cfgCtx.getAxisConfiguration()
-            .getTransportOut(Constants.TRANSPORT_HTTP));
-        msgContext.setTransportIn(cfgCtx.getAxisConfiguration()
-            .getTransportIn(Constants.TRANSPORT_HTTP));
 
         return msgContext;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org


Re: svn commit: r531965

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Tue, 2007-04-24 at 14:52 +0000, asankha@apache.org wrote:
> Author: asankha
> Date: Tue Apr 24 07:52:03 2007
> New Revision: 531965
> 

...

> @@ -119,10 +120,13 @@
>          SOAPEnvelope envelope = null;
>          try {
>              String contentType = response.getFirstHeader(HTTP.CONTENT_TYPE).getValue();
> +            String charSetEnc = BuilderUtil.getCharSetEncoding(contentType);
> +            if (charSetEnc == null) {
> +                charSetEnc = MessageContext.DEFAULT_CHAR_SET_ENCODING;
> +            }
> +
>              if (contentType.indexOf(HTTP.CHARSET_PARAM) > 0) {
> -                responseMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
> -                    contentType.substring(contentType.indexOf(HTTP.CHARSET_PARAM) +
> -                    HTTP.CHARSET_PARAM.length()));
> +                responseMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
>              } else {
>                  responseMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,

Hi Asankha,

HttpCore API provides a number of utilities optimized for easy and
efficient tokenization of HTTP headers. Header#getElements() method can
parse the header value into an array of header elements with virtually
zero intermediate garbage on the heap. One could also use the
EntityUtils#getContentCharSet() method to obtain the content charset
used to encode the body of an HTTP message.

For what it is worth to you.

Cheers

Oleg




>                      MessageContext.DEFAULT_CHAR_SET_ENCODING);
> 
> Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java
> URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java?view=diff&rev=531965&r1=531964&r2=531965
> ==============================================================================
> --- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java (original)
> +++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOListener.java Tue Apr 24 07:52:03 2007
> @@ -80,7 +80,7 @@
>              log.error("Error starting the IOReactor", e);
>          }
>  
> -        NHttpServiceHandler handler = new ServerHandler(cfgCtx, params);
> +        NHttpServiceHandler handler = new ServerHandler(cfgCtx, params, sslContext != null);
>          IOEventDispatch ioEventDispatch = getEventDispatch(
>              handler, sslContext, sslIOSessionHandler, params);
>  
> 
> Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java
> URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java?view=diff&rev=531965&r1=531964&r2=531965
> ==============================================================================
> --- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java (original)
> +++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerHandler.java Tue Apr 24 07:52:03 2007
> @@ -67,6 +67,8 @@
>  
>      /** the Axis2 configuration context */
>      ConfigurationContext cfgCtx = null;
> +    /** is this https? */
> +    private boolean isHttps = false;
>  
>      /** the thread pool to process requests */
>      private Executor workerPool = null;
> @@ -78,10 +80,12 @@
>      private static final String REQUEST_BUFFER = "request-buffer";
>      private static final String RESPONSE_BUFFER = "response-buffer";
>  
> -    public ServerHandler(final ConfigurationContext cfgCtx, final HttpParams params) {
> +    public ServerHandler(final ConfigurationContext cfgCtx, final HttpParams params,
> +        final boolean isHttps) {
>          super();
>          this.cfgCtx = cfgCtx;
>          this.params = params;
> +        this.isHttps = isHttps;
>          this.responseFactory = new DefaultHttpResponseFactory();
>          this.httpProcessor = getHttpProcessor();
>          this.connStrategy = new DefaultConnectionReuseStrategy();
> @@ -128,7 +132,7 @@
>  
>              // hand off processing of the request to a thread off the pool
>              workerPool.execute(
> -                new ServerWorker(cfgCtx, conn, this,
> +                new ServerWorker(cfgCtx, conn, isHttps, this,
>                      request, Channels.newInputStream(requestPipe.source()),
>                      response, Channels.newOutputStream(responsePipe.sink())));
>  
> 
> Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java
> URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java?view=diff&rev=531965&r1=531964&r2=531965
> ==============================================================================
> --- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java (original)
> +++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/ServerWorker.java Tue Apr 24 07:52:03 2007
> @@ -61,6 +61,8 @@
>      private ServerHandler serverHandler = null;
>      /** the underlying http connection */
>      private NHttpServerConnection conn = null;
> +    /** is this https? */
> +    private boolean isHttps = false;
>      /** the http request */
>      private HttpRequest request = null;
>      /** the http response message (which the this would be creating) */
> @@ -89,12 +91,14 @@
>       * @param os the output stream to write the response body if one is applicable
>       */
>      public ServerWorker(final ConfigurationContext cfgCtx, final NHttpServerConnection conn,
> +        final boolean isHttps,
>          final ServerHandler serverHandler,
>          final HttpRequest request, final InputStream is,
>          final HttpResponse response, final OutputStream os) {
>  
>          this.cfgCtx = cfgCtx;
>          this.conn = conn;
> +        this.isHttps = isHttps;
>          this.serverHandler = serverHandler;
>          this.request = request;
>          this.response = response;
> @@ -114,7 +118,19 @@
>          MessageContext msgContext = new MessageContext();
>          msgContext.setProperty(MessageContext.TRANSPORT_NON_BLOCKING, Boolean.TRUE);
>          msgContext.setConfigurationContext(cfgCtx);
> -        msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
> +        if (isHttps) {
> +            msgContext.setTransportOut(cfgCtx.getAxisConfiguration()
> +                .getTransportOut("https"));
> +            msgContext.setTransportIn(cfgCtx.getAxisConfiguration()
> +                .getTransportIn("https"));
> +            msgContext.setIncomingTransportName("https");
> +        } else {
> +            msgContext.setTransportOut(cfgCtx.getAxisConfiguration()
> +                .getTransportOut(Constants.TRANSPORT_HTTP));
> +            msgContext.setTransportIn(cfgCtx.getAxisConfiguration()
> +                .getTransportIn(Constants.TRANSPORT_HTTP));
> +            msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
> +        }
>          msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, this);
>          msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
>          msgContext.setServerSide(true);
> @@ -135,11 +151,6 @@
>                  msgContext.setProperty(MessageContext.REMOTE_ADDR, remoteAddr.getHostAddress());
>              }
>          }
> -
> -        msgContext.setTransportOut(cfgCtx.getAxisConfiguration()
> -            .getTransportOut(Constants.TRANSPORT_HTTP));
> -        msgContext.setTransportIn(cfgCtx.getAxisConfiguration()
> -            .getTransportIn(Constants.TRANSPORT_HTTP));
>  
>          return msgContext;
>      }
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: synapse-dev-help@ws.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org