Uploaded image for project: 'Struts 2'
  1. Struts 2
  2. WW-3975

DefaultContentTypeHandlerManager does not handle application/json content type correctly

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.3.4.1, 2.3.8
    • Fix Version/s: 2.3.14
    • Component/s: Plugin - REST
    • Labels:
      None
    • Environment:

      windows 7 64-bit
      java 1.7.0_05

    • Flags:
      Patch

      Description

      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);
          }
      }
      

        Attachments

        1. diff
          0.7 kB
          justin miller
        2. DefaultContentTypeHandlerManager.java.patch
          0.9 kB
          justin miller

          Activity

            People

            • Assignee:
              lukaszlenart Lukasz Lenart
              Reporter:
              justinjmiller justin miller
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: