[
https://issues.apache.org/jira/browse/WW-3975?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13611351#comment-13611351
]
Hudson commented on WW-3975:
----------------------------
Integrated in Struts2-JDK6 #675 (See
[https://builds.apache.org/job/Struts2-JDK6/675/])
WW-3975 Adds logic to look for handler without specified charset (Revision
1459920)
Result = SUCCESS
lukaszlenart :
Files :
*
/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
*
/struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/DefaultContentTypeHandlerManagerTest.java
> 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
> Assignee: Lukasz Lenart
> Priority: Minor
> Fix For: 2.3.13
>
> Attachments: DefaultContentTypeHandlerManager.java.patch, 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:
> {code:java}
> int index = contentType.indexOf(';');
> if( index != -1)
> contentType = contentType.substring(0,index).trim();
> {code}
> 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:
> {code:java}
> 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);
> }
> }
> {code}
--
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