Class InputStreamContentProvider
- java.lang.Object
-
- org.eclipse.jetty.client.util.InputStreamContentProvider
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,java.lang.Iterable<java.nio.ByteBuffer>
,ContentProvider
,Callback
,Invocable
- Direct Known Subclasses:
ProxyServlet.ProxyInputStreamContentProvider
public class InputStreamContentProvider extends java.lang.Object implements ContentProvider, Callback, java.io.Closeable
AContentProvider
for anInputStream
.The input stream is read once and therefore fully consumed. Invocations to the
iterator()
method after the first will return an "empty" iterator because the stream has been consumed on the first invocation.However, it is possible for subclasses to override
onRead(byte[], int, int)
to copy the content read from the stream to another location (for example a file), and be able to support multiple invocations ofiterator()
, returning the iterator provided by this class on the first invocation, and an iterator on the bytes copied to the other location for subsequent invocations.It is possible to specify, at the constructor, a buffer size used to read content from the stream, by default 4096 bytes.
The
InputStream
passed to the constructor is by default closed when is it fully consumed (or when an exception is thrown while reading it), unless otherwise specified to theconstructor
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.Callback
Callback.Completable, Callback.Completing, Callback.Nested
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.client.api.ContentProvider
ContentProvider.Typed
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.Invocable
Invocable.InvocationType
-
-
Field Summary
-
Fields inherited from interface org.eclipse.jetty.util.thread.Invocable
__nonBlocking
-
-
Constructor Summary
Constructors Constructor Description InputStreamContentProvider(java.io.InputStream stream)
InputStreamContentProvider(java.io.InputStream stream, int bufferSize)
InputStreamContentProvider(java.io.InputStream stream, int bufferSize, boolean autoClose)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
failed(java.lang.Throwable failure)
Callback invoked when the operation fails.long
getLength()
java.util.Iterator<java.nio.ByteBuffer>
iterator()
protected java.nio.ByteBuffer
onRead(byte[] buffer, int offset, int length)
Callback method invoked just after having read from the stream, but before returning the iteration element (aByteBuffer
to the caller.protected void
onReadFailure(java.lang.Throwable failure)
Callback method invoked when an exception is thrown while reading from the stream.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.client.api.ContentProvider
isReproducible
-
Methods inherited from interface org.eclipse.jetty.util.thread.Invocable
getInvocationType
-
-
-
-
Constructor Detail
-
InputStreamContentProvider
public InputStreamContentProvider(java.io.InputStream stream)
-
InputStreamContentProvider
public InputStreamContentProvider(java.io.InputStream stream, int bufferSize)
-
InputStreamContentProvider
public InputStreamContentProvider(java.io.InputStream stream, int bufferSize, boolean autoClose)
-
-
Method Detail
-
getLength
public long getLength()
- Specified by:
getLength
in interfaceContentProvider
- Returns:
- the content length, if known, or -1 if the content length is unknown
-
onRead
protected java.nio.ByteBuffer onRead(byte[] buffer, int offset, int length)
Callback method invoked just after having read from the stream, but before returning the iteration element (aByteBuffer
to the caller.Subclasses may override this method to copy the content read from the stream to another location (a file, or in memory if the content is known to fit).
- Parameters:
buffer
- the byte array containing the bytes readoffset
- the offset from where bytes should be readlength
- the length of the bytes read- Returns:
- a
ByteBuffer
wrapping the byte array
-
onReadFailure
protected void onReadFailure(java.lang.Throwable failure)
Callback method invoked when an exception is thrown while reading from the stream.- Parameters:
failure
- the exception thrown while reading from the stream.
-
iterator
public java.util.Iterator<java.nio.ByteBuffer> iterator()
- Specified by:
iterator
in interfacejava.lang.Iterable<java.nio.ByteBuffer>
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
-
-