Top Inners Fields Constructors Methods
tools.jackson.dataformat.cbor

public Class CBORParser

extends ParserBase
Class Inheritance
Static Imports
tools.jackson.dataformat.cbor.CBORConstants.*

Nested and Inner Type Summary

Modifier and TypeClass and Description
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 boolean
_bufferRecyclable

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

private int
_chunkEnd

Helper variables used when dealing with chunked content.

private int
_chunkLeft

Helper variables used when dealing with chunked content.

protected final int
_formatFeatures

Bit flag composed of bits that indicate which CBORReadFeatures are enabled.

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 InputStream
_inputStream

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

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 CBORSimpleValue
_simpleValue

When major type 7 value is encountered and exposed as JsonToken#VALUE_EMBEDDED_OBJECT, the value will be stored here.

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 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
_typeByte

Type byte of the current token

private 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 tools.jackson.core.base.ParserBase:
_binaryValue_byteArrayBuilder_currInputProcessed_currInputRow_currInputRowStart_expLength_fractLength_inputEnd_inputPtr_intLength_numberBigDecimal_numberBigInt_numberDouble_numberFloat_numberInt_numberIsNaN_numberLong_numberNegative_numberString_numTypesValid_textBuffer_tokenInputCol_tokenInputRow_tokenInputTotal

Constructor Summary

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

Method Summary

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

protected 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
protected void
protected void
_closeInput()

Implements abstract tools.jackson.core.base.ParserMinimalBase._closeInput.

Abstract method for sub-classes to implement; to be called by close() implementation here.

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 String
_decodeNonStringName(int ch, CBORParser.TagList tags)

Method that handles initial token type recognition for token that has to be either PROPERTY_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
private final boolean
_finishChunkedTextAscii()

Reads in a tight loop ASCII text until a non-ASCII char is found.

protected byte[]
_finishLongContiguousBytes(final int expLen)

private final String
_finishLongText(int len)

private final int
_finishLongTextAscii(int len)

Consumes as many ascii chars as possible in a tight loop.

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[]
private static int[]
_growArrayTo(int[] arr, int minSize)

protected void
_handleEOF()

Overrides tools.jackson.core.base.ParserBase._handleEOF.

Method called when an EOF is encountered between tokens.

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

private final void
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
private int
private final int
_nextFieldFromSymbolsLong(PropertyNameMatcher matcher, int len, int q1, int q2)

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

private final int
_nextFieldOptimized(PropertyNameMatcher matcher, final int len)

private int
private int
_nextNameLong(PropertyNameMatcher matcher, int lenMarker)

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

private static final int
_padQuadForNulls(int firstByte)

protected int
protected void
_parseNumericValue(int expType)

Implements abstract tools.jackson.core.base.ParserBase._parseNumericValue.

Method that will parse actual numeric value out of a syntactically valid number value.

private int
_readAndWriteBytes(OutputStream out, final int total)

protected void
_releaseBuffers()

Overrides tools.jackson.core.base.ParserBase._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 void
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
assignCurrentValue(Object v)

Overrides tools.jackson.core.base.ParserBase.assignCurrentValue.

Helper method, usually equivalent to: getParsingContext().assignCurrentValue(v);

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

protected void
createChildObjectContext(final int len)

public TokenStreamLocation
currentLocation()

Implements abstract tools.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()

Implements abstract tools.jackson.core.JsonParser.currentName.

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

public TokenStreamLocation
currentTokenLocation()

Implements abstract tools.jackson.core.JsonParser.currentTokenLocation.

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

public Object
currentValue()

Overrides tools.jackson.core.base.ParserBase.currentValue.

Helper method, usually equivalent to: getParsingContext().currentValue();

Note that "current value" is NOT populated (or used) by Streaming parser; it is only used by higher-level data-binding functionality.

public void
finishToken()

Overrides tools.jackson.core.base.ParserMinimalBase.finishToken.

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

public byte[]
getBinaryValue(Base64Variant b64variant)

Overrides tools.jackson.core.base.ParserBase.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 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 Object
getEmbeddedObject()

Overrides tools.jackson.core.base.ParserMinimalBase.getEmbeddedObject.

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

