You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/06/04 11:09:27 UTC

svn commit: r1131354 - in /camel/trunk/components: camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java

Author: davsclaus
Date: Sat Jun  4 09:09:26 2011
New Revision: 1131354

URL: http://svn.apache.org/viewvc?rev=1131354&view=rev
Log:
CAMEL-2525: Fixed issue with setting content-type with camel-ahc when running in osgi. Added more TRACE logging.

Modified:
    camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java
    camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java

Modified: camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java?rev=1131354&r1=1131353&r2=1131354&view=diff
==============================================================================
--- camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java (original)
+++ camel/trunk/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/DefaultAhcBinding.java Sat Jun  4 09:09:26 2011
@@ -46,12 +46,13 @@ import org.apache.camel.converter.IOConv
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-/**
- *
- */
 public class DefaultAhcBinding implements AhcBinding {
 
+    protected final transient Logger log = LoggerFactory.getLogger(this.getClass());
+
     @Override
     public Request prepareRequest(AhcEndpoint endpoint, Exchange exchange) throws CamelExchangeException {
         if (endpoint.isBridgeEndpoint()) {
@@ -60,11 +61,15 @@ public class DefaultAhcBinding implement
 
         RequestBuilder builder = new RequestBuilder();
         try {
-            builder.setUrl(AhcHelper.createURL(exchange, endpoint));
+            String url = AhcHelper.createURL(exchange, endpoint);
+            log.trace("Setting url {}", url);
+            builder.setUrl(url);
         } catch (URISyntaxException e) {
             throw new CamelExchangeException("Error creating URL", exchange, e);
         }
-        builder.setMethod(extractMethod(exchange));
+        String method = extractMethod(exchange);
+        log.trace("Setting method {}", method);
+        builder.setMethod(method);
 
         populateHeaders(builder, endpoint, exchange);
         populateBody(builder, endpoint, exchange);
@@ -91,6 +96,7 @@ public class DefaultAhcBinding implement
         for (Map.Entry<String, Object> entry : exchange.getIn().getHeaders().entrySet()) {
             String headerValue = exchange.getIn().getHeader(entry.getKey(), String.class);
             if (strategy != null && !strategy.applyFilterToCamelHeaders(entry.getKey(), headerValue, exchange)) {
+                log.trace("Adding header {} = {}", entry.getKey(), headerValue);
                 builder.addHeader(entry.getKey(), headerValue);
             }
         }
@@ -104,6 +110,7 @@ public class DefaultAhcBinding implement
 
         String contentType = ExchangeHelper.getContentType(exchange);
         BodyGenerator body = in.getBody(BodyGenerator.class);
+        String charset = IOConverter.getCharsetName(exchange, false);
 
         if (body == null) {
             try {
@@ -129,7 +136,6 @@ public class DefaultAhcBinding implement
                         // so we only do an instanceof check and accept String if the body is really a String
                         // do not fallback to use the default charset as it can influence the request
                         // (for example application/x-www-form-urlencoded forms being sent)
-                        String charset = IOConverter.getCharsetName(exchange, false);
                         if (charset != null) {
                             body = new ByteArrayBodyGenerator(((String) data).getBytes(charset));
                         } else {
@@ -150,12 +156,18 @@ public class DefaultAhcBinding implement
             }
         }
 
-        if (contentType != null) {
-            builder.setHeader(Exchange.CONTENT_TYPE, contentType);
-        }
         if (body != null) {
+            log.trace("Setting body {}", body);
             builder.setBody(body);
         }
+        if (charset != null) {
+            log.trace("Setting body charset {}", charset);
+            builder.setBodyEncoding(charset);
+        }
+        // must set content type, even if its null, otherwise it may default to
+        // application/x-www-form-urlencoded which may not be your intention
+        log.trace("Setting Content-Type {}", contentType);
+        builder.setHeader(Exchange.CONTENT_TYPE, contentType);
     }
 
     @Override

Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java?rev=1131354&r1=1131353&r2=1131354&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java Sat Jun  4 09:09:26 2011
@@ -24,7 +24,6 @@ import java.io.Serializable;
 import java.net.URLDecoder;
 import java.util.Enumeration;
 import java.util.Map;
-
 import javax.activation.DataHandler;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
@@ -43,6 +42,8 @@ import org.apache.camel.spi.HeaderFilter
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.MessageHelper;
 import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Binding between {@link HttpMessage} and {@link HttpServletResponse}.
@@ -51,6 +52,7 @@ import org.apache.camel.util.ObjectHelpe
  */
 public class DefaultHttpBinding implements HttpBinding {
 
+    private static final transient Logger LOG = LoggerFactory.getLogger(DefaultHttpBinding.class);
     private boolean useReaderForPayload;
     private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
     private HttpEndpoint endpoint;
@@ -70,6 +72,7 @@ public class DefaultHttpBinding implemen
     }
 
     public void readRequest(HttpServletRequest request, HttpMessage message) {
+        LOG.trace("readRequest {}", request);
         
         // lets force a parse of the body and headers
         message.getBody();
@@ -116,6 +119,15 @@ public class DefaultHttpBinding implemen
         headers.put(Exchange.HTTP_PATH, request.getPathInfo());
         headers.put(Exchange.CONTENT_TYPE, request.getContentType());
 
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("HTTP method {}", request.getMethod());
+            LOG.trace("HTTP query {}", request.getQueryString());
+            LOG.trace("HTTP url {}", request.getRequestURL());
+            LOG.trace("HTTP uri {}", request.getRequestURI());
+            LOG.trace("HTTP path {}", request.getPathInfo());
+            LOG.trace("HTTP content-type {}", request.getContentType());
+        }
+
         // if content type is serialized java object, then de-serialize it to a Java object
         if (request.getContentType() != null && HttpConstants.CONTENT_TYPE_JAVA_SERIALIZED_OBJECT.equals(request.getContentType())) {
             try {
@@ -139,11 +151,14 @@ public class DefaultHttpBinding implemen
         while (names.hasMoreElements()) {
             String name = (String)names.nextElement();
             Object value = request.getParameter(name);
+            LOG.trace("HTTP header {} = {}", name, value);
             if (headerFilterStrategy != null
                 && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
                 headers.put(name, value);
             }
         }
+
+        LOG.trace("HTTP method {} with Content-Type {}", request.getMethod(), request.getContentType());
         
         if (request.getMethod().equals("POST") && request.getContentType() != null
                 && request.getContentType().startsWith(HttpConstants.CONTENT_TYPE_WWW_FORM_URLENCODED)) {
@@ -175,6 +190,7 @@ public class DefaultHttpBinding implemen
         while (names.hasMoreElements()) {
             String name = (String) names.nextElement();
             Object object = request.getAttribute(name);
+            LOG.trace("HTTP attachment {} = {}", name, object);
             if (object instanceof File) {
                 String fileName = request.getParameter(name);
                 message.addAttachment(fileName, new DataHandler(new CamelFileDataSource((File)object, fileName)));