Class EncodingFilter

  • All Implemented Interfaces:
    javax.ws.rs.container.ContainerResponseFilter

    @Priority(3000)
    public final class EncodingFilter
    extends java.lang.Object
    implements javax.ws.rs.container.ContainerResponseFilter
    Container filter that supports encoding-based content negotiation. The filter examines what content encodings are supported by the container (by looking up all the encoders) and decides what encoding should be chosen based on the encodings listed in the Accept-Encoding request header and their associated quality values. If none of the acceptable encodings is supported and identity encoding is explicitly forbidden by the client, the filter generates Response.Status.NOT_ACCEPTABLE response.

    The filter also ensures Accept-Encoding is added to the Vary header, for proper interaction with web caches.

    • Field Detail

      • IDENTITY_ENCODING

        private static final java.lang.String IDENTITY_ENCODING
        See Also:
        Constant Field Values
      • supportedEncodings

        private volatile java.util.SortedSet<java.lang.String> supportedEncodings
    • Constructor Detail

      • EncodingFilter

        public EncodingFilter()
    • Method Detail

      • enableFor

        @SafeVarargs
        public static void enableFor​(ResourceConfig rc,
                                     java.lang.Class<? extends ContentEncoder>... encoders)
        Enables this filter along with the provided encoders for the supplied ResourceConfig.
        Parameters:
        rc - Resource config this filter should be enabled for.
        encoders - content encoders.
      • filter

        public void filter​(javax.ws.rs.container.ContainerRequestContext request,
                           javax.ws.rs.container.ContainerResponseContext response)
                    throws java.io.IOException
        Specified by:
        filter in interface javax.ws.rs.container.ContainerResponseFilter
        Throws:
        java.io.IOException
      • getSupportedEncodings

        java.util.SortedSet<java.lang.String> getSupportedEncodings()
        Returns a (lexically) sorted set of supported encodings.
        Returns:
        sorted set of supported encodings.