public float
getFloatValue()

Overrides tools.jackson.core.base.ParserBase.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 JsonParser.NumberType
getNumberType()

Overrides tools.jackson.core.base.ParserBase.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 tools.jackson.core.base.ParserMinimalBase.getNumberTypeFP.

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

public Number
getNumberValue()

Overrides tools.jackson.core.base.ParserBase.getNumberValue.

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

public final Number
getNumberValueExact()

Overrides tools.jackson.core.base.ParserBase.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 String
getString()

Implements abstract tools.jackson.core.JsonParser.getString.

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
getString(Writer writer)

Overrides tools.jackson.core.base.ParserMinimalBase.getString.

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

public char[]
getStringCharacters()

Implements abstract tools.jackson.core.JsonParser.getStringCharacters.

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

public int
getStringLength()

Implements abstract tools.jackson.core.JsonParser.getStringLength.

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

public int
getStringOffset()

Implements abstract tools.jackson.core.JsonParser.getStringOffset.

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

public String
getValueAsString()

Overrides tools.jackson.core.base.ParserMinimalBase.getValueAsString.

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

public String
getValueAsString(String defaultValue)

Overrides tools.jackson.core.base.ParserMinimalBase.getValueAsString.

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

public boolean
hasStringCharacters()

Overrides tools.jackson.core.base.ParserBase.hasStringCharacters.

Method that can be used to determine whether calling of getStringCharacters would be the most efficient way to access String value for the event parser currently points to (compared to getString()).

public boolean
isNaN()

Overrides tools.jackson.core.base.ParserBase.isNaN.

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

public boolean

Returns:

true if current token is an undefined, false otherwise
isUndefined
()

Checking whether the current token represents an undefined value (0xF7).

protected boolean
protected void
public Boolean
nextBooleanValue()

Overrides tools.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 int
nextIntValue(int defaultValue)

Overrides tools.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 defaultValue)

Overrides tools.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 boolean
nextName(SerializableString str)

Overrides tools.jackson.core.base.ParserMinimalBase.nextName.

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

public String
nextName()

Overrides tools.jackson.core.base.ParserMinimalBase.nextName.

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

public int
nextNameMatch(PropertyNameMatcher matcher)

Overrides tools.jackson.core.base.ParserMinimalBase.nextNameMatch.

Method that tries to match next token from stream as JsonToken#PROPERTY_NAME, and if so, further match it to one of pre-specified (field) names.

public String
nextStringValue()

Overrides tools.jackson.core.JsonParser.nextStringValue.

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 tools.jackson.core.JsonParser.nextToken.

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

public int
readBinaryValue(Base64Variant b64variant, OutputStream out)

Overrides tools.jackson.core.JsonParser.readBinaryValue.

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

public int
releaseBuffered(OutputStream out)

Overrides tools.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 JacksonFeatureSet<StreamReadCapability>
streamReadCapabilities()

Overrides tools.jackson.core.base.ParserMinimalBase.streamReadCapabilities.

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

public TokenStreamContext
streamReadContext()

Implements abstract tools.jackson.core.JsonParser.streamReadContext.

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 Object
streamReadInputSource()

Implements abstract tools.jackson.core.JsonParser.streamReadInputSource.

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 Version
version()

Implements abstract tools.jackson.core.JsonParser.version.

Implements tools.jackson.core.Versioned.version.

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

Inherited from tools.jackson.core.base.ParserBase:
_contentReference_contentReferenceRedacted_convertBigDecimalToBigInteger_decodeBase64Escape_decodeBase64Escape_decodeEscaped_eofAsNextChar_getBigDecimal_getBigInteger_getByteArrayBuilder_getNumberDouble_getNumberFloat_growNameDecodeBuffer_handleBase64MissingPadding_reportInvalidBase64Char_reportInvalidBase64CharclosegetBigIntegerValuegetDecimalValuegetDoubleValuegetIntValuegetLongValuegetNumberValueDeferredgetTokenCharacterOffsetgetTokenColumnNrgetTokenLineNrgrowArrayByresetresetAsNaNresetFloatresetInt