Class OutputStreamContentProvider

java.lang.Object
org.eclipse.jetty.client.util.OutputStreamContentProvider
All Implemented Interfaces:
Closeable, AutoCloseable, Iterable<ByteBuffer>, ContentProvider, AsyncContentProvider, org.eclipse.jetty.util.Callback, org.eclipse.jetty.util.thread.Invocable

@Deprecated public class OutputStreamContentProvider extends Object implements AsyncContentProvider, org.eclipse.jetty.util.Callback, Closeable
Deprecated.
A ContentProvider that provides content asynchronously through an OutputStream similar to DeferredContentProvider.

OutputStreamContentProvider can only be used in conjunction with Request.send(Response.CompleteListener) (and not with its blocking counterpart Request.send()) because it provides content asynchronously.

The deferred content is provided once by writing to the output stream and then 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 support multiple invocations of iterator() by overriding write(ByteBuffer) and close(), copying the bytes and making them available for subsequent invocations.

Content must be provided by writing to the output stream, that must be closed when all content has been provided.

Example usage:

 HttpClient httpClient = ...;

 // Use try-with-resources to autoclose the output stream
 OutputStreamContentProvider content = new OutputStreamContentProvider();
 try (OutputStream output = content.getOutputStream())
 {
     httpClient.newRequest("localhost", 8080)
             .content(content)
             .send(new Response.CompleteListener()
             {
                 @Override
                 public void onComplete(Result result)
                 {
                     // Your logic here
                 }
             });

     // At a later time...
     output.write("some content".getBytes());
 }
 
  • Constructor Details

    • OutputStreamContentProvider

      public OutputStreamContentProvider()
      Deprecated.
  • Method Details

    • getInvocationType

      public org.eclipse.jetty.util.thread.Invocable.InvocationType getInvocationType()
      Deprecated.
      Specified by:
      getInvocationType in interface org.eclipse.jetty.util.thread.Invocable
    • getLength

      public long getLength()
      Deprecated.
      Specified by:
      getLength in interface ContentProvider
      Returns:
      the content length, if known, or -1 if the content length is unknown
    • iterator

      public Iterator<ByteBuffer> iterator()
      Deprecated.
      Specified by:
      iterator in interface Iterable<ByteBuffer>
    • setListener

      public void setListener(AsyncContentProvider.Listener listener)
      Deprecated.
      Specified by:
      setListener in interface AsyncContentProvider
      Parameters:
      listener - the listener to be notified of content availability
    • getOutputStream

      public OutputStream getOutputStream()
      Deprecated.
    • write

      protected void write(ByteBuffer buffer)
      Deprecated.
    • close

      public void close()
      Deprecated.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • succeeded

      public void succeeded()
      Deprecated.
      Specified by:
      succeeded in interface org.eclipse.jetty.util.Callback
    • failed

      public void failed(Throwable failure)
      Deprecated.
      Specified by:
      failed in interface org.eclipse.jetty.util.Callback