public class

BasicManagedEntity

extends HttpEntityWrapper
implements ConnectionReleaseTrigger EofSensorWatcher
java.lang.Object
   ↳ org.apache.http.entity.HttpEntityWrapper
     ↳ org.apache.http.conn.BasicManagedEntity

Class Overview

An entity that releases a connection. A ManagedClientConnection will typically not return a managed entity, but you can replace the unmanaged entity in the response with a managed one.

Summary

Fields
protected final boolean attemptReuse Whether to keep the connection alive.
protected ManagedClientConnection managedConn The connection to release.
[Expand]
Inherited Fields
From class org.apache.http.entity.HttpEntityWrapper
Public Constructors
BasicManagedEntity(HttpEntity entity, ManagedClientConnection conn, boolean reuse)
Creates a new managed entity that can release a connection.
Public Methods
void abortConnection()
Releases the connection without the option of keep-alive.
void consumeContent()
TODO: The name of this method is misnomer.
boolean eofDetected(InputStream wrapped)
Indicates that EOF is detected.
InputStream getContent()
Creates a new InputStream object of the entity.
boolean isRepeatable()
Tells if the entity is capable to produce its data more than once.
void releaseConnection()
Releases the connection with the option of keep-alive.
boolean streamAbort(InputStream wrapped)
Indicates that the stream is aborted.
boolean streamClosed(InputStream wrapped)
Indicates that the stream is closed.
void writeTo(OutputStream outstream)
Writes the entity content to the output stream.
Protected Methods
void releaseManagedConnection()
Releases the connection gracefully.
[Expand]
Inherited Methods
From class org.apache.http.entity.HttpEntityWrapper
From class java.lang.Object
From interface org.apache.http.HttpEntity
From interface org.apache.http.conn.ConnectionReleaseTrigger
From interface org.apache.http.conn.EofSensorWatcher

Fields

protected final boolean attemptReuse

Whether to keep the connection alive.

protected ManagedClientConnection managedConn

The connection to release.

Public Constructors

public BasicManagedEntity (HttpEntity entity, ManagedClientConnection conn, boolean reuse)

Creates a new managed entity that can release a connection.

Parameters
entity the entity of which to wrap the content. Note that the argument entity can no longer be used afterwards, since the content will be taken by this managed entity.
conn the connection to release
reuse whether the connection should be re-used

Public Methods

public void abortConnection ()

Releases the connection without the option of keep-alive. This is a "hard" release that implies a shutdown of the connection. Use releaseConnection for a graceful release.

Throws
IOException

public void consumeContent ()

TODO: The name of this method is misnomer. It will be renamed to #finish() in the next major release.
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.

Throws
IOException

public boolean eofDetected (InputStream wrapped)

Indicates that EOF is detected.

Parameters
wrapped the underlying stream which has reached EOF
Returns
  • true if wrapped should be closed, false if it should be left alone
Throws
IOException

public InputStream getContent ()

Creates a new InputStream object of the entity. It is a programming error to return the same InputStream object more than once. Entities that are not repeatable will throw an exception if this method is called multiple times.

Returns
  • a new input stream that returns the entity data.
Throws
IOException

public boolean isRepeatable ()

Tells if the entity is capable to produce 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.

Returns
  • true if the entity is repeatable, false otherwise.

public void releaseConnection ()

Releases the connection with the option of keep-alive. This is a "graceful" release and may cause IO operations for consuming the remainder of a response entity. Use abortConnection for a hard release. The connection may be reused as specified by the duration.

Throws
IOException

public boolean streamAbort (InputStream wrapped)

Indicates that the stream is aborted. This method will be called only if EOF was not detected before aborting. Otherwise, eofDetected is called.

This method will also be invoked when an input operation causes an IOException to be thrown to make sure the input stream gets shut down.

Parameters
wrapped the underlying stream which has not reached EOF
Returns
  • true if wrapped should be closed, false if it should be left alone
Throws
IOException

public boolean streamClosed (InputStream wrapped)

Indicates that the stream is closed. This method will be called only if EOF was not detected before closing. Otherwise, eofDetected is called.

Parameters
wrapped the underlying stream which has not reached EOF
Returns
  • true if wrapped should be closed, false if it should be left alone
Throws
IOException

public void writeTo (OutputStream outstream)

Writes the entity content to the output stream.

Parameters
outstream the output stream to write entity content to
Throws
IOException

Protected Methods

protected void releaseManagedConnection ()

Releases the connection gracefully. The connection attribute will be nullified. Subsequent invocations are no-ops.

Throws
IOException in case of an IO problem. The connection attribute will be nullified anyway.