org.glassfish.jersey.client
Class ChunkedInput<T>

java.lang.Object
  extended by javax.ws.rs.core.GenericType<T>
      extended by org.glassfish.jersey.client.ChunkedInput<T>
Type Parameters:
T - chunk type.
All Implemented Interfaces:
java.io.Closeable

public class ChunkedInput<T>
extends GenericType<T>
implements java.io.Closeable

Response entity type used for receiving messages in "typed" chunks. This data type is useful for consuming partial responses from large or continuous data input streams.

Author:
Marek Potociar (marek.potociar at oracle.com)

Method Summary
 void close()
           
static ChunkParser createParser(byte[] boundary)
          Create new chunk parser that will split the response entity input stream based on a fixed boundary sequence of bytes.
static ChunkParser createParser(java.lang.String boundary)
          Create new chunk parser that will split the response entity input stream based on a fixed boundary string.
 MediaType getChunkType()
          Get chunk data media type.
 ChunkParser getParser()
          Get the underlying chunk parser.
 boolean isClosed()
          Check if the chunked input has been closed.
 T read()
          Read next chunk from the response stream and convert it to a Java instance using the chunk media type.
 void setChunkType(MediaType mediaType)
          Set custom chunk data media type.
 void setChunkType(java.lang.String mediaType)
          Set custom chunk data media type from a string value.
 void setParser(ChunkParser parser)
          Set new chunk parser.
 
Methods inherited from class javax.ws.rs.core.GenericType
equals, getRawType, getType, hashCode, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Method Detail

createParser

public static ChunkParser createParser(java.lang.String boundary)
Create new chunk parser that will split the response entity input stream based on a fixed boundary string.

Parameters:
boundary - chunk boundary.
Returns:
new fixed boundary string-based chunk parser.

createParser

public static ChunkParser createParser(byte[] boundary)
Create new chunk parser that will split the response entity input stream based on a fixed boundary sequence of bytes.

Parameters:
boundary - chunk boundary.
Returns:
new fixed boundary sequence-based chunk parser.

getParser

public ChunkParser getParser()
Get the underlying chunk parser.

Note: Access to internal chunk parser is not a thread-safe operation and has to be explicitly synchronized in case the chunked input is used from multiple threads.

Returns:
underlying chunk parser.

setParser

public void setParser(ChunkParser parser)
Set new chunk parser.

Note: Access to internal chunk parser is not a thread-safe operation and has to be explicitly synchronized in case the chunked input is used from multiple threads.

Parameters:
parser - new chunk parser.

getChunkType

public MediaType getChunkType()
Get chunk data media type. Default chunk data media type is derived from the value of the response "Content-Type" header field. This default value may be manually overridden by setting a custom non-null chunk media type value.

Note: Access to internal chunk media type is not a thread-safe operation and has to be explicitly synchronized in case the chunked input is used from multiple threads.

Returns:
media type specific to each chunk of data.

setChunkType

public void setChunkType(MediaType mediaType)
                  throws java.lang.IllegalArgumentException
Set custom chunk data media type. By default, chunk data media type is derived from the value of the response "Content-Type" header field. Using this methods will override the default chunk media type value and set it to a custom non-null chunk media type. Once this method is invoked, all subsequent chunk reads will use the newly set chunk media type when selecting the proper MessageBodyReader for chunk de-serialization.

Note: Access to internal chunk media type is not a thread-safe operation and has to be explicitly synchronized in case the chunked input is used from multiple threads.

Parameters:
mediaType - custom chunk data media type. Must not be null.
Throws:
java.lang.IllegalArgumentException - in case the mediaType is null.

setChunkType

public void setChunkType(java.lang.String mediaType)
                  throws java.lang.IllegalArgumentException
Set custom chunk data media type from a string value.

Note: Access to internal chunk media type is not a thread-safe operation and has to be explicitly synchronized in case the chunked input is used from multiple threads.

Parameters:
mediaType - custom chunk data media type. Must not be null.
Throws:
java.lang.IllegalArgumentException - in case the mediaType cannot be parsed into a valid MediaType instance or is null.
See Also:
setChunkType(javax.ws.rs.core.MediaType)

close

public void close()
Specified by:
close in interface java.io.Closeable

isClosed

public boolean isClosed()
Check if the chunked input has been closed.

Returns:
true if this chunked input has been closed, false otherwise.

read

public T read()
       throws java.lang.IllegalStateException
Read next chunk from the response stream and convert it to a Java instance using the chunk media type.

Note: Access to internal chunk parser is not a thread-safe operation and has to be explicitly synchronized in case the chunked input is used from multiple threads.

Returns:
next streamed chunk.
Throws:
java.lang.IllegalStateException - in case this chunked input has been closed.


Copyright © 2007-2012 Oracle Corporation. All Rights Reserved. Use is subject to license terms.