Hi Claus,

if (methodToUse.isEntityEnclosing()) {
((EntityEnclosingMethod)method).setRequestEntity(requestEntity);
            if (requestEntity.getContentType() == null) {
                LOG.warn("Missing the ContentType in the request entity!");
            }
        }

The Get method will be excluded, since there is no entity for Get method
 . The code should be fine, and I will add the URI into the warning log.

Thanks,

Willem


Claus Ibsen wrote:
> Willem
> 
> Beware to do WARN logging in case it will log all the time
> +                LOG.warn("Missing the ContentType in the request entity!");
> 
> Its quite often not to set a Content-Type using camel http to just do
> a text/plain GET.
> So be sure that the http client sets a Content-Type if the end user
> have not provided anyone.
> 
> If the content-type is often null then consider changing the WARN to
> DEBUG. And you could output the URI also so people looking in the log
> can better known which HTTP call is the problem.
> 
> 
> 
> On Thu, May 14, 2009 at 8:46 AM,  <ningji...@apache.org> wrote:
>> Author: ningjiang
>> Date: Thu May 14 06:46:16 2009
>> New Revision: 774658
>>
>> URL: http://svn.apache.org/viewvc?rev=774658&view=rev
>> Log:
>> CAMEL-1609 Better fixing the issue of Content type setting for HTTP producer
>>
>> Modified:
>>    
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
>>    
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java
>>    
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
>>    
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/RequestEntityConverter.java
>>    
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/helper/GZIPHelper.java
>>
>> 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=774658&r1=774657&r2=774658&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
>>  Thu May 14 06:46:16 2009
>> @@ -20,6 +20,8 @@
>>  import java.io.IOException;
>>  import java.io.InputStream;
>>  import java.io.PrintWriter;
>> +import java.util.Enumeration;
>> +import java.util.Map;
>>
>>  import javax.servlet.ServletOutputStream;
>>  import javax.servlet.http.HttpServletRequest;
>> @@ -50,7 +52,40 @@
>>     public void readRequest(HttpServletRequest request, HttpMessage message) 
>> {
>>         // lets force a parse of the body and headers
>>         message.getBody();
>> -        message.getHeaders();
>> +        // populate the headers from the request
>> +        Map<String, Object> headers = message.getHeaders();
>> +
>> +        //apply the headerFilterStrategy
>> +        Enumeration names = request.getHeaderNames();
>> +        while (names.hasMoreElements()) {
>> +            String name = (String)names.nextElement();
>> +            Object value = request.getHeader(name);
>> +            if (headerFilterStrategy != null
>> +                && !headerFilterStrategy.applyFilterToExternalHeaders(name, 
>> value, message.getExchange())) {
>> +                headers.put(name, value);
>> +            }
>> +        }
>> +
>> +        //if the request method is Get, we also populate the http request 
>> parameters
>> +        if (request.getMethod().equalsIgnoreCase("GET")) {
>> +            names = request.getParameterNames();
>> +            while (names.hasMoreElements()) {
>> +                String name = (String)names.nextElement();
>> +                Object value = request.getParameter(name);
>> +                if (headerFilterStrategy != null
>> +                    && 
>> !headerFilterStrategy.applyFilterToExternalHeaders(name, value, 
>> message.getExchange())) {
>> +                    headers.put(name, value);
>> +                }
>> +            }
>> +        }
>> +
>> +        // store the method and query and other info in headers
>> +        headers.put(HttpConstants.HTTP_METHOD, request.getMethod());
>> +        headers.put(HttpConstants.HTTP_QUERY, request.getQueryString());
>> +        headers.put(HttpConstants.HTTP_PATH, request.getPathInfo());
>> +        headers.put(HttpConstants.HTTP_CONTENT_TYPE, 
>> request.getContentType());
>> +        headers.put(HttpConstants.HTTP_CHARACTER_ENCODING, 
>> request.getCharacterEncoding());
>> +
>>     }
>>
>>     public void writeResponse(HttpExchange exchange, HttpServletResponse 
>> response) throws IOException {
>>
>> Modified: 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java
>> URL: 
>> http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java?rev=774658&r1=774657&r2=774658&view=diff
>> ==============================================================================
>> --- 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java
>>  (original)
>> +++ 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java
>>  Thu May 14 06:46:16 2009
>> @@ -28,7 +28,8 @@
>>     }
>>
>>     protected void initialize() {
>> -        getOutFilter().add("content-length");
>> +        getOutFilter().add("content-length");
>> +        getOutFilter().add("content-type");
>>         getOutFilter().add(HttpConstants.HTTP_METHOD.toLowerCase());
>>         getOutFilter().add(HttpConstants.HTTP_QUERY);
>>         getOutFilter().add(HttpConstants.HTTP_RESPONSE_CODE.toLowerCase());
>>
>> Modified: 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
>> URL: 
>> http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java?rev=774658&r1=774657&r2=774658&view=diff
>> ==============================================================================
>> --- 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
>>  (original)
>> +++ 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
>>  Thu May 14 06:46:16 2009
>> @@ -27,6 +27,8 @@
>>  import org.apache.camel.converter.stream.CachedOutputStream;
>>  import org.apache.camel.impl.DefaultProducer;
>>  import org.apache.camel.spi.HeaderFilterStrategy;
>> +import org.apache.camel.util.ExchangeHelper;
>> +import org.apache.camel.util.MessageHelper;
>>  import org.apache.camel.util.ObjectHelper;
>>  import org.apache.commons.httpclient.Header;
>>  import org.apache.commons.httpclient.HttpClient;
>> @@ -220,6 +222,9 @@
>>         }
>>         if (methodToUse.isEntityEnclosing()) {
>>             ((EntityEnclosingMethod)method).setRequestEntity(requestEntity);
>> +            if (requestEntity.getContentType() == null) {
>> +                LOG.warn("Missing the ContentType in the request entity!");
>> +            }
>>         }
>>
>>         return method;
>> @@ -237,12 +242,12 @@
>>             return null;
>>         }
>>
>> -        RequestEntity answer = in.getBody(RequestEntity.class);
>> +        RequestEntity answer = in.getBody(RequestEntity.class);
>>         if (answer == null) {
>>             try {
>>                 String data = in.getBody(String.class);
>>                 if (data != null) {
>> -                    String contentType = in.getHeader("Content-Type", 
>> String.class);
>> +                    String contentType = 
>> ExchangeHelper.getContentType(exchange);
>>                     String charset = 
>> exchange.getProperty(Exchange.CHARSET_NAME, String.class);
>>                     answer = new StringRequestEntity(data, contentType, 
>> charset);
>>                 }
>> @@ -250,7 +255,6 @@
>>                 throw new RuntimeCamelException(e);
>>             }
>>         }
>> -
>>         return answer;
>>     }
>>
>>
>> Modified: 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/RequestEntityConverter.java
>> URL: 
>> http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/RequestEntityConverter.java?rev=774658&r1=774657&r2=774658&view=diff
>> ==============================================================================
>> --- 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/RequestEntityConverter.java
>>  (original)
>> +++ 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/RequestEntityConverter.java
>>  Thu May 14 06:46:16 2009
>> @@ -22,6 +22,7 @@
>>  import org.apache.camel.Converter;
>>  import org.apache.camel.Exchange;
>>  import org.apache.camel.component.http.helper.GZIPHelper;
>> +import org.apache.camel.util.ExchangeHelper;
>>  import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
>>  import org.apache.commons.httpclient.methods.RequestEntity;
>>
>> @@ -36,7 +37,7 @@
>>         return new InputStreamRequestEntity(
>>                 GZIPHelper.toGZIPInputStreamIfRequested(
>>                         
>> exchange.getIn().getHeader(GZIPHelper.CONTENT_ENCODING, String.class),
>> -                        buffer.array()));
>> +                        buffer.array()), 
>> ExchangeHelper.getContentType(exchange));
>>     }
>>
>>     @Converter
>> @@ -44,7 +45,7 @@
>>         return new InputStreamRequestEntity(
>>                 GZIPHelper.toGZIPInputStreamIfRequested(
>>                         
>> exchange.getIn().getHeader(GZIPHelper.CONTENT_ENCODING, String.class),
>> -                        array));
>> +                        array), ExchangeHelper.getContentType(exchange));
>>     }
>>
>>     @Converter
>> @@ -52,16 +53,21 @@
>>         return new InputStreamRequestEntity(
>>                 GZIPHelper.getGZIPWrappedInputStream(
>>                         
>> exchange.getIn().getHeader(GZIPHelper.CONTENT_ENCODING, String.class),
>> -                        inStream));
>> +                        inStream), ExchangeHelper.getContentType(exchange));
>>     }
>>
>>
>>     @Converter
>>     public RequestEntity toRequestEntity(String str, Exchange exchange) 
>> throws Exception {
>> -        return new InputStreamRequestEntity(
>> +        if 
>> (GZIPHelper.containsGzip(exchange.getIn().getHeader(GZIPHelper.CONTENT_ENCODING,
>>  String.class))) {
>> +            return new InputStreamRequestEntity(
>>                 GZIPHelper.toGZIPInputStreamIfRequested(
>>                         
>> exchange.getIn().getHeader(GZIPHelper.CONTENT_ENCODING, String.class),
>> -                        str.getBytes()));
>> +                        str.getBytes()), 
>> ExchangeHelper.getContentType(exchange));
>> +        } else {
>> +            // will use the default StringRequestEntity
>> +            return null;
>> +        }
>>     }
>>
>>
>>
>> Modified: 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/helper/GZIPHelper.java
>> URL: 
>> http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/helper/GZIPHelper.java?rev=774658&r1=774657&r2=774658&view=diff
>> ==============================================================================
>> --- 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/helper/GZIPHelper.java
>>  (original)
>> +++ 
>> camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/helper/GZIPHelper.java
>>  Thu May 14 06:46:16 2009
>> @@ -124,7 +124,7 @@
>>         return compressed;
>>     }
>>
>> -    private static boolean containsGzip(String str) {
>> +    public static boolean containsGzip(String str) {
>>         return str != null && str.toLowerCase().indexOf(GZIP) >= 0;
>>     }
>>
>>
>>
>>
> 
> 
> 

Reply via email to