Build 1.0_r1(from source)

org.apache.http.conn
Class BasicManagedEntity

java.lang.Object
  extended by org.apache.http.entity.HttpEntityWrapper
      extended by org.apache.http.conn.BasicManagedEntity
All Implemented Interfaces:
ConnectionReleaseTrigger, EofSensorWatcher, HttpEntity

public class BasicManagedEntity
extends HttpEntityWrapper
implements ConnectionReleaseTrigger, EofSensorWatcher

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.

Since:
4.0

Field Summary
protected  boolean attemptReuse
          Whether to keep the connection alive.
protected  ManagedClientConnection managedConn
          The connection to release.
 
Fields inherited from class org.apache.http.entity.HttpEntityWrapper
wrappedEntity
 
Constructor Summary
BasicManagedEntity(HttpEntity entity, ManagedClientConnection conn, boolean reuse)
          Creates a new managed entity that can release a connection.
 
Method Summary
 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.
protected  void releaseManagedConnection()
          Releases the connection gracefully.
 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.
 
Methods inherited from class org.apache.http.entity.HttpEntityWrapper
getContentEncoding, getContentLength, getContentType, isChunked, isStreaming
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

managedConn

protected ManagedClientConnection managedConn
The connection to release.


attemptReuse

protected final boolean attemptReuse
Whether to keep the connection alive.

Constructor Detail

BasicManagedEntity

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
Method Detail

isRepeatable

public boolean isRepeatable()
Description copied from interface: HttpEntity
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.

Specified by:
isRepeatable in interface HttpEntity
Overrides:
isRepeatable in class HttpEntityWrapper
Returns:
true if the entity is repeatable, false otherwise.

getContent

public InputStream getContent()
                       throws IOException
Description copied from interface: HttpEntity
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.

Specified by:
getContent in interface HttpEntity
Overrides:
getContent in class HttpEntityWrapper
Returns:
a new input stream that returns the entity data.
Throws:
IOException - if the stream could not be created

consumeContent

public void consumeContent()
                    throws IOException
Description copied from interface: HttpEntity
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.

Specified by:
consumeContent in interface HttpEntity
Overrides:
consumeContent in class HttpEntityWrapper
Throws:
IOException - if an I/O error occurs. This indicates that connection keep-alive is not possible.

writeTo

public void writeTo(OutputStream outstream)
             throws IOException
Description copied from interface: HttpEntity
Writes the entity content to the output stream.

Specified by:
writeTo in interface HttpEntity
Overrides:
writeTo in class HttpEntityWrapper
Parameters:
outstream - the output stream to write entity content to
Throws:
IOException - if an I/O error occurs

releaseConnection

public void releaseConnection()
                       throws IOException
Description copied from interface: ConnectionReleaseTrigger
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.

Specified by:
releaseConnection in interface ConnectionReleaseTrigger
Throws:
IOException - in case of an IO problem. The connection will be released anyway.

abortConnection

public void abortConnection()
                     throws IOException
Description copied from interface: ConnectionReleaseTrigger
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.

Specified by:
abortConnection in interface ConnectionReleaseTrigger
Throws:
IOException - in case of an IO problem. The connection will be released anyway.

eofDetected

public boolean eofDetected(InputStream wrapped)
                    throws IOException
Description copied from interface: EofSensorWatcher
Indicates that EOF is detected.

Specified by:
eofDetected in interface EofSensorWatcher
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 - in case of an IO problem, for example if the watcher itself closes the underlying stream. The caller will leave the wrapped stream alone, as if false was returned.

streamClosed

public boolean streamClosed(InputStream wrapped)
                     throws IOException
Description copied from interface: EofSensorWatcher
Indicates that the stream is closed. This method will be called only if EOF was not detected before closing. Otherwise, eofDetected is called.

Specified by:
streamClosed in interface EofSensorWatcher
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 - in case of an IO problem, for example if the watcher itself closes the underlying stream. The caller will leave the wrapped stream alone, as if false was returned.

streamAbort

public boolean streamAbort(InputStream wrapped)
                    throws IOException
Description copied from interface: EofSensorWatcher
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.

Specified by:
streamAbort in interface EofSensorWatcher
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 - in case of an IO problem, for example if the watcher itself closes the underlying stream. The caller will leave the wrapped stream alone, as if false was returned.

releaseManagedConnection

protected void releaseManagedConnection()
                                 throws IOException
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.

Build 1.0_r1(from source)

Please submit a feedback, bug or feature