Class ChunkedInput<T>
- java.lang.Object
-
- jakarta.ws.rs.core.GenericType<T>
-
- org.glassfish.jersey.client.ChunkedInput<T>
-
- Type Parameters:
T
- chunk type.
- All Implemented Interfaces:
Closeable
,AutoCloseable
public class ChunkedInput<T> extends GenericType<T> implements 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
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ChunkedInput(Type chunkType, InputStream inputStream, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,String> headers, MessageBodyWorkers messageBodyWorkers, PropertiesDelegate propertiesDelegate)
Package-private constructor used by theChunkedInputReader
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
static ChunkParser
createMultiParser(String... boundaries)
Create a new chunk multi-parser that will split the response entity input stream based on multiple fixed boundary strings.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(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 thechunk media type
.void
setChunkType(MediaType mediaType)
Set custom chunk data media type.void
setChunkType(String mediaType)
Set custom chunk data media type from a string value.void
setParser(ChunkParser parser)
Set new chunk parser.-
Methods inherited from class jakarta.ws.rs.core.GenericType
equals, forInstance, getRawType, getType, hashCode, toString
-
-
-
-
Constructor Detail
-
ChunkedInput
protected ChunkedInput(Type chunkType, InputStream inputStream, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,String> headers, MessageBodyWorkers messageBodyWorkers, PropertiesDelegate propertiesDelegate)
Package-private constructor used by theChunkedInputReader
.- Parameters:
chunkType
- chunk type.inputStream
- response input stream.annotations
- annotations associated with response entity.mediaType
- response entity media type.headers
- response headers.messageBodyWorkers
- message body workers.propertiesDelegate
- properties delegate for this request/response.
-
-
Method Detail
-
createParser
public static ChunkParser createParser(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.
-
createMultiParser
public static ChunkParser createMultiParser(String... boundaries)
Create a new chunk multi-parser that will split the response entity input stream based on multiple fixed boundary strings.- Parameters:
boundaries
- chunk boundaries.- Returns:
- new fixed boundary string-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 bysetting
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 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 subsequentchunk reads
will use the newly set chunk media type when selecting the properMessageBodyReader
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 benull
.- Throws:
IllegalArgumentException
- in case themediaType
isnull
.
-
setChunkType
public void setChunkType(String mediaType) throws 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 benull
.- Throws:
IllegalArgumentException
- in case themediaType
cannot be parsed into a validMediaType
instance or isnull
.- See Also:
setChunkType(jakarta.ws.rs.core.MediaType)
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
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 IllegalStateException
Read next chunk from the response stream and convert it to a Java instance using thechunk media type
. The method returnsnull
if the underlying entity input stream has been closed (either implicitly or explicitly by calling theclose()
method).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 or
null
if the underlying entity input stream has been closed while reading next chunk data. - Throws:
IllegalStateException
- in case this chunked input has been closed.
-
-