Fabricio Guimarães Pellegrini created CAMEL-12424:
-----------------------------------------------------

             Summary: HTTPHelper.setCharsetFromContentType can't extract the 
charset if it isn't the last parameter
                 Key: CAMEL-12424
                 URL: https://issues.apache.org/jira/browse/CAMEL-12424
             Project: Camel
          Issue Type: Bug
          Components: camel-http-common
    Affects Versions: 2.19.2
         Environment: Apache Camel 2.19.2

Karaf 4.1.2

JDK 1.8.0_161
            Reporter: Fabricio Guimarães Pellegrini


When our application recieves the Content-Type: 
application/json;charset=utf-8;profile="http://my.company.profile.errorSchema.4.json#";,
 the HTTPHelper sets the wrong value for the Exchange.CHARSET_NAME in the 
Exchange.
{quote} @SuppressWarnings("deprecation")
    public static void setCharsetFromContentType(String contentType, Exchange 
exchange) {
        if (contentType != null) {
            // find the charset and set it to the Exchange
            int index = contentType.indexOf("charset=");
            if (index > 0) {
                String charset = contentType.substring(index + 8); //HERE IS 
THE PROBLEM
                exchange.setProperty(Exchange.CHARSET_NAME, 
IOConverter.normalizeCharset(charset));
            }
        }
    }
{quote}
Because of that, when the HTTPProducer tries to load the body we get the 
following error:
{quote}Exception: Error during type conversion from type: java.lang.String to 
the required type: java.lang.String with value [Body is instance of 
java.io.InputStream] due java.io.UnsupportedEncodingException: 
utf-8;profile="http://my.company.profile.errorSchema.4.json#
org.apache.camel.TypeConversionException: Error during type conversion from 
type: java.lang.String to the required type: java.lang.String with value [Body 
is instance of java.io.InputStream] due java.io.UnsupportedEncodingException: 
utf-8;profile="http://my.company.profile.errorSchema.4.json#
        at 
org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:629)
 [178:org.apache.camel.camel-core:2.19.2]
        at 
org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:150)
 [178:org.apache.camel.camel-core:2.19.2]
        at 
org.apache.camel.core.osgi.OsgiTypeConverter.convertTo(OsgiTypeConverter.java:120)
 [176:org.apache.camel.camel-blueprint:2.19.2]
        at 
org.apache.camel.component.http4.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:305)
 [182:org.apache.camel.camel-http4:2.19.2]
        at 
org.apache.camel.component.http4.HttpProducer.process(HttpProducer.java:207) 
[182:org.apache.camel.camel-http4:2.19.2]

Caused by: org.apache.camel.RuntimeCamelException: 
java.io.UnsupportedEncodingException: 
utf-8;profile="http://my.company.profile.errorSchema.4.json#
        at 
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1774)
 ~[?:?]
        at 
org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1355) ~[?:?]
        at 
org.apache.camel.impl.converter.StaticMethodTypeConverter.convertTo(StaticMethodTypeConverter.java:59)
 ~[?:?]
        at 
org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
 ~[?:?]
        at 
org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
 ~[?:?]
        ... 70 more
Caused by: java.io.UnsupportedEncodingException: 
utf-8;profile="http://my.company.profile.errorSchema.4.json#
        at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71) 
~[?:?]
        at java.io.InputStreamReader.<init>(InputStreamReader.java:100) ~[?:?]
        at 
org.apache.camel.converter.IOConverter.toReader(IOConverter.java:179) ~[?:?]
        at 
org.apache.camel.converter.IOConverter.toString(IOConverter.java:364) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:?]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at 
org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1351) ~[?:?]
        at 
org.apache.camel.impl.converter.StaticMethodTypeConverter.convertTo(StaticMethodTypeConverter.java:59)
 ~[?:?]
        at 
org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
 ~[?:?]
        at 
org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
 ~[?:?]
{quote}
 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to