Class NonBlockingUtf8JsonParserBase
- java.lang.Object
-
- com.fasterxml.jackson.core.JsonParser
-
- com.fasterxml.jackson.core.base.ParserMinimalBase
-
- com.fasterxml.jackson.core.base.ParserBase
-
- com.fasterxml.jackson.core.json.JsonParserBase
-
- com.fasterxml.jackson.core.json.async.NonBlockingJsonParserBase
-
- com.fasterxml.jackson.core.json.async.NonBlockingUtf8JsonParserBase
-
- All Implemented Interfaces:
Versioned
,java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
NonBlockingByteBufferJsonParser
,NonBlockingJsonParser
public abstract class NonBlockingUtf8JsonParserBase extends NonBlockingJsonParserBase
Non-blocking parser base implementation for JSON content.NOTE: only supports parsing of UTF-8 encoded content (and 7-bit US-ASCII since it is strict subset of UTF-8): other encodings are not supported.
- Since:
- 2.9
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonParser
JsonParser.Feature, JsonParser.NumberType, JsonParser.NumberTypeFP
-
-
Field Summary
Fields Modifier and Type Field Description protected static int[]
_icLatin1
protected int
_origBufferLen
In addition to current buffer pointer, and end pointer, we will also need to know number of bytes originally contained.-
Fields inherited from class com.fasterxml.jackson.core.json.async.NonBlockingJsonParserBase
_currBufferStart, _currInputRowAlt, _endOfInput, _majorState, _majorStateAfterValue, _minorState, _minorStateAfterSplit, _nonStdTokenType, _pending32, _pendingBytes, _quad1, _quadBuffer, _quadLength, _quoted32, _quotedDigits, _symbols, MAJOR_ARRAY_ELEMENT_FIRST, MAJOR_ARRAY_ELEMENT_NEXT, MAJOR_CLOSED, MAJOR_INITIAL, MAJOR_OBJECT_FIELD_FIRST, MAJOR_OBJECT_FIELD_NEXT, MAJOR_OBJECT_VALUE, MAJOR_ROOT, MINOR_COMMENT_C, MINOR_COMMENT_CLOSING_ASTERISK, MINOR_COMMENT_CPP, MINOR_COMMENT_LEADING_SLASH, MINOR_COMMENT_YAML, MINOR_FIELD_APOS_NAME, MINOR_FIELD_LEADING_COMMA, MINOR_FIELD_LEADING_WS, MINOR_FIELD_NAME, MINOR_FIELD_NAME_ESCAPE, MINOR_FIELD_UNQUOTED_NAME, MINOR_NUMBER_EXPONENT_DIGITS, MINOR_NUMBER_EXPONENT_MARKER, MINOR_NUMBER_FRACTION_DIGITS, MINOR_NUMBER_INTEGER_DIGITS, MINOR_NUMBER_MINUS, MINOR_NUMBER_MINUSZERO, MINOR_NUMBER_PLUS, MINOR_NUMBER_ZERO, MINOR_ROOT_BOM, MINOR_ROOT_GOT_SEPARATOR, MINOR_ROOT_NEED_SEPARATOR, MINOR_VALUE_APOS_STRING, MINOR_VALUE_EXPECTING_COLON, MINOR_VALUE_EXPECTING_COMMA, MINOR_VALUE_LEADING_WS, MINOR_VALUE_STRING, MINOR_VALUE_STRING_ESCAPE, MINOR_VALUE_STRING_UTF8_2, MINOR_VALUE_STRING_UTF8_3, MINOR_VALUE_STRING_UTF8_4, MINOR_VALUE_TOKEN_ERROR, MINOR_VALUE_TOKEN_FALSE, MINOR_VALUE_TOKEN_NON_STD, MINOR_VALUE_TOKEN_NULL, MINOR_VALUE_TOKEN_TRUE, MINOR_VALUE_WS_AFTER_COMMA, NON_STD_TOKEN_INFINITY, NON_STD_TOKEN_MINUS_INFINITY, NON_STD_TOKEN_NAN, NON_STD_TOKEN_PLUS_INFINITY, NON_STD_TOKEN_VALUES, NON_STD_TOKENS
-
Fields inherited from class com.fasterxml.jackson.core.json.JsonParserBase
_objectCodec, FEAT_MASK_NON_NUM_NUMBERS, INPUT_CODES_LATIN1, INPUT_CODES_UTF8
-
Fields inherited from class com.fasterxml.jackson.core.base.ParserBase
_binaryValue, _byteArrayBuilder, _closed, _currInputProcessed, _currInputRow, _currInputRowStart, _expLength, _fractLength, _inputEnd, _inputPtr, _intLength, _ioContext, _nameCopied, _nameCopyBuffer, _nextToken, _numberBigDecimal, _numberBigInt, _numberDouble, _numberFloat, _numberInt, _numberIsNaN, _numberLong, _numberNegative, _numberString, _numTypesValid, _parsingContext, _textBuffer, _tokenInputCol, _tokenInputRow, _tokenInputTotal, JSON_READ_CAPABILITIES
-
Fields inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase
_currToken, _lastClearedToken, _streamReadConstraints, _tokenCount, _trackMaxTokenCount, BD_MAX_INT, BD_MAX_LONG, BD_MIN_INT, BD_MIN_LONG, BI_MAX_INT, BI_MAX_LONG, BI_MIN_INT, BI_MIN_LONG, CHAR_NULL, INT_0, INT_9, INT_APOS, INT_ASTERISK, INT_BACKSLASH, INT_COLON, INT_COMMA, INT_CR, INT_e, INT_E, INT_HASH, INT_LBRACKET, INT_LCURLY, INT_LF, INT_MINUS, INT_PERIOD, INT_PLUS, INT_QUOTE, INT_RBRACKET, INT_RCURLY, INT_SLASH, INT_SPACE, INT_TAB, MAX_ERROR_TOKEN_LENGTH, MAX_INT_D, MAX_INT_L, MAX_LONG_D, MIN_INT_D, MIN_INT_L, MIN_LONG_D, NO_BYTES, NO_INTS, NR_BIGDECIMAL, NR_BIGINT, NR_DOUBLE, NR_FLOAT, NR_INT, NR_LONG, NR_UNKNOWN
-
Fields inherited from class com.fasterxml.jackson.core.JsonParser
_features, _requestPayload, DEFAULT_READ_CAPABILITIES
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
NonBlockingUtf8JsonParserBase(IOContext ctxt, int parserFeatures, ByteQuadsCanonicalizer sym)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected char
_decodeEscaped()
Method that sub-classes must implement to support escaped sequences in base64-encoded sections.protected JsonToken
_finishErrorToken()
protected JsonToken
_finishErrorTokenWithEOF()
protected JsonToken
_finishFieldWithEscape()
protected JsonToken
_finishFloatExponent(boolean checkSign, int ch)
protected JsonToken
_finishFloatFraction()
protected JsonToken
_finishKeywordToken(java.lang.String expToken, int matched, JsonToken result)
protected JsonToken
_finishKeywordTokenWithEOF(java.lang.String expToken, int matched, JsonToken result)
protected JsonToken
_finishNonStdToken(int type, int matched)
protected JsonToken
_finishNonStdTokenWithEOF(int type, int matched)
protected JsonToken
_finishNumberIntegralPart(char[] outBuf, int outPtr)
protected JsonToken
_finishNumberLeadingNegZeroes()
protected JsonToken
_finishNumberLeadingPosNegZeroes(boolean negative)
protected JsonToken
_finishNumberLeadingPosZeroes()
protected JsonToken
_finishNumberLeadingZeroes()
protected JsonToken
_finishNumberMinus(int ch)
protected JsonToken
_finishNumberPlus(int ch)
protected JsonToken
_finishNumberPlusMinus(int ch, boolean negative)
protected JsonToken
_finishToken()
Method called when decoding of a token has been started, but not yet completed due to missing input; method is to continue decoding due to at least one more byte being made available to decode.protected JsonToken
_finishTokenWithEOF()
Method similar to_finishToken()
, but called when no more input is available, and end-of-input has been detected.protected JsonToken
_reportErrorToken(java.lang.String actualToken)
protected JsonToken
_startAposString()
protected JsonToken
_startFalseToken()
protected JsonToken
_startFloat(char[] outBuf, int outPtr, int ch)
protected JsonToken
_startFloatThatStartsWithPeriod()
protected JsonToken
_startNegativeNumber()
protected JsonToken
_startNullToken()
protected JsonToken
_startNumberLeadingZero()
protected JsonToken
_startPositiveNumber()
protected JsonToken
_startPositiveNumber(int ch)
protected JsonToken
_startString()
protected JsonToken
_startTrueToken()
protected JsonToken
_startUnexpectedValue(boolean leadingComma, int ch)
void
endOfInput()
protected abstract byte
getByteFromBuffer(int ptr)
protected abstract byte
getNextSignedByteFromBuffer()
protected abstract int
getNextUnsignedByteFromBuffer()
boolean
needMoreInput()
JsonToken
nextToken()
Main iteration method, which will advance stream enough to determine type of the next token, if any.-
Methods inherited from class com.fasterxml.jackson.core.json.async.NonBlockingJsonParserBase
_addName, _closeArrayScope, _closeInput, _closeObjectScope, _currentLocationMinusOne, _eofAsNextToken, _fieldComplete, _findName, _findName, _findName, _getText2, _nonStdToken, _padLastQuad, _releaseBuffers, _reportInvalidChar, _reportInvalidInitial, _reportInvalidOther, _reportInvalidOther, _startArrayScope, _startObjectScope, _updateTokenLocation, _valueComplete, _valueCompleteInt, _valueNonStdNumberComplete, canParseAsync, currentLocation, currentTokenLocation, getBinaryValue, getEmbeddedObject, getInputSource, getText, getText, getTextCharacters, getTextLength, getTextOffset, getValueAsString, getValueAsString, hasTextCharacters, readBinaryValue, releaseBuffered, setCodec, symbolTableForTests
-
Methods inherited from class com.fasterxml.jackson.core.json.JsonParserBase
getCodec, getCurrentLocation, getNumberTypeFP, getReadCapabilities, getTokenLocation
-
Methods inherited from class com.fasterxml.jackson.core.base.ParserBase
_checkStdFeatureChanges, _contentReference, _contentReferenceRedacted, _convertBigDecimalToBigInteger, _decodeBase64Escape, _decodeBase64Escape, _eofAsNextChar, _finishString, _getBigDecimal, _getBigInteger, _getByteArrayBuilder, _getNumberDouble, _getNumberFloat, _getSourceReference, _growNameDecodeBuffer, _handleBase64MissingPadding, _handleEOF, _handleUnrecognizedCharacterEscape, _parseIntValue, _parseNumericValue, _reportMismatchedEndMarker, _reportTooLongIntegral, _throwUnquotedSpace, _validJsonTokenList, _validJsonValueList, assignCurrentValue, close, convertNumberToBigDecimal, convertNumberToBigInteger, convertNumberToDouble, convertNumberToFloat, convertNumberToInt, convertNumberToLong, createChildArrayContext, createChildObjectContext, currentValue, disable, enable, getBigIntegerValue, getCurrentName, getDecimalValue, getDoubleValue, getFloatValue, getIntValue, getLongValue, getNumberType, getNumberValue, getNumberValueDeferred, getNumberValueExact, getParsingContext, getTokenCharacterOffset, getTokenColumnNr, getTokenLineNr, growArrayBy, isClosed, isNaN, loadMore, loadMoreGuaranteed, overrideCurrentName, overrideStdFeatures, reportInvalidBase64Char, reportInvalidBase64Char, reset, resetAsNaN, resetFloat, resetInt, setFeatureMask, version
-
Methods inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase
_ascii, _asciiBytes, _constructError, _decodeBase64, _getCharDesc, _hasTextualNull, _longIntegerDesc, _longNumberDesc, _nullSafeUpdateToken, _reportError, _reportError, _reportError, _reportInputCoercion, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportMissingRootWS, _reportUnexpectedChar, _reportUnexpectedNumberChar, _throwInternal, _throwInternalReturnAny, _throwInvalidSpace, _updateToken, _updateTokenToNA, _updateTokenToNull, _wrapError, clearCurrentToken, currentToken, currentTokenCount, currentTokenId, getCurrentToken, getCurrentTokenId, getLastClearedToken, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsInt, getValueAsLong, getValueAsLong, hasCurrentToken, hasToken, hasTokenId, isExpectedNumberIntToken, isExpectedStartArrayToken, isExpectedStartObjectToken, nextValue, reportInvalidNumber, reportOverflowInt, reportOverflowInt, reportOverflowInt, reportOverflowLong, reportOverflowLong, reportOverflowLong, reportUnexpectedNumberChar, skipChildren, streamReadConstraints
-
Methods inherited from class com.fasterxml.jackson.core.JsonParser
_codec, _constructError, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _reportUnsupportedOperation, canReadObjectId, canReadTypeId, canUseSchema, configure, currentName, finishToken, getBinaryValue, getBooleanValue, getByteValue, getCurrentValue, getFeatureMask, getFormatFeatures, getNonBlockingInputFeeder, getObjectId, getSchema, getShortValue, getTypeId, getValueAsBoolean, getValueAsDouble, isEnabled, isEnabled, nextBooleanValue, nextFieldName, nextFieldName, nextIntValue, nextLongValue, nextTextValue, overrideFormatFeatures, readBinaryValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, requiresCustomCodec, setCurrentValue, setRequestPayloadOnError, setRequestPayloadOnError, setRequestPayloadOnError, setSchema
-
-
-
-
Field Detail
-
_icLatin1
protected static final int[] _icLatin1
-
_origBufferLen
protected int _origBufferLen
In addition to current buffer pointer, and end pointer, we will also need to know number of bytes originally contained. This is needed to correctly update location information when the block has been completed.
-
-
Constructor Detail
-
NonBlockingUtf8JsonParserBase
protected NonBlockingUtf8JsonParserBase(IOContext ctxt, int parserFeatures, ByteQuadsCanonicalizer sym)
-
-
Method Detail
-
needMoreInput
public final boolean needMoreInput()
-
endOfInput
public void endOfInput()
-
_decodeEscaped
protected char _decodeEscaped() throws java.io.IOException
Description copied from class:ParserBase
Method that sub-classes must implement to support escaped sequences in base64-encoded sections. Sub-classes that do not need base64 support can leave this as is- Overrides:
_decodeEscaped
in classParserBase
- Returns:
- Character decoded, if any
- Throws:
java.io.IOException
- If escape decoding fails
-
nextToken
public JsonToken nextToken() throws java.io.IOException
Description copied from class:JsonParser
Main iteration method, which will advance stream enough to determine type of the next token, if any. If none remaining (stream has no content other than possible white space before ending), null will be returned.- Specified by:
nextToken
in classParserMinimalBase
- Returns:
- Next token from the stream, if any found, or null to indicate end-of-input
- Throws:
java.io.IOException
- for low-level read issues, orJsonParseException
for decoding problems
-
getNextSignedByteFromBuffer
protected abstract byte getNextSignedByteFromBuffer()
- Returns:
- next signed byte from the buffer
- Since:
- v2.14
-
getNextUnsignedByteFromBuffer
protected abstract int getNextUnsignedByteFromBuffer()
- Returns:
- next unsigned byte from the buffer
- Since:
- v2.14
-
getByteFromBuffer
protected abstract byte getByteFromBuffer(int ptr)
- Parameters:
ptr
- pointer to byte that is required- Returns:
- byte from the buffer at the given pointer
- Since:
- v2.14
-
_finishToken
protected final JsonToken _finishToken() throws java.io.IOException
Method called when decoding of a token has been started, but not yet completed due to missing input; method is to continue decoding due to at least one more byte being made available to decode.- Returns:
- Token decoded, if complete;
JsonToken.NOT_AVAILABLE
if not - Throws:
java.io.IOException
- (generallyJsonParseException
) for decoding problems
-
_finishTokenWithEOF
protected final JsonToken _finishTokenWithEOF() throws java.io.IOException
Method similar to_finishToken()
, but called when no more input is available, and end-of-input has been detected. This is usually problem case, but not always: root-level values may be properly terminated by this, and similarly trailing white-space may have been skipped.- Returns:
- Token decoded, if complete;
JsonToken.NOT_AVAILABLE
if not - Throws:
java.io.IOException
- (generallyJsonParseException
) for decoding problems
-
_startUnexpectedValue
protected JsonToken _startUnexpectedValue(boolean leadingComma, int ch) throws java.io.IOException
- Throws:
java.io.IOException
-
_startFalseToken
protected JsonToken _startFalseToken() throws java.io.IOException
- Throws:
java.io.IOException
-
_startTrueToken
protected JsonToken _startTrueToken() throws java.io.IOException
- Throws:
java.io.IOException
-
_startNullToken
protected JsonToken _startNullToken() throws java.io.IOException
- Throws:
java.io.IOException
-
_finishKeywordToken
protected JsonToken _finishKeywordToken(java.lang.String expToken, int matched, JsonToken result) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishKeywordTokenWithEOF
protected JsonToken _finishKeywordTokenWithEOF(java.lang.String expToken, int matched, JsonToken result) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNonStdToken
protected JsonToken _finishNonStdToken(int type, int matched) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNonStdTokenWithEOF
protected JsonToken _finishNonStdTokenWithEOF(int type, int matched) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishErrorToken
protected JsonToken _finishErrorToken() throws java.io.IOException
- Throws:
java.io.IOException
-
_finishErrorTokenWithEOF
protected JsonToken _finishErrorTokenWithEOF() throws java.io.IOException
- Throws:
java.io.IOException
-
_reportErrorToken
protected JsonToken _reportErrorToken(java.lang.String actualToken) throws java.io.IOException
- Throws:
java.io.IOException
-
_startFloatThatStartsWithPeriod
protected JsonToken _startFloatThatStartsWithPeriod() throws java.io.IOException
- Throws:
java.io.IOException
-
_startPositiveNumber
protected JsonToken _startPositiveNumber(int ch) throws java.io.IOException
- Throws:
java.io.IOException
-
_startNegativeNumber
protected JsonToken _startNegativeNumber() throws java.io.IOException
- Throws:
java.io.IOException
-
_startPositiveNumber
protected JsonToken _startPositiveNumber() throws java.io.IOException
- Throws:
java.io.IOException
-
_startNumberLeadingZero
protected JsonToken _startNumberLeadingZero() throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberMinus
protected JsonToken _finishNumberMinus(int ch) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberPlus
protected JsonToken _finishNumberPlus(int ch) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberPlusMinus
protected JsonToken _finishNumberPlusMinus(int ch, boolean negative) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberLeadingZeroes
protected JsonToken _finishNumberLeadingZeroes() throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberLeadingNegZeroes
protected JsonToken _finishNumberLeadingNegZeroes() throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberLeadingPosZeroes
protected JsonToken _finishNumberLeadingPosZeroes() throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberLeadingPosNegZeroes
protected JsonToken _finishNumberLeadingPosNegZeroes(boolean negative) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishNumberIntegralPart
protected JsonToken _finishNumberIntegralPart(char[] outBuf, int outPtr) throws java.io.IOException
- Throws:
java.io.IOException
-
_startFloat
protected JsonToken _startFloat(char[] outBuf, int outPtr, int ch) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishFloatFraction
protected JsonToken _finishFloatFraction() throws java.io.IOException
- Throws:
java.io.IOException
-
_finishFloatExponent
protected JsonToken _finishFloatExponent(boolean checkSign, int ch) throws java.io.IOException
- Throws:
java.io.IOException
-
_finishFieldWithEscape
protected final JsonToken _finishFieldWithEscape() throws java.io.IOException
- Throws:
java.io.IOException
-
_startString
protected JsonToken _startString() throws java.io.IOException
- Throws:
java.io.IOException
-
_startAposString
protected JsonToken _startAposString() throws java.io.IOException
- Throws:
java.io.IOException
-
-