Uploaded image for project: 'HttpComponents HttpClient'
  1. HttpComponents HttpClient
  2. HTTPCLIENT-1099

Overriding Caching Policies

    XMLWordPrintableJSON

    Details

      Description

      It is not possible to alter the behaviour of the CachingHttpClient because the policies defining the behaviour are private and tied directly to specific implementations in the CachingHttpClients constructor. Furthermore, these policies are package private, discouraging reuse and/or extensions.

      Making this possible is easy enough (provide some policy-setters or -constructor-args in CachingHttpClient and make the policy-classes public); the attached patch allows custom Policies, extending the default ones to be set on the CacheConfig class.

      The specific case that led to this question:

      A back-end application only sets its Content-Length header for responses below 8K. This response does get stored in the cache, but when retrieving it from the cache, CacheValidityPolicy.contentLengthHeaderMatchesActualLength checks the Content-Length header with the stored size (to verify whether the cached content is complete). This check fails, causing the cache entry to be deemed unusable. If we were able to provide our own subclassed CacheValidityPolicy, it would be easy to skip the check if the header is missing and thus accomodate this specific back-end quirk.

        Attachments

        1. OpenPolicies.patch
          5 kB
          Bart Robeyns

          Activity

            People

            • Assignee:
              jonm Jonathan Moore
              Reporter:
              bartrobeyns Bart Robeyns
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: