org.glassfish.jersey.spi
Class ContentEncoder

java.lang.Object
  extended by org.glassfish.jersey.spi.ContentEncoder
All Implemented Interfaces:
ReaderInterceptor, WriterInterceptor
Direct Known Subclasses:
DeflateEncoder, GZipEncoder

@Contract
public abstract class ContentEncoder
extends Object
implements ReaderInterceptor, 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 (martin.matula at oracle.com)

Constructor Summary
protected ContentEncoder(String... supportedEncodings)
          Initializes this encoder implementation with the list of supported content encodings.
 
Method Summary
 Object aroundReadFrom(ReaderInterceptorContext context)
           
 void aroundWriteTo(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(ReaderInterceptorContext context)
                            throws IOException,
                                   WebApplicationException
Specified by:
aroundReadFrom in interface ReaderInterceptor
Throws:
IOException
WebApplicationException

aroundWriteTo

public final void aroundWriteTo(WriterInterceptorContext context)
                         throws IOException,
                                WebApplicationException
Specified by:
aroundWriteTo in interface WriterInterceptor
Throws:
IOException
WebApplicationException


Copyright © 2007-2012 Oracle Corporation. All Rights Reserved. Use is subject to license terms.