Package org.apache.http.nio.protocol
Class AbstractAsyncResponseConsumer<T>
java.lang.Object
org.apache.http.nio.protocol.AbstractAsyncResponseConsumer<T>
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Cancellable
,HttpAsyncResponseConsumer<T>
- Direct Known Subclasses:
BasicAsyncResponseConsumer
public abstract class AbstractAsyncResponseConsumer<T>
extends Object
implements HttpAsyncResponseConsumer<T>
Abstract
HttpAsyncResponseConsumer
implementation that relieves its
subclasses from having to manage internal state and provides a number of protected
event methods that they need to implement.- Since:
- 4.2
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract T
buildResult
(HttpContext context) Invoked to generate a result object from the received HTTP response message.final boolean
cancel()
Cancels the ongoing operation or process.final void
close()
final void
consumeContent
(ContentDecoder decoder, IOControl ioControl) UseonContentReceived(ContentDecoder, IOControl)
instead.final void
Invoked to signal that the response processing terminated abnormally.protected ContentType
getContentType
(HttpEntity entity) Returns an exception in case of an abnormal termination.Returns a result of the response processing, when available.boolean
isDone()
Determines whether or not the response processing completed.protected void
onClose()
Invoked when the consumer is being closed.protected abstract void
onContentReceived
(ContentDecoder decoder, IOControl ioControl) Invoked to process a chunk of content from theContentDecoder
.protected abstract void
onEntityEnclosed
(HttpEntity entity, ContentType contentType) Invoked if the response message encloses a content entity.protected abstract void
onResponseReceived
(HttpResponse response) Invoked when a HTTP response message is received.protected abstract void
Invoked to release all system resources currently allocated.final void
responseCompleted
(HttpContext context) UsebuildResult(HttpContext)
instead.final void
responseReceived
(HttpResponse response) UseonResponseReceived(HttpResponse)
instead.
-
Field Details
-
completed
-
result
-
ex
-
-
Constructor Details
-
AbstractAsyncResponseConsumer
public AbstractAsyncResponseConsumer()
-
-
Method Details
-
onResponseReceived
Invoked when a HTTP response message is received. Please note that theonContentReceived(ContentDecoder, IOControl)
method will be invoked only if the response messages has a content entity enclosed.- Parameters:
response
- HTTP response message.- Throws:
HttpException
- in case of HTTP protocol violationIOException
- in case of an I/O error
-
onContentReceived
protected abstract void onContentReceived(ContentDecoder decoder, IOControl ioControl) throws IOException Invoked to process a chunk of content from theContentDecoder
. TheIOControl
interface can be used to suspend input events if the consumer is temporarily unable to consume more content.The consumer can use the
ContentDecoder.isCompleted()
method to find out whether or not the message content has been fully consumed.- Parameters:
decoder
- content decoder.ioControl
- I/O control of the underlying connection.- Throws:
IOException
- in case of an I/O error
-
onEntityEnclosed
protected abstract void onEntityEnclosed(HttpEntity entity, ContentType contentType) throws IOException Invoked if the response message encloses a content entity.- Parameters:
entity
- HTTP entitycontentType
- expected content type.- Throws:
IOException
- in case of an I/O error
-
buildResult
Invoked to generate a result object from the received HTTP response message.- Parameters:
context
- HTTP context.- Returns:
- result of the response processing.
- Throws:
Exception
- in case of an abnormal termination.
-
releaseResources
protected abstract void releaseResources()Invoked to release all system resources currently allocated. -
onClose
Invoked when the consumer is being closed.- Throws:
IOException
- may be thrown by subclassses- Since:
- 4.3
-
getContentType
- Since:
- 4.4
-
responseReceived
UseonResponseReceived(HttpResponse)
instead.- Specified by:
responseReceived
in interfaceHttpAsyncResponseConsumer<T>
- Parameters:
response
- HTTP response message.- Throws:
IOException
- in case of an I/O errorHttpException
- in case of HTTP protocol violation
-
consumeContent
UseonContentReceived(ContentDecoder, IOControl)
instead.- Specified by:
consumeContent
in interfaceHttpAsyncResponseConsumer<T>
- Parameters:
decoder
- content decoder.ioControl
- I/O control of the underlying connection.- Throws:
IOException
- in case of an I/O error
-
responseCompleted
UsebuildResult(HttpContext)
instead.- Specified by:
responseCompleted
in interfaceHttpAsyncResponseConsumer<T>
- Parameters:
context
- HTTP context
-
cancel
public final boolean cancel()Description copied from interface:Cancellable
Cancels the ongoing operation or process.- Specified by:
cancel
in interfaceCancellable
- Returns:
true
if the operation or process has been cancelled as a result of this method call orfalse
if it has already been cancelled or not started.
-
failed
Description copied from interface:HttpAsyncResponseConsumer
Invoked to signal that the response processing terminated abnormally.- Specified by:
failed
in interfaceHttpAsyncResponseConsumer<T>
- Parameters:
ex
- exception
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-
getException
Description copied from interface:HttpAsyncResponseConsumer
Returns an exception in case of an abnormal termination. This method returnsnull
if the response processing is still ongoing or if it completed successfully.- Specified by:
getException
in interfaceHttpAsyncResponseConsumer<T>
- See Also:
-
getResult
Description copied from interface:HttpAsyncResponseConsumer
Returns a result of the response processing, when available. This method returnsnull
if the response processing is still ongoing.- Specified by:
getResult
in interfaceHttpAsyncResponseConsumer<T>
- See Also:
-
isDone
public boolean isDone()Description copied from interface:HttpAsyncResponseConsumer
Determines whether or not the response processing completed. If the response processing terminated normallyHttpAsyncResponseConsumer.getResult()
can be used to obtain the result. If the response processing terminated abnormallyHttpAsyncResponseConsumer.getException()
can be used to obtain the cause.- Specified by:
isDone
in interfaceHttpAsyncResponseConsumer<T>
-