org.glassfish.jersey.spi

## Class ContentEncoder

- java.lang.Object
- - org.glassfish.jersey.spi.ContentEncoder

All Implemented Interfaces:
  jakarta.ws.rs.ext.ReaderInterceptor, jakarta.ws.rs.ext.WriterInterceptor

Direct Known Subclasses:
  DeflateEncoder, GZipEncoder

    @Priority(value=4000)
     @Contract
    public abstract class ContentEncoder
    extends Object
    implements jakarta.ws.rs.ext.ReaderInterceptor, jakarta.ws.rs.ext.WriterInterceptor

Standard contract for plugging in content encoding support. Provides a standard way of implementing encoding `WriterInterceptor` and decoding `ReaderInterceptor`. Implementing this class ensures the encoding supported by the implementation will be considered during the content negotiation phase when deciding which encoding should be used based on the accepted encodings (and the associated quality parameters) in the request headers.

Author:
  Martin Matula

### Constructor Summary

Constructors
`protected` `ContentEncoder(String... supportedEncodings)` Initializes this encoder implementation with the list of supported content encodings.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`Object` `aroundReadFrom(jakarta.ws.rs.ext.ReaderInterceptorContext context)`
`void` `aroundWriteTo(jakarta.ws.rs.ext.WriterInterceptorContext context)`
`abstract InputStream` `decode(String contentEncoding, InputStream encodedStream)` Implementations of this method should take the encoded stream, wrap it and return a stream that can be used to read the decoded entity.
`abstract OutputStream` `encode(String contentEncoding, OutputStream entityStream)` Implementations of this method should take the entity stream, wrap it and return a stream that is encoded using the specified encoding.
`Set<String>` `getSupportedEncodings()` Returns values of Content-Encoding header supported by this encoder.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ContentEncoder

    protected ContentEncoder(String... supportedEncodings)

Initializes this encoder implementation with the list of supported content encodings.

Parameters:
  `supportedEncodings` - Values of Content-Encoding header supported by this encoding provider.

### Method Detail

#### getSupportedEncodings

    public final Set<String> getSupportedEncodings()

Returns values of Content-Encoding header supported by this encoder.

Returns:
  Set of supported Content-Encoding values.

#### decode

    public abstract InputStream decode(String contentEncoding,
                                       InputStream encodedStream)
                                throws IOException

Implementations of this method should take the encoded stream, wrap it and return a stream that can be used to read the decoded entity.

Parameters:
  `contentEncoding` - Encoding to be used to decode the stream - guaranteed to be one of the supported encoding values.
  `encodedStream` - Encoded input stream.
Returns:
  Decoded entity stream.
Throws:
  `IOException` - if an IO error arises.

#### encode

    public abstract OutputStream encode(String contentEncoding,
                                        OutputStream entityStream)
                                 throws IOException

Implementations of this method should take the entity stream, wrap it and return a stream that is encoded using the specified encoding.

Parameters:
  `contentEncoding` - Encoding to be used to encode the entity - guaranteed to be one of the supported encoding values.
  `entityStream` - Entity stream to be encoded.
Returns:
  Encoded stream.
Throws:
  `IOException` - if an IO error arises.

#### aroundReadFrom

    public final Object aroundReadFrom(jakarta.ws.rs.ext.ReaderInterceptorContext context)
                                throws IOException,
                                       jakarta.ws.rs.WebApplicationException

Specified by:
  `aroundReadFrom` in interface `jakarta.ws.rs.ext.ReaderInterceptor`
Throws:
  `IOException`
  `jakarta.ws.rs.WebApplicationException`

#### aroundWriteTo

    public final void aroundWriteTo(jakarta.ws.rs.ext.WriterInterceptorContext context)
                             throws IOException,
                                    jakarta.ws.rs.WebApplicationException

Specified by:
  `aroundWriteTo` in interface `jakarta.ws.rs.ext.WriterInterceptor`
Throws:
  `IOException`
  `jakarta.ws.rs.WebApplicationException`