Andy Kane created CXF-5656:
------------------------------

             Summary: ContentType is removed for InternalServerError and 
doesn't seem to be a way to set a charset
                 Key: CXF-5656
                 URL: https://issues.apache.org/jira/browse/CXF-5656
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS
    Affects Versions: 2.7.10, 2.7.7
            Reporter: Andy Kane


We have a Rest service that uses JAX-RS and CXF.  When we used CXF 2.3.3, if 
there was a problem with the request and a non 200 status code was returned, 
the browser would display the message from the response with any encoded non 
ASCII characters as the ContentType returned application/json;charset=utf-8.  

After upgrading to 2.7.7, we noticed that non ASCII characters where not being 
encoded for Status 500 - Internal Server Error.  This doesn't happen for any 
other status codes and we noticed that charset=utf-8 was being stripped from 
the ContentType.  After looking through the CXF code, I noticed that the 
AbstractHTTPDestination class was removing the ContentType (line 553).  The 
ContentType was then re-added in getContentTypeFromMessage method in the 
headers object without the Charset.  Looking at this method, I noticed that the 
encoding was taken from Message.ENCODING and in our case this was null.  

There doesn't seem to be a way of setting 
org.apache.cxf.message.Message.ENCODING from either the ExceptionMapper or 
ExceptionMapper.  I have also set the encoding type in the Response object in 
ExceptionMapper, but this doesn't seem to make much difference either. 

Removing the ContentType seems like a bug, as if the ContentType has been 
previously set and then this should be preserved.  Is there a work around for 
this problem in the mean time. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to