Class HttpCacheEntry

  • All Implemented Interfaces:
    java.io.Serializable, org.apache.hc.core5.http.MessageHeaders

    @Contract(threading=IMMUTABLE)
    public class HttpCacheEntry
    extends java.lang.Object
    implements org.apache.hc.core5.http.MessageHeaders, java.io.Serializable
    Structure used to store an HttpResponse in a cache. Some entries can optionally depend on system resources that may require explicit deallocation. In such a case getResource() should return a non null instance of Resource that must be deallocated by calling Resource.dispose() method when no longer used.
    Since:
    4.1
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.atomic.AtomicReference<java.time.Instant> dateRef  
      private java.util.concurrent.atomic.AtomicReference<ETag> eTagRef  
      private java.util.concurrent.atomic.AtomicReference<java.time.Instant> expiresRef  
      private java.util.concurrent.atomic.AtomicReference<java.time.Instant> lastModifiedRef  
      private java.lang.String method  
      private static java.time.Instant NON_VALUE  
      private java.time.Instant requestDate  
      private org.apache.hc.core5.http.message.HeaderGroup requestHeaders  
      private java.lang.String requestURI  
      private Resource resource  
      private java.time.Instant responseDate  
      private org.apache.hc.core5.http.message.HeaderGroup responseHeaders  
      private static long serialVersionUID  
      private int status  
      private java.util.Set<java.lang.String> variants  
    • Constructor Summary

      Constructors 
      Constructor Description
      HttpCacheEntry​(java.time.Instant requestDate, java.time.Instant responseDate, int status, org.apache.hc.core5.http.Header[] responseHeaders, Resource resource)
      Deprecated.
      HttpCacheEntry​(java.time.Instant requestDate, java.time.Instant responseDate, int status, org.apache.hc.core5.http.Header[] responseHeaders, Resource resource, java.util.Map<java.lang.String,​java.lang.String> variantMap)
      Deprecated.
      HttpCacheEntry​(java.time.Instant requestDate, java.time.Instant responseDate, java.lang.String method, java.lang.String requestURI, org.apache.hc.core5.http.message.HeaderGroup requestHeaders, int status, org.apache.hc.core5.http.message.HeaderGroup responseHeaders, Resource resource, java.util.Collection<java.lang.String> variants)
      Internal constructor that makes no validation of the input parameters and makes no copies of the original client request and the origin response.
      HttpCacheEntry​(java.util.Date requestDate, java.util.Date responseDate, int status, org.apache.hc.core5.http.Header[] responseHeaders, Resource resource)
      Deprecated.
      HttpCacheEntry​(java.util.Date requestDate, java.util.Date responseDate, int status, org.apache.hc.core5.http.Header[] responseHeaders, Resource resource, java.util.Map<java.lang.String,​java.lang.String> variantMap)
      Deprecated.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      boolean containsHeader​(java.lang.String name)  
      int countHeaders​(java.lang.String name)  
      java.util.Date getDate()
      Gets the Date value of the "Date" header or null if the header is missing or cannot be parsed.
      ETag getETag()  
      java.time.Instant getExpires()  
      org.apache.hc.core5.http.Header getFirstHeader​(java.lang.String name)
      Returns the first header from the origin response with the given name.
      org.apache.hc.core5.http.Header getHeader​(java.lang.String name)  
      org.apache.hc.core5.http.Header[] getHeaders()
      Returns all the headers that were on the origin response.
      org.apache.hc.core5.http.Header[] getHeaders​(java.lang.String name)
      Gets all the headers with the given name that were on the origin response.
      java.time.Instant getInstant()  
      private java.time.Instant getInstant​(java.util.concurrent.atomic.AtomicReference<java.time.Instant> ref, java.lang.String headerName)  
      org.apache.hc.core5.http.Header getLastHeader​(java.lang.String name)  
      java.time.Instant getLastModified()  
      java.util.Date getRequestDate()
      Deprecated.
      java.time.Instant getRequestInstant()
      Returns the time the associated origin request was initiated by the caching module.
      java.lang.String getRequestMethod()
      Returns the HTTP request method that was used to create the cached response entry.
      java.lang.String getRequestURI()  
      Resource getResource()
      Returns the Resource containing the origin response body.
      java.util.Date getResponseDate()
      Deprecated.
      java.time.Instant getResponseInstant()
      Returns the time the origin response was received by the caching module.
      int getStatus()
      Returns the status from the origin HttpResponse.
      java.util.Map<java.lang.String,​java.lang.String> getVariantMap()
      Deprecated.
      No longer applicable.
      java.util.Set<java.lang.String> getVariants()
      Returns all known variants.
      boolean hasVariants()
      Indicates whether the origin response indicated the associated resource had variants (i.e.
      java.util.Iterator<org.apache.hc.core5.http.Header> headerIterator()  
      java.util.Iterator<org.apache.hc.core5.http.Header> headerIterator​(java.lang.String name)  
      static boolean isNewer​(HttpCacheEntry entry, org.apache.hc.core5.http.MessageHeaders message)
      Tests if the given HttpCacheEntry is newer than the given MessageHeaders by comparing values of their DATE header.
      java.util.Iterator<org.apache.hc.core5.http.Header> requestHeaderIterator()  
      java.util.Iterator<org.apache.hc.core5.http.Header> requestHeaderIterator​(java.lang.String headerName)  
      org.apache.hc.core5.http.MessageHeaders requestHeaders()  
      org.apache.hc.core5.http.MessageHeaders responseHeaders()  
      java.lang.String toString()
      Provides a string representation of this instance suitable for human consumption.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • requestDate

        private final java.time.Instant requestDate
      • responseDate

        private final java.time.Instant responseDate
      • method

        private final java.lang.String method
      • requestURI

        private final java.lang.String requestURI
      • requestHeaders

        private final org.apache.hc.core5.http.message.HeaderGroup requestHeaders
      • status

        private final int status
      • responseHeaders

        private final org.apache.hc.core5.http.message.HeaderGroup responseHeaders
      • resource

        private final Resource resource
      • variants

        private final java.util.Set<java.lang.String> variants
      • dateRef

        private final java.util.concurrent.atomic.AtomicReference<java.time.Instant> dateRef
      • expiresRef

        private final java.util.concurrent.atomic.AtomicReference<java.time.Instant> expiresRef
      • lastModifiedRef

        private final java.util.concurrent.atomic.AtomicReference<java.time.Instant> lastModifiedRef
      • eTagRef

        private final java.util.concurrent.atomic.AtomicReference<ETag> eTagRef
      • NON_VALUE

        private static final java.time.Instant NON_VALUE
    • Constructor Detail

      • HttpCacheEntry

        @Internal
        public HttpCacheEntry​(java.time.Instant requestDate,
                              java.time.Instant responseDate,
                              java.lang.String method,
                              java.lang.String requestURI,
                              org.apache.hc.core5.http.message.HeaderGroup requestHeaders,
                              int status,
                              org.apache.hc.core5.http.message.HeaderGroup responseHeaders,
                              Resource resource,
                              java.util.Collection<java.lang.String> variants)
        Internal constructor that makes no validation of the input parameters and makes no copies of the original client request and the origin response.
      • HttpCacheEntry

        @Deprecated
        public HttpCacheEntry​(java.util.Date requestDate,
                              java.util.Date responseDate,
                              int status,
                              org.apache.hc.core5.http.Header[] responseHeaders,
                              Resource resource,
                              java.util.Map<java.lang.String,​java.lang.String> variantMap)
        Deprecated.
        Create a new HttpCacheEntry with variants.
        Parameters:
        requestDate - Date/time when the request was made (Used for age calculations)
        responseDate - Date/time that the response came back (Used for age calculations)
        status - HTTP status from origin response
        responseHeaders - Header[] from original HTTP Response
        resource - representing origin response body
        variantMap - describing cache entries that are variants of this parent entry; this maps a "variant key" (derived from the varying request headers) to a "cache key" (where in the cache storage the particular variant is located)
      • HttpCacheEntry

        @Deprecated
        public HttpCacheEntry​(java.time.Instant requestDate,
                              java.time.Instant responseDate,
                              int status,
                              org.apache.hc.core5.http.Header[] responseHeaders,
                              Resource resource,
                              java.util.Map<java.lang.String,​java.lang.String> variantMap)
        Deprecated.
        Create a new HttpCacheEntry with variants.
        Parameters:
        requestDate - Date/time when the request was made (Used for age calculations)
        responseDate - Date/time that the response came back (Used for age calculations)
        status - HTTP status from origin response
        responseHeaders - Header[] from original HTTP Response
        resource - representing origin response body
        variantMap - describing cache entries that are variants of this parent entry; this maps a "variant key" (derived from the varying request headers) to a "cache key" (where in the cache storage the particular variant is located)
      • HttpCacheEntry

        @Deprecated
        public HttpCacheEntry​(java.util.Date requestDate,
                              java.util.Date responseDate,
                              int status,
                              org.apache.hc.core5.http.Header[] responseHeaders,
                              Resource resource)
        Deprecated.
        Create a new HttpCacheEntry.
        Parameters:
        requestDate - Date/time when the request was made (Used for age calculations)
        responseDate - Date/time that the response came back (Used for age calculations)
        status - HTTP status from origin response
        responseHeaders - Header[] from original HTTP Response
        resource - representing origin response body
      • HttpCacheEntry

        @Deprecated
        public HttpCacheEntry​(java.time.Instant requestDate,
                              java.time.Instant responseDate,
                              int status,
                              org.apache.hc.core5.http.Header[] responseHeaders,
                              Resource resource)
        Deprecated.
        Create a new HttpCacheEntry.
        Parameters:
        requestDate - Date/time when the request was made (Used for age calculations)
        responseDate - Date/time that the response came back (Used for age calculations)
        status - HTTP status from origin response
        responseHeaders - Header[] from original HTTP Response
        resource - representing origin response body
    • Method Detail

      • getStatus

        public int getStatus()
        Returns the status from the origin HttpResponse.
      • getRequestDate

        @Deprecated
        public java.util.Date getRequestDate()
        Deprecated.
        Returns the time the associated origin request was initiated by the caching module.
        Returns:
        Date
      • getRequestInstant

        public java.time.Instant getRequestInstant()
        Returns the time the associated origin request was initiated by the caching module.
        Returns:
        Instant
        Since:
        5.2
      • getResponseDate

        @Deprecated
        public java.util.Date getResponseDate()
        Deprecated.
        Returns the time the origin response was received by the caching module.
        Returns:
        Date
      • getResponseInstant

        public java.time.Instant getResponseInstant()
        Returns the time the origin response was received by the caching module.
        Returns:
        Instant
        Since:
        5.2
      • getHeaders

        public org.apache.hc.core5.http.Header[] getHeaders()
        Returns all the headers that were on the origin response.
        Specified by:
        getHeaders in interface org.apache.hc.core5.http.MessageHeaders
      • getFirstHeader

        public org.apache.hc.core5.http.Header getFirstHeader​(java.lang.String name)
        Returns the first header from the origin response with the given name.
        Specified by:
        getFirstHeader in interface org.apache.hc.core5.http.MessageHeaders
      • getLastHeader

        public org.apache.hc.core5.http.Header getLastHeader​(java.lang.String name)
        Specified by:
        getLastHeader in interface org.apache.hc.core5.http.MessageHeaders
        Since:
        5.0
      • getHeaders

        public org.apache.hc.core5.http.Header[] getHeaders​(java.lang.String name)
        Gets all the headers with the given name that were on the origin response.
        Specified by:
        getHeaders in interface org.apache.hc.core5.http.MessageHeaders
      • containsHeader

        public boolean containsHeader​(java.lang.String name)
        Specified by:
        containsHeader in interface org.apache.hc.core5.http.MessageHeaders
        Since:
        5.0
      • countHeaders

        public int countHeaders​(java.lang.String name)
        Specified by:
        countHeaders in interface org.apache.hc.core5.http.MessageHeaders
        Since:
        5.0
      • getHeader

        public org.apache.hc.core5.http.Header getHeader​(java.lang.String name)
                                                  throws org.apache.hc.core5.http.ProtocolException
        Specified by:
        getHeader in interface org.apache.hc.core5.http.MessageHeaders
        Throws:
        org.apache.hc.core5.http.ProtocolException
        Since:
        5.0
      • headerIterator

        public java.util.Iterator<org.apache.hc.core5.http.Header> headerIterator()
        Specified by:
        headerIterator in interface org.apache.hc.core5.http.MessageHeaders
        Since:
        5.0
      • headerIterator

        public java.util.Iterator<org.apache.hc.core5.http.Header> headerIterator​(java.lang.String name)
        Specified by:
        headerIterator in interface org.apache.hc.core5.http.MessageHeaders
        Since:
        5.0
      • responseHeaders

        public org.apache.hc.core5.http.MessageHeaders responseHeaders()
        Since:
        5.4
      • getDate

        public java.util.Date getDate()
        Gets the Date value of the "Date" header or null if the header is missing or cannot be parsed.
        Since:
        4.3
      • getInstant

        private java.time.Instant getInstant​(java.util.concurrent.atomic.AtomicReference<java.time.Instant> ref,
                                             java.lang.String headerName)
      • getInstant

        public java.time.Instant getInstant()
        Since:
        5.2
      • getExpires

        public java.time.Instant getExpires()
        Since:
        5.4
      • getLastModified

        public java.time.Instant getLastModified()
        Since:
        5.4
      • getETag

        public ETag getETag()
        Since:
        5.4
      • getResource

        public Resource getResource()
        Returns the Resource containing the origin response body.
      • hasVariants

        public boolean hasVariants()
        Indicates whether the origin response indicated the associated resource had variants (i.e. that the Vary header was set on the origin response).
      • getVariants

        public java.util.Set<java.lang.String> getVariants()
        Returns all known variants.
        Since:
        5.4
      • getVariantMap

        @Deprecated
        public java.util.Map<java.lang.String,​java.lang.String> getVariantMap()
        Deprecated.
        No longer applicable. Use getVariants() instead.
      • getRequestMethod

        public java.lang.String getRequestMethod()
        Returns the HTTP request method that was used to create the cached response entry.
        Since:
        4.4
      • getRequestURI

        public java.lang.String getRequestURI()
        Since:
        5.4
      • requestHeaders

        public org.apache.hc.core5.http.MessageHeaders requestHeaders()
        Since:
        5.4
      • requestHeaderIterator

        public java.util.Iterator<org.apache.hc.core5.http.Header> requestHeaderIterator()
        Since:
        5.4
      • requestHeaderIterator

        public java.util.Iterator<org.apache.hc.core5.http.Header> requestHeaderIterator​(java.lang.String headerName)
        Since:
        5.4
      • isNewer

        public static boolean isNewer​(HttpCacheEntry entry,
                                      org.apache.hc.core5.http.MessageHeaders message)
        Tests if the given HttpCacheEntry is newer than the given MessageHeaders by comparing values of their DATE header. In case the given entry, or the message, or their DATE headers are null, this method returns false.
        Since:
        5.4
      • toString

        public java.lang.String toString()
        Provides a string representation of this instance suitable for human consumption.
        Overrides:
        toString in class java.lang.Object