Base class for wrapping entities.
Keeps a wrappedEntity and delegates all
calls to it. Implementations of wrapping entities can derive
from this class and need to override only those methods that
should not be delegated to the wrapped entity.

Method Detail

isRepeatable

Tells if the entity is capable of producing its data more than once.
A repeatable entity's getContent() and writeTo(OutputStream) methods
can be called more than once whereas a non-repeatable entity's can not.

isChunked

Tells about chunked encoding for this entity.
The primary purpose of this method is to indicate whether
chunked encoding should be used when the entity is sent.
For entities that are received, it can also indicate whether
the entity was received with chunked encoding.
The behavior of wrapping entities is implementation dependent,
but should respect the primary purpose.

getContentEncoding

Obtains the Content-Encoding header, if known.
This is the header that should be used when sending the entity,
or the one that was received with the entity.
Wrapping entities that modify the content encoding should
adjust this header accordingly.

getContent

Returns a content stream of the entity.
Repeatable entities are expected
to create a new instance of InputStream for each invocation
of this method and therefore can be consumed multiple times.
Entities that are not repeatable are expected
to return the same InputStream instance and therefore
may not be consumed more than once.

IMPORTANT: Please note all entity implementations must ensure that
all allocated resources are properly deallocated after
the InputStream.close() method is invoked.

isStreaming

Tells whether this entity depends on an underlying stream.
Streamed entities that read data directly from the socket should
return true. Self-contained entities should return
false. Wrapping entities should delegate this call
to the wrapped entity.

This method is called to indicate that the content of this entity
is no longer required. All entity implementations are expected to
release all allocated resources as a result of this method
invocation. Content streaming entities are also expected to
dispose of the remaining content, if any. Wrapping entities should
delegate this call to the wrapped entity.

This method is of particular importance for entities being
received from a connection. The entity
needs to be consumed completely in order to re-use the connection
with keep-alive.