You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Edwin (Jira)" <ji...@apache.org> on 2020/03/09 00:19:00 UTC

[jira] [Commented] (CXF-8234) Response Content-Type is missing 'charset' when Transformation feature is enabled

    [ https://issues.apache.org/jira/browse/CXF-8234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17054573#comment-17054573 ] 

Edwin commented on CXF-8234:
----------------------------

The reason the encoding is not set when transformation is used is because the method *getEncoding* in *StaxOutInterceptor* is never called.

I have found a workaround and I was wondering if I could ask you to please confirm if it is ok.  In an interceptor to be run before *TransformOutInterceptor*, the following code seems to do the trick:

 

 
{code:java}
Exchange ex = message.getExchange();
String encoding = (String)message.get(Message.ENCODING);
if (encoding == null && ex.getInMessage() != null) 
{
    encoding = (String) ex.getInMessage().get(Message.ENCODING);
    message.put(Message.ENCODING, encoding);
}
if (encoding == null) 
{
    encoding = StandardCharsets.UTF_8.name();
    message.put(Message.ENCODING, encoding);
}
OutputStream os = message.getContent(OutputStream.class);
message.setContent(XMLStreamWriter.class, StaxUtils.createXMLStreamWriter(os, encoding));
{code}
 

 

 

> Response Content-Type is missing 'charset' when Transformation feature is enabled
> ---------------------------------------------------------------------------------
>
>                 Key: CXF-8234
>                 URL: https://issues.apache.org/jira/browse/CXF-8234
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 3.2.6, 3.2.12
>            Reporter: Edwin
>            Priority: Major
>
> We have a JAXWS based service and we enabled the transformation feature based on [https://cxf.apache.org/docs/transformationfeature.html], but then we noticed that 'charset' is missing in response Content-Type.  This is probably due to "disable.outputstream.optimization" being set to true by TransformOutInterceptor but the documentation states that "disable.outputstream.optimization" needs to be set to true prior to CXF versions 3.2.6 and 3.1.17.
> We are using 3.2.6 and we even upgraded to 3.2.12 and the behavior is the same.  I also checked TransformOutInterceptor in master branch and it is still setting "disable.outputstream.optimization" to true.
> Is there a workaround for this issue in 3.2.x branch and can this be fixed in future releases?
>  
> Here are part of the headers with transformation:
> {code:java}
> HTTP/1.1 200 
> Content-Type: text/xml
> Transfer-Encoding: chunked
> Date: Sun, 08 Mar 2020 22:41:04 GMT{code}
>  
> And here are part of the headers when transformation is not used:
> {code:java}
> HTTP/1.1 200 
> Content-Type: text/xml;charset=UTF-8
> Transfer-Encoding: chunked
> Date: Sun, 08 Mar 2020 22:40:43 GMT
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)