Top Inners Fields Constructors Methods
com.fasterxml.jackson.dataformat.cbor

public Class CBORParser

extends ParserMinimalBase
Class Inheritance
Imports
java.io.*, java.math.BigDecimal, .BigInteger, java.nio.charset.Charset, .StandardCharsets, java.util.ArrayList, .Arrays, .Stack, com.fasterxml.jackson.core.*, com.fasterxml.jackson.core.base.ParserMinimalBase, com.fasterxml.jackson.core.io.IOContext, .NumberInput, com.fasterxml.jackson.core.json.DupDetector, com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer, com.fasterxml.jackson.core.util.ByteArrayBuilder, .JacksonFeatureSet, .TextBuffer

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum
CBORParser.Feature

Enumeration that defines all togglable features for CBOR generators.

protected static class
CBORParser.StringRefList

Type to keep track of a list of string references.

protected static class
CBORParser.StringRefListStack

Type to keep a stack of string refs based on namespaces within the document.

public static class
CBORParser.TagList

Class for keeping track of tags in an optimized manner.

Field Summary

Modifier and TypeField and Description
protected byte[]
_binaryValue

We will hold on to decoded binary data, for duration of current event, so that multiple calls to getBinaryValue will not need to decode data more than once.

protected boolean
_bufferRecyclable

Flag that indicates whether the input buffer is recycable (and needs to be returned to recycler once we are done) or not.

protected ByteArrayBuilder
_byteArrayBuilder

ByteArrayBuilder is needed if 'getBinaryValue' is called.

private int
_chunkEnd

Helper variables used when dealing with chunked content.

private int
_chunkLeft

Helper variables used when dealing with chunked content.

protected boolean
_closed

Flag that indicates whether parser is closed or not.

protected long
_currInputProcessed

Number of characters/bytes that were contained in previous blocks (blocks that were already processed prior to the current buffer).

protected int
_currInputRow

Current row location of current point in input buffer, starting from 1, if available.

protected int
_currInputRowStart

Current index of the first character of the current row in input buffer.

protected byte[]
_inputBuffer

Current buffer from which data is read; generally data is read into buffer from input source, but in some cases pre-loaded buffer is handed to the parser.

protected int
_inputEnd

Index of character after last available one in the buffer.

protected int
_inputPtr

Pointer to next available character in buffer

protected InputStream
_inputStream

Input stream that can be used for reading more content, if one in use.

protected final IOContext
_ioContext

I/O context for this reader.

protected boolean
_nameCopied

Flag set to indicate whether the field name is available from the name copy buffer or not (in addition to its String representation being available via read context)

protected char[]
_nameCopyBuffer

Temporary buffer that is needed if field name is accessed using getTextCharacters method (instead of String returning alternatives)

protected BigDecimal
protected BigInteger
protected double
protected float
protected int
protected long
protected int
_numTypesValid

Bitfield that indicates which numeric representations have been calculated for the current type

protected ObjectCodec
_objectCodec

Codec used for data binding when (if) requested.

protected int
_quad1

Quads used for hash calculation

protected int
_quad2

Quads used for hash calculation

protected int
_quad3

Quads used for hash calculation

protected int[]
_quadBuffer

Temporary buffer used for name parsing.

protected String
_sharedString

Shared string that should be used in place of _textBuffer when a string reference is used.

protected CBORReadContext
_streamReadContext

Information about parser context, context in which the next token is to be parsed (root, array, object).

protected CBORParser.StringRefListStack
_stringRefs

Stack of text and binary string references.

protected final ByteQuadsCanonicalizer
_symbols

Symbol table that contains field names encountered so far

protected final boolean
_symbolsCanonical

