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)));


Reply via email to