[
https://issues.apache.org/jira/browse/WW-3975?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
justin miller updated WW-3975:
------------------------------
Attachment: diff
unified diff
> DefaultContentTypeHandlerManager does not handle application/json content
> type correctly
> -----------------------------------------------------------------------------------------
>
> Key: WW-3975
> URL: https://issues.apache.org/jira/browse/WW-3975
> Project: Struts 2
> Issue Type: Bug
> Components: Plugin - REST
> Affects Versions: 2.3.4.1, 2.3.8
> Environment: windows 7 64-bit
> java 1.7.0_05
> Reporter: justin miller
> Priority: Minor
> Attachments: diff
>
>
> Setting the HTTP Content-Type request header to either application/json or
> application/json;charset=UTF-8 does not get handled correctly by the
> DefaultContentTypeHandlerManager. At line 91 (v2.3.8) in
> DefaultContentTypeHandlerManager, the content type is stripped of everything
> after and including the semi-colon (i.e., application/json;charset=UTF-8
> becomes application/json). Line 91-93:
> int index = contentType.indexOf(';');
> if( index != -1)
> contentType = contentType.substring(0,index).trim();
> Unfortunately, the JsonLibHandler getContentType() method returns
> "application/json;charset=ISO-8859-1" and because the charset was stripped,
> the JsonLibHandler is not correctly chosen.
> This issue is can potentially be mitigated by additionally setting the
> extension to .json but it would be nice to rely solely on the Content-Type
> header.
> I see the value of stripping the header down to the basic type so it's likely
> that the handlersByContentType Map will need to be interrogated twice.
> Something like this:
> String contentType = req.getContentType();
> if (contentType != null) {
> handler = handlersByContentType.get(contentType);
> if ( handler == null ) {
> int index = contentType.indexOf(';');
> if( index != -1)
> contentType =
> contentType.substring(0,index).trim();
> handler =
> handlersByContentType.get(contentType);
> }
> }
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira