Package com.fasterxml.jackson.core.io
Class IOContext
java.lang.Object
com.fasterxml.jackson.core.io.IOContext
- All Implemented Interfaces:
AutoCloseable
To limit number of configuration and state objects to pass, all
contextual objects that need to be passed by the factory to
readers and writers are combined under this object. One instance
is created for each reader and writer.
NOTE: non-final since 2.4, to allow sub-classing.
-
Field Summary
Modifier and TypeFieldDescriptionprotected byte[]
Reference to the buffer allocated for temporary use with base64 encoding or decoding.protected final BufferRecycler
Recycler used for actual allocation/deallocation/reuseprotected char[]
Reference to the buffer allocated for buffering it for output, before being encoded: generally this means concatenating output, then encoding when buffer fills up.protected final ContentReference
Reference to the source object, which can be used for displaying location informationprotected JsonEncoding
Encoding used by the underlying stream, if known.protected final ErrorReportConfiguration
protected final boolean
Flag that indicates whether underlying input/output source/target object is fully managed by the owner of this context (parser or generator).protected char[]
Reference temporary buffer Parser instances need if calling app decides it wants to access name via 'getTextCharacters' method.protected byte[]
Reference to the allocated I/O buffer for low-level input reading, if any allocated.protected final Object
Deprecated.protected final StreamReadConstraints
protected final StreamWriteConstraints
protected char[]
Reference to the buffer allocated for tokenization purposes, in which character input is read, and from which it can be further returned.protected byte[]
Reference to the allocated I/O buffer used for low-level encoding-related buffering. -
Constructor Summary
ConstructorDescriptionIOContext
(StreamReadConstraints src, StreamWriteConstraints swc, ErrorReportConfiguration erc, BufferRecycler br, ContentReference contentRef, boolean managedResource) Main constructor to use.IOContext
(StreamReadConstraints src, BufferRecycler br, ContentReference contentRef, boolean managedResource) Deprecated.Since 2.16.IOContext
(BufferRecycler br, ContentReference contentRef, boolean managedResource) Deprecated.Since 2.15.IOContext
(BufferRecycler br, Object rawContent, boolean managedResource) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionprotected final void
_verifyAlloc
(Object buffer) protected final void
_verifyRelease
(byte[] toRelease, byte[] src) protected final void
_verifyRelease
(char[] toRelease, char[] src) byte[]
Method for recycling or allocation byte buffer of "base 64 encode/decode" type.byte[]
allocBase64Buffer
(int minSize) Variant ofallocBase64Buffer()
that specifies smallest acceptable buffer size.char[]
char[]
allocNameCopyBuffer
(int minSize) byte[]
Method for recycling or allocation byte buffer of "read I/O" type.byte[]
allocReadIOBuffer
(int minSize) Variant ofallocReadIOBuffer()
that specifies smallest acceptable buffer size.char[]
char[]
allocTokenBuffer
(int minSize) byte[]
Method for recycling or allocation byte buffer of "write encoding" type.byte[]
allocWriteEncodingBuffer
(int minSize) Variant ofallocWriteEncodingBuffer()
that specifies smallest acceptable buffer size.void
close()
Accessor for getting (some) information about input source, mostly usable for error reporting purposes.Deprecated.Since 2.13, usecontentReference()
insteadboolean
void
releaseBase64Buffer
(byte[] buf) void
releaseConcatBuffer
(char[] buf) void
releaseNameCopyBuffer
(char[] buf) void
releaseReadIOBuffer
(byte[] buf) Method to call when all the processing buffers can be safely recycled.void
releaseTokenBuffer
(char[] buf) void
releaseWriteEncodingBuffer
(byte[] buf) void
setEncoding
(JsonEncoding enc) withEncoding
(JsonEncoding enc)
-
Field Details
-
_contentReference
Reference to the source object, which can be used for displaying location information -
_sourceRef
Deprecated.Since 2.13, use_contentReference
insteadOld, deprecated "raw" reference to input source. -
_encoding
Encoding used by the underlying stream, if known. -
_managedResource
protected final boolean _managedResourceFlag that indicates whether underlying input/output source/target object is fully managed by the owner of this context (parser or generator). If true, it is, and is to be closed by parser/generator; if false, calling application has to do closing (unless auto-closing feature is enabled for the parser/generator in question; in which case it acts like the owner). -
_bufferRecycler
Recycler used for actual allocation/deallocation/reuse -
_streamReadConstraints
- Since:
- 2.15
-
_streamWriteConstraints
- Since:
- 2.16
-
_errorReportConfiguration
- Since:
- 2.16
-
_readIOBuffer
protected byte[] _readIOBufferReference to the allocated I/O buffer for low-level input reading, if any allocated. -
_writeEncodingBuffer
protected byte[] _writeEncodingBufferReference to the allocated I/O buffer used for low-level encoding-related buffering. -
_base64Buffer
protected byte[] _base64BufferReference to the buffer allocated for temporary use with base64 encoding or decoding. -
_tokenCBuffer
protected char[] _tokenCBufferReference to the buffer allocated for tokenization purposes, in which character input is read, and from which it can be further returned. -
_concatCBuffer
protected char[] _concatCBufferReference to the buffer allocated for buffering it for output, before being encoded: generally this means concatenating output, then encoding when buffer fills up. -
_nameCopyBuffer
protected char[] _nameCopyBufferReference temporary buffer Parser instances need if calling app decides it wants to access name via 'getTextCharacters' method. Regular text buffer can not be used as it may contain textual representation of the value token.
-
-
Constructor Details
-
IOContext
public IOContext(StreamReadConstraints src, StreamWriteConstraints swc, ErrorReportConfiguration erc, BufferRecycler br, ContentReference contentRef, boolean managedResource) Main constructor to use.- Parameters:
src
- constraints for streaming readsswc
- constraints for streaming writesbr
- BufferRecycler to use, if any (null
if none)contentRef
- Input source reference for location reportingmanagedResource
- Whether input source is managed (owned) by Jackson libraryerc
- Error report configuration to use- Since:
- 2.16
-
IOContext
@Deprecated public IOContext(StreamReadConstraints src, BufferRecycler br, ContentReference contentRef, boolean managedResource) Deprecated.Deprecated legacy constructor.- Parameters:
src
- constraints for streaming readsbr
- BufferRecycler to use, if any (null
if none)contentRef
- Input source reference for location reportingmanagedResource
- Whether input source is managed (owned) by Jackson library- Since:
- 2.15
-
IOContext
@Deprecated public IOContext(BufferRecycler br, ContentReference contentRef, boolean managedResource) Deprecated.Deprecated legacy constructor.- Parameters:
br
- BufferRecycler to use, if any (null
if none)contentRef
- Input source reference for location reportingmanagedResource
- Whether input source is managed (owned) by Jackson library- Since:
- 2.13
-
IOContext
Deprecated.
-
-
Method Details
-
streamReadConstraints
- Returns:
- constraints for streaming reads
- Since:
- 2.15
-
streamWriteConstraints
- Returns:
- constraints for streaming writes
- Since:
- 2.16
-
errorReportConfiguration
- Returns:
- Configured
ErrorReportConfiguration
, containing configured values for handling error reporting. - Since:
- 2.16
-
setEncoding
-
withEncoding
-
getEncoding
-
isResourceManaged
public boolean isResourceManaged() -
contentReference
Accessor for getting (some) information about input source, mostly usable for error reporting purposes.- Returns:
- Reference to input source
- Since:
- 2.13
-
getSourceReference
Deprecated.Since 2.13, usecontentReference()
instead- Returns:
- "Raw" source reference
-
constructTextBuffer
-
constructReadConstrainedTextBuffer
-
allocReadIOBuffer
public byte[] allocReadIOBuffer()Method for recycling or allocation byte buffer of "read I/O" type.Note: the method can only be called once during its life cycle. This is to protect against accidental sharing.
- Returns:
- Allocated or recycled byte buffer
-
allocReadIOBuffer
public byte[] allocReadIOBuffer(int minSize) Variant ofallocReadIOBuffer()
that specifies smallest acceptable buffer size.- Parameters:
minSize
- Minimum size of the buffer to recycle or allocate- Returns:
- Allocated or recycled byte buffer
- Since:
- 2.4
-
allocWriteEncodingBuffer
public byte[] allocWriteEncodingBuffer()Method for recycling or allocation byte buffer of "write encoding" type.Note: the method can only be called once during its life cycle. This is to protect against accidental sharing.
- Returns:
- Allocated or recycled byte buffer
-
allocWriteEncodingBuffer
public byte[] allocWriteEncodingBuffer(int minSize) Variant ofallocWriteEncodingBuffer()
that specifies smallest acceptable buffer size.- Parameters:
minSize
- Minimum size of the buffer to recycle or allocate- Returns:
- Allocated or recycled byte buffer
- Since:
- 2.4
-
allocBase64Buffer
public byte[] allocBase64Buffer()Method for recycling or allocation byte buffer of "base 64 encode/decode" type.Note: the method can only be called once during its life cycle. This is to protect against accidental sharing.
- Returns:
- Allocated or recycled byte buffer
-
allocBase64Buffer
public byte[] allocBase64Buffer(int minSize) Variant ofallocBase64Buffer()
that specifies smallest acceptable buffer size.- Parameters:
minSize
- Minimum size of the buffer to recycle or allocate- Returns:
- Allocated or recycled byte buffer
- Since:
- 2.9
-
allocTokenBuffer
public char[] allocTokenBuffer() -
allocTokenBuffer
public char[] allocTokenBuffer(int minSize) -
allocConcatBuffer
public char[] allocConcatBuffer() -
allocNameCopyBuffer
public char[] allocNameCopyBuffer(int minSize) -
releaseReadIOBuffer
public void releaseReadIOBuffer(byte[] buf) Method to call when all the processing buffers can be safely recycled.- Parameters:
buf
- Buffer instance to release (return for recycling)
-
releaseWriteEncodingBuffer
public void releaseWriteEncodingBuffer(byte[] buf) -
releaseBase64Buffer
public void releaseBase64Buffer(byte[] buf) -
releaseTokenBuffer
public void releaseTokenBuffer(char[] buf) -
releaseConcatBuffer
public void releaseConcatBuffer(char[] buf) -
releaseNameCopyBuffer
public void releaseNameCopyBuffer(char[] buf) -
_verifyAlloc
-
_verifyRelease
protected final void _verifyRelease(byte[] toRelease, byte[] src) -
_verifyRelease
protected final void _verifyRelease(char[] toRelease, char[] src) -
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-
_contentReference
instead