Marker flag to indicate that standard symbol handling is used (one with symbol table assisted canonicalization.

protected CBORParser.TagList
_tagValues

We will keep track of tag values for possible future use.

protected final TextBuffer
_textBuffer

Buffer that contains contents of String values, including field names if necessary (name split across boundary, contains escape sequence, or access needed to char array)

protected boolean
_tokenIncomplete

Flag that indicates that the current token has not yet been fully processed, and needs to be finished for some access (or skipped to obtain the next token)

protected int
_tokenInputCol

Column on input row that current token starts; 0-based (although in the end it'll be converted to 1-based)

protected int
_tokenInputRow

Input row on which current token starts, 1-based

protected long
_tokenInputTotal

Total number of bytes/characters read before start of current token.

protected int
_typeByte

Type byte of the current token

pack-priv static final BigDecimal
pack-priv static final BigDecimal
pack-priv static final BigDecimal
pack-priv static final BigDecimal
pack-priv static final BigInteger
pack-priv static final BigInteger
pack-priv static final BigInteger
pack-priv static final BigInteger
private static final BigInteger
protected static final JacksonFeatureSet<StreamReadCapability>
protected static final int
private static final double
private static final double
private static final Charset
private static final int[]
Inherited from com.fasterxml.jackson.core.base.ParserMinimalBase:
_currToken_lastClearedTokenCHAR_NULLINT_0INT_9INT_APOSINT_ASTERISKINT_BACKSLASHINT_COLONINT_COMMAINT_CRINT_eINT_EINT_HASHINT_LBRACKETINT_LCURLYINT_LFINT_MINUSINT_PERIODINT_PLUSINT_QUOTEINT_RBRACKETINT_RCURLYINT_SLASHINT_SPACEINT_TABMAX_ERROR_TOKEN_LENGTHMAX_INT_DMAX_INT_LMAX_LONG_DMIN_INT_DMIN_INT_LMIN_LONG_DNO_BYTESNO_INTSNR_BIGDECIMALNR_BIGINTNR_DOUBLENR_FLOATNR_INTNR_LONGNR_UNKNOWN

Constructor Summary

AccessConstructor and Description
public
CBORParser(IOContext ctxt, int parserFeatures, int cborFeatures, ObjectCodec codec, ByteQuadsCanonicalizer sym, InputStream in, byte[] inputBuffer, int start, int end, boolean bufferRecyclable)

Method Summary

Modifier and TypeMethod and Description
private final String
private final BigInteger
_bigNegative(long l)

private final BigInteger
_bigPositive(long l)

protected final boolean
protected final boolean
_checkNextIsIntInArray(final String typeDesc)

Heavily simplified method that does a subset of what nextToken() does to basically only (1) determine that we are getting JsonToken.VALUE_NUMBER_INT (if not, return with no processing) and (2) if so, prepare state so that number accessor method will work).

protected void
_checkNumericValue(int expType)

protected void
private final int
private final int
private final long
private final int
private final String
private final int
private final int
private int
_decodeChunkLength(int expType)

private final String
_decodeContiguousName(final int len)

private final int
_decodeExplicitLength(int lowBits)

Method used to decode explicit length of a variable-length value (or, for indefinite/chunked, indicate that one is not known).

private float
private final String
protected final void
_decodeNonStringName(int ch, CBORParser.TagList tags)

Method that handles initial token type recognition for token that has to be either FIELD_NAME or END_OBJECT.

protected final JsonToken
public JsonToken
_decodeSimpleValue(int lowBits, int ch)

Helper method that deals with details of decoding unallocated "simple values" and exposing them as expected token.

private final int
_decodeTag(int lowBits)

protected JsonToken
_decodeUndefinedValue()

Helper method to encapsulate details of handling of mysterious `undefined` value that is allowed to be used as something encoder could not handle (as per spec), whatever the heck that should be.

private final int
_decodeUTF8_3(int c1)

private final int

Returns:

Character value minus 0x10000; this so that caller can readily expand it to actual surrogates
_decodeUTF8_4
(int c)

protected JsonToken
private final String
_findDecodedFromSymbols(final int len)

Helper method for trying to find specified encoded UTF-8 byte sequence from symbol table; if successful avoids actual decoding to String.

private final String
_findDecodedLong(int len, int q1, int q2)

Method for locating names longer than 8 bytes (in UTF-8)

protected byte[]
_finishBytes(int len)

Helper called to complete reading of binary data ("byte string") in case contents are needed.

protected byte[]
private final void
protected byte[]
_finishLongContiguousBytes(final int expLen)

private final String
_finishLongText(int len)

private final String
protected String
protected void
_finishToken()

Method called to finish parsing of a token so that token contents are retriable

private final byte[]
protected ByteArrayBuilder
private static int[]
_growArrayTo(int[] arr, int minSize)

protected void
_handleEOF()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase._handleEOF.

Method sub-classes need to implement for verifying that end-of-content is acceptable at current input position.

protected JsonToken
protected JsonToken
protected JsonToken
protected void
_invalidToken(int ch)

protected final void
_loadToHaveAtLeast(int minAvailable)

Helper method that will try to load at least specified number bytes in input buffer, possible moving existing data around if necessary

private static final long
_long(int i1, int i2)

private final int
private final int
private final int
protected String
_numberToName(int ch, boolean neg, CBORParser.TagList tags)

private static final int
_padQuadForNulls(int firstByte)

private int
_readAndWriteBytes(OutputStream out, final int total)

protected void
_releaseBuffers()

Method called to release internal buffers owned by the base reader.

protected void
_reportIncompleteBinaryRead(int expLen, int actLen)

protected void
protected void
protected void
_reportInvalidOther(int mask, int ptr)

private String
_reportTruncatedUTF8InName(int strLenBytes, int truncatedCharOffset, int firstUTFByteValue, int bytesExpected)

private String
_reportTruncatedUTF8InString(int strLenBytes, int truncatedCharOffset, int firstUTFByteValue, int bytesExpected)

protected <T> T
protected void
_skipBytes(int len)

protected void
_skipBytesL(long llen)

protected void
_skipChunked(int expectedType)

protected void
_skipIncomplete()

Method called to skip remainders of an incomplete token, when contents themselves will not be needed any more.

private final int
private final int
private final long
protected final boolean
_tryToLoadToHaveAtLeast(int minAvailable)

public void
close()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.close.

Implements java.io.Closeable.close.

Closes the parser so that no further iteration or data access can be made; will also close the underlying input source if parser either owns the input source, or feature Feature#AUTO_CLOSE_SOURCE is enabled.

protected void
protected void
protected void
protected void
protected void
protected void
private void
createChildArrayContext(final int len)

private void
createChildObjectContext(final int len)

public JsonLocation
currentLocation()

Overrides com.fasterxml.jackson.core.JsonParser.currentLocation.

Overridden since we do not really have character-based locations, but we do have byte offset to specify.

public String
currentName()

Overrides com.fasterxml.jackson.core.JsonParser.currentName.

Method that can be called to get the name associated with the current event.

public JsonLocation
currentTokenLocation()

Overrides com.fasterxml.jackson.core.JsonParser.currentTokenLocation.

Overridden since we do not really have character-based locations, but we do have byte offset to specify.

public void
finishToken()

Overrides com.fasterxml.jackson.core.JsonParser.finishToken.

Method for forcing full read of current token, even if it might otherwise only be read if data is accessed via getText and similar methods.

public BigInteger
getBigIntegerValue()

Implements abstract com.fasterxml.jackson.core.JsonParser.getBigIntegerValue.

Numeric accessor that can be called when the current token is of type JsonToken#VALUE_NUMBER_INT and it can not be used as a Java long primitive type due to its magnitude.

public byte[]
getBinaryValue(Base64Variant
Expected variant of base64 encoded content (see Base64Variants for definitions of "standard" variants).
b64variant
)

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.getBinaryValue.

Method that can be used to read (and consume -- results may not be accessible using other methods after the call) base64-encoded binary data included in the current textual JSON value.

public ObjectCodec
getCodec()

Implements abstract com.fasterxml.jackson.core.JsonParser.getCodec.

Accessor for ObjectCodec associated with this parser, if any.

public JsonLocation
getCurrentLocation()

Implements abstract com.fasterxml.jackson.core.JsonParser.getCurrentLocation.

Deprecated

Deprecated alias for currentLocation() (removed from Jackson 3.0).

public String
public int
getCurrentTag()

Method that can be used to access tag id associated with the most recently decoded value (whether completely, for scalar values, or partially, for Objects/Arrays), if any.

public CBORParser.TagList
getCurrentTags()

Method that can be used to access all tag ids associated with the most recently decoded value (whether completely, for scalar values, or partially, for Objects/Arrays), if any.

public BigDecimal
getDecimalValue()

Implements abstract com.fasterxml.jackson.core.JsonParser.getDecimalValue.

Numeric accessor that can be called when the current token is of type JsonToken#VALUE_NUMBER_FLOAT or JsonToken#VALUE_NUMBER_INT.

public double
getDoubleValue()

Implements abstract com.fasterxml.jackson.core.JsonParser.getDoubleValue.

Numeric accessor that can be called when the current token is of type JsonToken#VALUE_NUMBER_FLOAT and it can be expressed as a Java double primitive type.

public Object
getEmbeddedObject()

Overrides com.fasterxml.jackson.core.JsonParser.getEmbeddedObject.

Accessor that can be called if (and only if) the current token is JsonToken#VALUE_EMBEDDED_OBJECT.

public float
getFloatValue()

Implements abstract com.fasterxml.jackson.core.JsonParser.getFloatValue.

Numeric accessor that can be called when the current token is of type JsonToken#VALUE_NUMBER_FLOAT and it can be expressed as a Java float primitive type.

public int
getFormatFeatures()

Overrides com.fasterxml.jackson.core.JsonParser.getFormatFeatures.

Bulk access method for getting state of all FormatFeatures, format-specific on/off configuration settings.

public Object
getInputSource()

Overrides com.fasterxml.jackson.core.JsonParser.getInputSource.

Method that can be used to get access to object that is used to access input being parsed; this is usually either InputStream or Reader, depending on what parser was constructed with.

public int
getIntValue()

Implements abstract com.fasterxml.jackson.core.JsonParser.getIntValue.

Numeric accessor that can be called when the current token is of type JsonToken#VALUE_NUMBER_INT and it can be expressed as a value of Java int primitive type.

public long
getLongValue()

Implements abstract com.fasterxml.jackson.core.JsonParser.getLongValue.

Numeric accessor that can be called when the current token is of type JsonToken#VALUE_NUMBER_INT and it can be expressed as a Java long primitive type.

public JsonParser.NumberType
getNumberType()

Implements abstract com.fasterxml.jackson.core.JsonParser.getNumberType.

If current token is of type JsonToken#VALUE_NUMBER_INT or JsonToken#VALUE_NUMBER_FLOAT, returns one of NumberType constants; otherwise returns null.

public JsonParser.NumberTypeFP
getNumberTypeFP()

Overrides com.fasterxml.jackson.core.JsonParser.getNumberTypeFP.

If current token is of type JsonToken#VALUE_NUMBER_FLOAT, returns one of NumberTypeFP constants; otherwise returns NumberTypeFP#UNKNOWN.

public Number
getNumberValue()

Implements abstract com.fasterxml.jackson.core.JsonParser.getNumberValue.

Generic number value accessor method that will work for all kinds of numeric values.

public final Number
getNumberValueExact()

Overrides com.fasterxml.jackson.core.JsonParser.getNumberValueExact.

Method similar to getNumberValue with the difference that for floating-point numbers value returned may be BigDecimal if the underlying format does not store floating-point numbers using native representation: for example, textual formats represent numbers as Strings (which are 10-based), and conversion to java.lang.Double is potentially lossy operation.

public CBORReadContext
getParsingContext()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.getParsingContext.

Method that can be used to access current parsing context reader is in. There are 3 different types: root, array and object contexts, with slightly different available information.

public JacksonFeatureSet<StreamReadCapability>
getReadCapabilities()

Overrides com.fasterxml.jackson.core.JsonParser.getReadCapabilities.

Accessor for getting metadata on capabilities of this parser, based on underlying data format being read (directly or indirectly).

public String
getText()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.getText.

Method for accessing textual representation of the current event; if no current event (before first call to nextToken, or after encountering end-of-input), returns null.

public int
getText(Writer
Writer to write textual content to
writer
)

Overrides com.fasterxml.jackson.core.JsonParser.getText.

Method to read the textual representation of the current token in chunks and pass it to the given Writer.

public char[]
getTextCharacters()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.getTextCharacters.

Method similar to getText, but that will return underlying (unmodifiable) character array that contains textual value, instead of constructing a String object to contain this information.

public int
getTextLength()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.getTextLength.

Accessor used with getTextCharacters, to know length of String stored in returned buffer.

public int
getTextOffset()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.getTextOffset.

Accessor used with getTextCharacters, to know offset of the first text content character within buffer.

public JsonLocation
getTokenLocation()

Implements abstract com.fasterxml.jackson.core.JsonParser.getTokenLocation.

Deprecated

Deprecated alias for currentTokenLocation() (removed from Jackson 3.0).

public String
getValueAsString()

Overrides com.fasterxml.jackson.core.base.ParserMinimalBase.getValueAsString.

Method that will try to convert value of current token to a java.lang.String.

public String
getValueAsString(String
Default value to return if conversion to String is not possible
defaultValue
)

Overrides com.fasterxml.jackson.core.base.ParserMinimalBase.getValueAsString.

Method that will try to convert value of current token to a java.lang.String.

public boolean
hasTextCharacters()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.hasTextCharacters.

Method that can be used to determine whether calling of getTextCharacters would be the most efficient way to access textual content for the event parser currently points to.

public boolean
isClosed()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.isClosed.

Method that can be called to determine whether this parser is closed or not.

public boolean
isNaN()

Overrides com.fasterxml.jackson.core.JsonParser.isNaN.

Accessor for checking whether current token is a special "not-a-number" (NaN) token (including both "NaN" AND positive/negative infinity!).

protected boolean
protected void
public Boolean
nextBooleanValue()

Overrides com.fasterxml.jackson.core.JsonParser.nextBooleanValue.

Method that fetches next token (as if calling nextToken) and if it is JsonToken#VALUE_TRUE or JsonToken#VALUE_FALSE returns matching Boolean value; otherwise return null.

public boolean
nextFieldName(SerializableString
Property name to compare next token to (if next token is JsonToken.FIELD_NAME)
str
)

Overrides com.fasterxml.jackson.core.JsonParser.nextFieldName.

Method that fetches next token (as if calling nextToken) and verifies whether it is JsonToken#FIELD_NAME with specified name and returns result of that comparison.

public String
nextFieldName()

Overrides com.fasterxml.jackson.core.JsonParser.nextFieldName.

Method that fetches next token (as if calling nextToken) and verifies whether it is JsonToken#FIELD_NAME; if it is, returns same as currentName(), otherwise null.

public int
nextIntValue(int
Value to return if next token is NOT of type JsonToken.VALUE_NUMBER_INT
defaultValue
)

Overrides com.fasterxml.jackson.core.JsonParser.nextIntValue.

Method that fetches next token (as if calling nextToken) and if it is JsonToken#VALUE_NUMBER_INT returns 32-bit int value; otherwise returns specified default value It is functionally equivalent to:

  return (nextToken() == JsonToken.VALUE_NUMBER_INT) ?
public long
nextLongValue(long
Value to return if next token is NOT of type JsonToken.VALUE_NUMBER_INT
defaultValue
)

Overrides com.fasterxml.jackson.core.JsonParser.nextLongValue.

Method that fetches next token (as if calling nextToken) and if it is JsonToken#VALUE_NUMBER_INT returns 64-bit long value; otherwise returns specified default value It is functionally equivalent to:

  return (nextToken() == JsonToken.VALUE_NUMBER_INT) ?
public String
nextTextValue()

Overrides com.fasterxml.jackson.core.JsonParser.nextTextValue.

Method that fetches next token (as if calling nextToken) and if it is JsonToken#VALUE_STRING returns contained String value; otherwise returns null.

public JsonToken
nextToken()

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.nextToken.

Main iteration method, which will advance stream enough to determine type of the next token, if any.

public void
overrideCurrentName(String
Name to use as the current name; may be null.
name
)

Implements abstract com.fasterxml.jackson.core.base.ParserMinimalBase.overrideCurrentName.

Method that can be used to change what is considered to be the current (field) name.

public int
readBinaryValue(Base64Variant
base64 variant to use
b64variant
,
OutputStream
Output stream to use for passing decoded binary data
out
)

Overrides com.fasterxml.jackson.core.JsonParser.readBinaryValue.

Similar to readBinaryValue(OutputStream) but allows explicitly specifying base64 variant to use.

public int
releaseBuffered(OutputStream
OutputStream to which buffered, undecoded content is written to
out
)

Overrides com.fasterxml.jackson.core.JsonParser.releaseBuffered.

Method that can be called to push back any content that has been read but not consumed by the parser.

public void
setCodec(ObjectCodec
Codec to assign, if any; null if none
c
)

Implements abstract com.fasterxml.jackson.core.JsonParser.setCodec.

Setter that allows defining ObjectCodec associated with this parser, if any.

public Version
version()

Implements abstract com.fasterxml.jackson.core.JsonParser.version.

Implements com.fasterxml.jackson.core.Versioned.version.

Accessor for getting version of the core package, given a parser instance.

Inherited from com.fasterxml.jackson.core.base.ParserMinimalBase:
_ascii_asciiBytes_constructError_decodeBase64_getCharDesc_hasTextualNull_longIntegerDesc_longNumberDesc_reportError_reportError_reportError_reportInputCoercion_reportInvalidEOF_reportInvalidEOF_reportInvalidEOF_reportInvalidEOFInValue_reportInvalidEOFInValue_reportMissingRootWS_reportUnexpectedChar_reportUnexpectedNumberChar_throwInternal_throwInvalidSpace_wrapErrorclearCurrentTokencurrentTokencurrentTokenIdgetCurrentTokengetCurrentTokenIdgetLastClearedTokengetValueAsBooleangetValueAsDoublegetValueAsIntgetValueAsIntgetValueAsLonggetValueAsLonghasCurrentTokenhasTokenhasTokenIdisExpectedNumberIntTokenisExpectedStartArrayTokenisExpectedStartObjectTokennextValuereportInvalidNumberreportOverflowIntreportOverflowIntreportOverflowIntreportOverflowLongreportOverflowLongreportOverflowLongreportUnexpectedNumberCharskipChildren