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

DefaultHttpHeaders.compareIfModifiedSince() throws ParseException when the locale of the web browser is different to the server

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.3.15.3
    • 2.3.20
    • Plugin - REST

    Description

      I am using the RESTFul plugin and this exception is thrown when I visit the page enabled Caching.

      When I trigger an action from my web browser, it pass the If-Modified-Since attribute to server side and the locale of it date format is in en - Wed, 18 Dec 2013 16:00:00 GMT.

      Then, in the server side, the DefaultHttpHeaders uses the method compareIfModifiedSince() to check if it should return the cached data. However, I found that the DefaultHttpHeaders.compareIfModifiedSince() would use the default locale of the server for parsing the If-Modified-Since input which causes ParseException as the locale of the server is NOT same as the web browser I used.

      17:24:20.915 [qtp5416428-21] DEBUG o.a.struts2.rest.DefaultHttpHeaders.debug() [8139ea3e-f463-42fa-9642-ecc2b44b7a21][] - Got error parsing If-Modified-Since header value [Wed, 18 Dec 2013 16:00:00 GMT] as [EEE, dd MMM yyyy HH:mm:ss zzz]!
      java.text.ParseException: Unparseable date: "Wed, 18 Dec 2013 16:00:00 GMT"
      	at java.text.DateFormat.parse(DateFormat.java:357) ~[na:1.7.0_09]
      	at org.apache.struts2.rest.DefaultHttpHeaders.compareIfModifiedSince(DefaultHttpHeaders.java:165) [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
      	at org.apache.struts2.rest.DefaultHttpHeaders.apply(DefaultHttpHeaders.java:149) [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
      	at org.apache.struts2.rest.RestActionInvocation.processResult(RestActionInvocation.java:190) [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
      	at org.apache.struts2.rest.RestActionInvocation.invoke(RestActionInvocation.java:145) [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
      	at com.opensymphony.xwork2.DefaultActionProxy.execute(DefaultActionProxy.java:147) [xwork-core-2.3.15.3.jar:2.3.15.3]
      	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563) [struts2-core-2.3.15.3.jar:2.3.15.3]
      ...
      

      Attachments

        1. WW-4263-final.patch
          7 kB
          Johno Crawford
        2. WW-4263-lang.patch
          5 kB
          Johno Crawford

        Activity

          People

            lukaszlenart Lukasz Lenart
            harry.chan Harry Chan
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: