Class ParserMinimalBase

java.lang.Object
tools.jackson.core.JsonParser
tools.jackson.core.base.ParserMinimalBase
All Implemented Interfaces:
Closeable, AutoCloseable, Versioned
Direct Known Subclasses:
ParserBase

public abstract class ParserMinimalBase extends JsonParser
Intermediate base class used by all Jackson JsonParser implementations, but does not add any additional fields that depend on particular method of obtaining input.

Note that 'minimal' here mostly refers to minimal number of fields (size) and functionality that is specific to certain types of parser implementations; but not necessarily to number of methods.

  • Field Details

    • INT_TAB

      protected static final int INT_TAB
      See Also:
    • INT_LF

      protected static final int INT_LF
      See Also:
    • INT_CR

      protected static final int INT_CR
      See Also:
    • INT_RS

      protected static final int INT_RS
      See Also:
    • INT_SPACE

      protected static final int INT_SPACE
      See Also:
    • INT_LBRACKET

      protected static final int INT_LBRACKET
      See Also:
    • INT_RBRACKET

      protected static final int INT_RBRACKET
      See Also:
    • INT_LCURLY

      protected static final int INT_LCURLY
      See Also:
    • INT_RCURLY

      protected static final int INT_RCURLY
      See Also:
    • INT_QUOTE

      protected static final int INT_QUOTE
      See Also:
    • INT_APOS

      protected static final int INT_APOS
      See Also:
    • INT_BACKSLASH

      protected static final int INT_BACKSLASH
      See Also:
    • INT_SLASH

      protected static final int INT_SLASH
      See Also:
    • INT_ASTERISK

      protected static final int INT_ASTERISK
      See Also:
    • INT_COLON

      protected static final int INT_COLON
      See Also:
    • INT_COMMA

      protected static final int INT_COMMA
      See Also:
    • INT_HASH

      protected static final int INT_HASH
      See Also:
    • INT_0

      protected static final int INT_0
      See Also:
    • INT_9

      protected static final int INT_9
      See Also:
    • INT_MINUS

      protected static final int INT_MINUS
      See Also:
    • INT_PLUS

      protected static final int INT_PLUS
      See Also:
    • INT_PERIOD

      protected static final int INT_PERIOD
      See Also:
    • INT_e

      protected static final int INT_e
      See Also:
    • INT_E

      protected static final int INT_E
      See Also:
    • CHAR_NULL

      protected static final char CHAR_NULL
      See Also:
    • NO_BYTES

      protected static final byte[] NO_BYTES
    • NO_INTS

      protected static final int[] NO_INTS
    • NR_UNKNOWN

      protected static final int NR_UNKNOWN
      See Also:
    • NR_INT

      protected static final int NR_INT
      See Also:
    • NR_LONG

      protected static final int NR_LONG
      See Also:
    • NR_BIGINT

      protected static final int NR_BIGINT
      See Also:
    • NR_DOUBLE

      protected static final int NR_DOUBLE
      See Also:
    • NR_BIGDECIMAL

      protected static final int NR_BIGDECIMAL
      See Also:
    • NR_FLOAT

      protected static final int NR_FLOAT
      NOTE! Not used by JSON implementation but used by many of binary codecs
      See Also:
    • BI_MIN_INT

      protected static final BigInteger BI_MIN_INT
    • BI_MAX_INT

      protected static final BigInteger BI_MAX_INT
    • BI_MIN_LONG

      protected static final BigInteger BI_MIN_LONG
    • BI_MAX_LONG

      protected static final BigInteger BI_MAX_LONG
    • BD_MIN_LONG

      protected static final BigDecimal BD_MIN_LONG
    • BD_MAX_LONG

      protected static final BigDecimal BD_MAX_LONG
    • BD_MIN_INT

      protected static final BigDecimal BD_MIN_INT
    • BD_MAX_INT

      protected static final BigDecimal BD_MAX_INT
    • MIN_BYTE_I

      protected static final int MIN_BYTE_I
      See Also:
    • MAX_BYTE_I

      protected static final int MAX_BYTE_I
      See Also:
    • MIN_SHORT_I

      protected static final int MIN_SHORT_I
      See Also:
    • MAX_SHORT_I

      protected static final int MAX_SHORT_I
      See Also:
    • MIN_INT_L

      protected static final long MIN_INT_L
      See Also:
    • MAX_INT_L

      protected static final long MAX_INT_L
      See Also:
    • MIN_LONG_D

      protected static final double MIN_LONG_D
      See Also:
    • MAX_LONG_D

      protected static final double MAX_LONG_D
      See Also:
    • MIN_INT_D

      protected static final double MIN_INT_D
      See Also:
    • MAX_INT_D

      protected static final double MAX_INT_D
      See Also:
    • STREAM_READ_FEATURE_DEFAULTS

      protected static final int STREAM_READ_FEATURE_DEFAULTS
    • _streamReadFeatures

      protected final int _streamReadFeatures
      Bit flag composed of bits that indicate which StreamReadFeatures are enabled.
    • _streamReadConstraints

      protected final StreamReadConstraints _streamReadConstraints
      Constraints to use for this parser.
    • _objectReadContext

      protected final ObjectReadContext _objectReadContext
      Context object provided by higher level functionality like databinding for two reasons: passing configuration information during construction, and to allow calling of some databind operations via parser instance.
      Since:
      3.0
    • _ioContext

      protected final IOContext _ioContext
      I/O context for this reader. It handles buffer allocation for the reader, including possible reuse/recycling.
      Since:
      3.0 (at this level)
    • _closed

      protected boolean _closed
      Flag that indicates whether parser is closed or not. Gets set when parser is either closed by explicit call (close()) or when end-of-input is reached.
    • _currToken

      protected JsonToken _currToken
      Last token retrieved via JsonParser.nextToken(), if any. Null before the first call to nextToken(), as well as if token has been explicitly cleared
    • _lastClearedToken

      protected JsonToken _lastClearedToken
      Last cleared token, if any: that is, value that was in effect when clearCurrentToken() was called.
    • _tokenCount

      protected long _tokenCount
      Current count of tokens, if tracked (see _trackMaxTokenCount)
    • _trackMaxTokenCount

      protected final boolean _trackMaxTokenCount
      Whether or not to track the token count due a StreamReadConstraints maxTokenCount > 0.
  • Constructor Details

    • ParserMinimalBase

      protected ParserMinimalBase(ObjectReadContext readCtxt, IOContext ioCtxt, int streamReadFeatures)
      Main constructor for sub-classes to use
      Parameters:
      readCtxt - Context for databinding
      ioCtxt - Context for I/O handling, buffering
      streamReadFeatures - Bit set of StreamReadFeatures.
    • ParserMinimalBase

      protected ParserMinimalBase(ObjectReadContext readCtxt)
      Alternate constructors for cases where there is no real IOContext in use; typically for abstractions that operate over non-streaming/incremental sources (such as jackson-databind TokenBuffer).
      Parameters:
      readCtxt - Context for databinding
  • Method Details

    • isEnabled

      public boolean isEnabled(StreamReadFeature f)
      Description copied from class: JsonParser
      Method for checking whether specified StreamReadFeature is enabled.
      Specified by:
      isEnabled in class JsonParser
      Parameters:
      f - Feature to check
      Returns:
      True if feature is enabled; false otherwise
    • streamReadCapabilities

      public JacksonFeatureSet<StreamReadCapability> streamReadCapabilities()
      Description copied from class: JsonParser
      Accessor for getting metadata on capabilities of this parser, based on underlying data format being read (directly or indirectly).
      Specified by:
      streamReadCapabilities in class JsonParser
      Returns:
      Set of read capabilities for content to read via this parser
    • streamReadFeatures

      public int streamReadFeatures()
      Description copied from class: JsonParser
      Bulk access method for getting state of all standard StreamReadFeatures.
      Specified by:
      streamReadFeatures in class JsonParser
      Returns:
      Bit mask that defines current states of all standard StreamReadFeatures.
    • streamReadConstraints

      public StreamReadConstraints streamReadConstraints()
      Description copied from class: JsonParser
      Get the constraints to apply when performing streaming reads.
      Specified by:
      streamReadConstraints in class JsonParser
      Returns:
      Constraints applied to this parser
    • isClosed

      public boolean isClosed()
      Description copied from class: JsonParser
      Method that can be called to determine whether this parser is closed or not. If it is closed, no new tokens can be retrieved by calling JsonParser.nextToken() (and the underlying stream may be closed). Closing may be due to an explicit call to JsonParser.close() or because parser has encountered end of input.
      Specified by:
      isClosed in class JsonParser
      Returns:
      True if this parser instance has been closed
    • close

      public void close() throws JacksonException
      Description copied from class: JsonParser
      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 StreamReadFeature.AUTO_CLOSE_SOURCE is enabled. Whether parser owns the input source depends on factory method that was used to construct instance (so check JsonFactory for details, but the general idea is that if caller passes in closable resource (such as InputStream or Reader) parser does NOT own the source; but if it passes a reference (such as File or URL and creates stream or reader it does own them.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in class JsonParser
      Throws:
      JacksonException
    • _closeInput

      protected abstract void _closeInput() throws IOException
      Abstract method for sub-classes to implement; to be called by close() implementation here.
      Throws:
      IOException - from underlying input source if thrown
    • _releaseBuffers

      protected abstract void _releaseBuffers()
      Method called to release internal buffers owned by the base reader. This is expected to be called after _closeInput() since the buffers are expected not to be needed any longer.
    • objectReadContext

      public ObjectReadContext objectReadContext()
      Description copied from class: JsonParser
      Accessor for context object provided by higher level data-binding functionality (or, in some cases, simple placeholder of the same) that allows some level of interaction including ability to trigger deserialization of Object values through generator instance.

      Context object is used by parser to implement some methods, like readValueAs(...)

      Specified by:
      objectReadContext in class JsonParser
      Returns:
      Object write context (ObjectReadContext) associated with this parser
    • _handleEOF

      protected abstract void _handleEOF() throws JacksonException
      Method sub-classes need to implement to check whether end-of-content is allowed at the current decoding position: formats often want to verify the all start/end token pairs match, for example.
      Throws:
      JacksonException - if end-of-content not allowed at current position.
    • finishToken

      public void finishToken() throws JacksonException
      Description copied from class: JsonParser
      Method that may be used to force full handling of the current token so that even if lazy processing is enabled, the whole contents are read for possible retrieval. This is usually used to ensure that the token end location is available, as well as token contents (similar to what calling, say JsonParser.getStringCharacters(), would achieve).

      Note that for many dataformat implementations this method will not do anything; this is the default implementation unless overridden by sub-classes.

      Specified by:
      finishToken in class JsonParser
      Throws:
      JacksonException - for low-level read issues
      StreamReadException - for decoding problems
    • currentToken

      public JsonToken currentToken()
      Description copied from class: JsonParser
      Accessor to find which token parser currently points to, if any; null will be returned if none. If return value is non-null, data associated with the token is available via other accessor methods.
      Specified by:
      currentToken in class JsonParser
      Returns:
      Type of the token this parser currently points to, if any: null before any tokens have been read, and after end-of-input has been encountered, as well as if the current token has been explicitly cleared.
    • currentTokenId

      public int currentTokenId()
      Description copied from class: JsonParser
      Method similar to JsonParser.currentToken() but that returns an int instead of JsonToken (enum value).

      Use of int directly is typically more efficient on switch statements, so this method may be useful when building low-overhead codecs. Note, however, that effect may not be big enough to matter: make sure to profile performance before deciding to use this method.

      Specified by:
      currentTokenId in class JsonParser
      Returns:
      int matching one of constants from JsonTokenId.
    • hasCurrentToken

      public boolean hasCurrentToken()
      Description copied from class: JsonParser
      Method for checking whether parser currently points to a token (and data for that token is available). Equivalent to check for parser.getCurrentToken() != null.
      Specified by:
      hasCurrentToken in class JsonParser
      Returns:
      True if the parser just returned a valid token via JsonParser.nextToken(); false otherwise (parser was just constructed, encountered end-of-input and returned null from JsonParser.nextToken(), or the token has been consumed)
    • hasTokenId

      public boolean hasTokenId(int id)
      Description copied from class: JsonParser
      Method that is functionally equivalent to: return currentTokenId() == id but may be more efficiently implemented.

      Note that no traversal or conversion is performed; so in some cases calling method like JsonParser.isExpectedStartArrayToken() is necessary instead.

      Specified by:
      hasTokenId in class JsonParser
      Parameters:
      id - Token id to match (from (@link JsonTokenId})
      Returns:
      True if the parser current points to specified token
    • hasToken

      public boolean hasToken(JsonToken t)
      Description copied from class: JsonParser
      Method that is functionally equivalent to: return currentToken() == t but may be more efficiently implemented.

      Note that no traversal or conversion is performed; so in some cases calling method like JsonParser.isExpectedStartArrayToken() is necessary instead.

      Specified by:
      hasToken in class JsonParser
      Parameters:
      t - Token to match
      Returns:
      True if the parser current points to specified token
    • currentTokenCount

      public long currentTokenCount()
      Description copied from class: JsonParser
      Get an approximate count of the number of tokens that have been read. This count is likely to be only updated if StreamReadConstraints.Builder.maxTokenCount(long) has been used to set a limit on the number of tokens that can be read.
      Specified by:
      currentTokenCount in class JsonParser
      Returns:
      the number of tokens that have been read (-1 if the count is not available)
    • isExpectedStartArrayToken

      public boolean isExpectedStartArrayToken()
      Description copied from class: JsonParser
      Specialized accessor that can be used to verify that the current token indicates start array (usually meaning that current token is JsonToken.START_ARRAY) when start array is expected. For some specialized parsers this can return true for other cases as well; this is usually done to emulate arrays in cases underlying format is ambiguous (XML, for example, has no format-level difference between Objects and Arrays; it just has elements).

      Default implementation is equivalent to:

         currentToken() == JsonToken.START_ARRAY
      
      but may be overridden by custom parser implementations.
      Specified by:
      isExpectedStartArrayToken in class JsonParser
      Returns:
      True if the current token can be considered as a start-array marker (such JsonToken.START_ARRAY); false if not
    • isExpectedStartObjectToken

      public boolean isExpectedStartObjectToken()
      Description copied from class: JsonParser
      Similar to JsonParser.isExpectedStartArrayToken(), but checks whether stream currently points to JsonToken.START_OBJECT.
      Specified by:
      isExpectedStartObjectToken in class JsonParser
      Returns:
      True if the current token can be considered as a start-array marker (such JsonToken.START_OBJECT); false if not
    • isExpectedNumberIntToken

      public boolean isExpectedNumberIntToken()
      Description copied from class: JsonParser
      Similar to JsonParser.isExpectedStartArrayToken(), but checks whether stream currently points to JsonToken.VALUE_NUMBER_INT.

      The initial use case is for XML backend to efficiently (attempt to) coerce textual content into numbers.

      Specified by:
      isExpectedNumberIntToken in class JsonParser
      Returns:
      True if the current token can be considered as a start-array marker (such JsonToken.VALUE_NUMBER_INT); false if not
    • nextValue

      public JsonToken nextValue() throws JacksonException
      Description copied from class: JsonParser
      Iteration method that will advance stream enough to determine type of the next token that is a value type (including JSON Array and Object start/end markers). Or put another way, nextToken() will be called once, and if JsonToken.PROPERTY_NAME is returned, another time to get the value of the property. Method is most useful for iterating over value entries of JSON objects; Object property name will still be available by calling JsonParser.currentName() when parser points to the value.
      Specified by:
      nextValue in class JsonParser
      Returns:
      Next non-field-name token from the stream, if any found, or null to indicate end-of-input (or, for non-blocking parsers, JsonToken.NOT_AVAILABLE if no tokens were available yet)
      Throws:
      JacksonException - for low-level read issues
      StreamReadException - for decoding problems
    • skipChildren

      public JsonParser skipChildren() throws JacksonException
      Description copied from class: JsonParser
      Method that will skip all child tokens of an array or object token that the parser currently points to, iff stream points to JsonToken.START_OBJECT or JsonToken.START_ARRAY. If not, it will do nothing. After skipping, stream will point to matching JsonToken.END_OBJECT or JsonToken.END_ARRAY (possibly skipping nested pairs of START/END OBJECT/ARRAY tokens as well as value tokens). The idea is that after calling this method, application will call JsonParser.nextToken() to point to the next available token, if any.
      Specified by:
      skipChildren in class JsonParser
      Returns:
      This parser, to allow call chaining
      Throws:
      JacksonException - for low-level read issues
      StreamReadException - for decoding problems
    • nextName

      public String nextName() throws JacksonException
      Description copied from class: JsonParser
      Method that fetches next token (as if calling JsonParser.nextToken()) and verifies whether it is JsonToken.PROPERTY_NAME; if it is, returns same as JsonParser.currentName(), otherwise null.

      NOTE: in Jackson 2.x method was called nextFieldName()

      Specified by:
      nextName in class JsonParser
      Returns:
      Name of the the JsonToken.PROPERTY_NAME parser advanced to, if any; null if next token is of some other type
      Throws:
      JacksonException - for low-level read issues
      StreamReadException - for decoding problems
    • nextName

      public boolean nextName(SerializableString str) throws JacksonException
      Description copied from class: JsonParser
      Method that fetches next token (as if calling JsonParser.nextToken()) and verifies whether it is JsonToken.PROPERTY_NAME with specified name and returns result of that comparison. It is functionally equivalent to:
        return (nextToken() == JsonToken.PROPERTY_NAME) && str.getValue().equals(currentName());
      
      but may be faster for parser to verify, and can therefore be used if caller expects to get such a property name from input next.

      NOTE: in Jackson 2.x method was called nextFieldName()

      Specified by:
      nextName in class JsonParser
      Parameters:
      str - Property name to compare next token to (if next token is JsonToken.PROPERTY_NAME)
      Returns:
      True if parser advanced to JsonToken.PROPERTY_NAME with specified name; false otherwise (different token or non-matching name)
      Throws:
      JacksonException - for low-level read issues
      StreamReadException - for decoding problems
    • nextNameMatch

      public int nextNameMatch(PropertyNameMatcher matcher) throws JacksonException
      Description copied from class: JsonParser
      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. If match succeeds, property index (non-negative `int`) is returned; otherwise one of marker constants from PropertyNameMatcher.
      Specified by:
      nextNameMatch in class JsonParser
      Parameters:
      matcher - Matcher that will handle actual matching
      Returns:
      Index of the matched property name, if non-negative, or a negative error code otherwise (see PropertyNameMatcher for details)
      Throws:
      JacksonIOException - for low-level read issues
      StreamReadException - for decoding problems
      JacksonException
    • currentNameMatch

      public int currentNameMatch(PropertyNameMatcher matcher)
      Description copied from class: JsonParser
      Method that verifies that the current token (see JsonParser.currentToken()) is JsonToken.PROPERTY_NAME and if so, further match that associated name (see JsonParser.currentName()) to one of pre-specified (property) names. If there is a match succeeds, the property index (non-negative int) is returned; otherwise one of marker constants from PropertyNameMatcher is returned.
      Specified by:
      currentNameMatch in class JsonParser
      Parameters:
      matcher - Matcher that will handle actual matching
      Returns:
      Index of the matched property name, if non-negative, or a negative error code otherwise (see PropertyNameMatcher for details)
    • clearCurrentToken

      public void clearCurrentToken()
      Description copied from class: JsonParser
      Method called to "consume" the current token by effectively removing it so that JsonParser.hasCurrentToken() returns false, and JsonParser.currentToken() null). Cleared token value can still be accessed by calling JsonParser.getLastClearedToken() (if absolutely needed), but usually isn't.

      Method was added to be used by the optional data binder, since it has to be able to consume last token used for binding (so that it will not be used again).

      Specified by:
      clearCurrentToken in class JsonParser
    • getLastClearedToken

      public JsonToken getLastClearedToken()
      Description copied from class: JsonParser
      Method that can be called to get the last token that was cleared using JsonParser.clearCurrentToken(). This is not necessarily the latest token read. Will return null if no tokens have been cleared, or if parser has been closed.
      Specified by:
      getLastClearedToken in class JsonParser
      Returns:
      Last cleared token, if any; null otherwise
    • getString

      public int getString(Writer writer) throws JacksonException
      Description copied from class: JsonParser
      Method to read the textual representation of the current token in chunks and pass it to the given Writer. Functionally same as calling:
        writer.write(parser.getString());
      
      but should typically be more efficient as longer content does need to be combined into a single String to return, and write can occur directly from intermediate buffers Jackson uses.

      NOTE: String value will still be buffered (usually using TextBuffer) and will be accessible with other getString() calls (that is, it will not be consumed). So this accessor only avoids construction of String compared to plain JsonParser.getString() method.

      NOTE: In Jackson 2.x this method was called getString(Writer).

      Specified by:
      getString in class JsonParser
      Parameters:
      writer - Writer to write String value to
      Returns:
      The number of characters written to the Writer
      Throws:
      JacksonIOException - for low-level read issues, or failed write using Writer
      StreamReadException - for decoding problems
      JacksonException
    • getNumberTypeFP

      public JsonParser.NumberTypeFP getNumberTypeFP()
      Description copied from class: JsonParser
      If current token is of type JsonToken.VALUE_NUMBER_FLOAT, returns one of JsonParser.NumberTypeFP constants; otherwise returns JsonParser.NumberTypeFP.UNKNOWN.
      Specified by:
      getNumberTypeFP in class JsonParser
      Returns:
      Type of current number, if parser points to numeric token; null otherwise
    • getNumberValueExact

      public Number getNumberValueExact() throws InputCoercionException
      Description copied from class: JsonParser
      Method similar to JsonParser.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 Double is potentially lossy operation.

      Default implementation simply returns JsonParser.getNumberValue()

      Specified by:
      getNumberValueExact in class JsonParser
      Returns:
      Numeric value of the current token using most accurate representation
      Throws:
      InputCoercionException - If the current token is not of numeric type
    • getNumberValueDeferred

      public Object getNumberValueDeferred() throws InputCoercionException
      Description copied from class: JsonParser
      Method similar to JsonParser.getNumberValue() but that returns either same Number value as JsonParser.getNumberValue() (if already decoded), or String representation of as-of-yet undecoded number. Typically textual formats allow deferred decoding from String, whereas binary formats either decode numbers eagerly or have binary representation from which to decode value to return.

      Same constraints apply to calling this method as to JsonParser.getNumberValue(): current token must be either JsonToken.VALUE_NUMBER_INT or JsonToken.VALUE_NUMBER_FLOAT; otherwise an exception is thrown

      Default implementation simply returns JsonParser.getNumberValue()

      Specified by:
      getNumberValueDeferred in class JsonParser
      Returns:
      Either Number (for already decoded numbers) or String (for deferred decoding).
      Throws:
      InputCoercionException - If the current token is not of numeric type
    • getByteValue

      public byte getByteValue() throws InputCoercionException
      Description copied from class: JsonParser
      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 byte primitive type. Note that in addition to "natural" input range of [-128, 127], this also allows "unsigned 8-bit byte" values [128, 255]: but for this range value will be translated by truncation, leading to sign change.

      It can also be called for JsonToken.VALUE_NUMBER_FLOAT; if so, it is equivalent to calling JsonParser.getDoubleValue() and then casting; except for possible overflow/underflow exception.

      Note: if the resulting integer value falls outside range of [-128, 255], a InputCoercionException will be thrown to indicate numeric overflow/underflow.

      Specified by:
      getByteValue in class JsonParser
      Returns:
      Current number value as byte (if numeric token within range of [-128, 255]); otherwise exception thrown
      Throws:
      InputCoercionException - If either token type is not a number OR numeric value exceeds allowed range
    • getShortValue

      public short getShortValue() throws InputCoercionException
      Description copied from class: JsonParser
      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 short primitive type. It can also be called for JsonToken.VALUE_NUMBER_FLOAT; if so, it is equivalent to calling JsonParser.getDoubleValue() and then casting; except for possible overflow/underflow exception.

      Note: if the resulting integer value falls outside range of Java short, a InputCoercionException will be thrown to indicate numeric overflow/underflow.

      Specified by:
      getShortValue in class JsonParser
      Returns:
      Current number value as short (if numeric token within Java 16-bit signed short range); otherwise exception thrown
      Throws:
      InputCoercionException - If either token type is not a number OR numeric value exceeds allowed range
    • getBooleanValue

      public boolean getBooleanValue() throws InputCoercionException
      Description copied from class: JsonParser
      Convenience accessor that can be called when the current token is JsonToken.VALUE_TRUE or JsonToken.VALUE_FALSE, to return matching boolean value. If the current token is of some other type, InputCoercionException will be thrown
      Specified by:
      getBooleanValue in class JsonParser
      Returns:
      True if current token is JsonToken.VALUE_TRUE, false if current token is JsonToken.VALUE_FALSE; otherwise throws InputCoercionException
      Throws:
      InputCoercionException - if the current token is not of boolean type
    • getEmbeddedObject

      public Object getEmbeddedObject()
      Description copied from class: JsonParser
      Accessor that can be called if (and only if) the current token is JsonToken.VALUE_EMBEDDED_OBJECT. For other token types, null is returned.

      Note: only some specialized parser implementations support embedding of objects (usually ones that are facades on top of non-streaming sources, such as object trees). One exception is access to binary content (whether via base64 encoding or not) which typically is accessible using this method, as well as JsonParser.getBinaryValue().

      Specified by:
      getEmbeddedObject in class JsonParser
      Returns:
      Embedded value (usually of "native" type supported by format) for the current token, if any; null otherwise
    • getValueAsBoolean

      public boolean getValueAsBoolean(boolean defaultValue)
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a boolean. JSON booleans map naturally; integer numbers other than 0 map to true, and 0 maps to false and Strings 'true' and 'false' map to corresponding values.

      If representation cannot be converted to a boolean value (including structured types like Objects and Arrays), specified def will be returned; no exceptions are thrown.

      Specified by:
      getValueAsBoolean in class JsonParser
      Parameters:
      defaultValue - Default value to return if conversion to boolean is not possible
      Returns:
      boolean value current token is converted to, if possible; def otherwise
    • getValueAsInt

      public int getValueAsInt()
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a Java int value. Numbers are coerced using default Java rules; booleans convert to 0 (false) and 1 (true), and Strings are parsed using default Java language integer parsing rules.

      If representation cannot be converted to an int (including structured type markers like start/end Object/Array) default value of 0 will be returned; no exceptions are thrown.

      Overrides:
      getValueAsInt in class JsonParser
      Returns:
      int value current token is converted to, if possible; default value otherwise otherwise
    • getValueAsInt

      public int getValueAsInt(int defaultValue)
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a int. Numbers are coerced using default Java rules; booleans convert to 0 (false) and 1 (true), and Strings are parsed using default Java language integer parsing rules.

      If representation cannot be converted to an int (including structured type markers like start/end Object/Array) specified def will be returned; no exceptions are thrown.

      Overrides:
      getValueAsInt in class JsonParser
      Parameters:
      defaultValue - Default value to return if conversion to int is not possible
      Returns:
      int value current token is converted to, if possible; def otherwise
    • getValueAsLong

      public long getValueAsLong()
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a long. Numbers are coerced using default Java rules; booleans convert to 0 (false) and 1 (true), and Strings are parsed using default Java language integer parsing rules.

      If representation cannot be converted to a long (including structured type markers like start/end Object/Array) default value of 0L will be returned; no exceptions are thrown.

      Overrides:
      getValueAsLong in class JsonParser
      Returns:
      long value current token is converted to, if possible; default value otherwise
    • getValueAsLong

      public long getValueAsLong(long defaultValue)
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a long. Numbers are coerced using default Java rules; booleans convert to 0 (false) and 1 (true), and Strings are parsed using default Java language integer parsing rules.

      If representation cannot be converted to a long (including structured type markers like start/end Object/Array) specified def will be returned; no exceptions are thrown.

      Overrides:
      getValueAsLong in class JsonParser
      Parameters:
      defaultValue - Default value to return if conversion to long is not possible
      Returns:
      long value current token is converted to, if possible; def otherwise
    • getValueAsDouble

      public double getValueAsDouble(double defaultValue)
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a Java double. Numbers are coerced using default Java rules; booleans convert to 0.0 (false) and 1.0 (true), and Strings are parsed using default Java language floating point parsing rules.

      If representation cannot be converted to a double (including structured types like Objects and Arrays), specified def will be returned; no exceptions are thrown.

      Overrides:
      getValueAsDouble in class JsonParser
      Parameters:
      defaultValue - Default value to return if conversion to double is not possible
      Returns:
      double value current token is converted to, if possible; def otherwise
    • getValueAsString

      public String getValueAsString()
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a String. JSON Strings map naturally; scalar values get converted to their textual representation. If representation cannot be converted to a String value (including structured types like Objects and Arrays and null token), default value of null will be returned; no exceptions are thrown.
      Overrides:
      getValueAsString in class JsonParser
      Returns:
      String value current token is converted to, if possible; null otherwise
    • getValueAsString

      public String getValueAsString(String defaultValue)
      Description copied from class: JsonParser
      Method that will try to convert value of current token to a String. JSON Strings map naturally; scalar values get converted to their textual representation. If representation cannot be converted to a String value (including structured types like Objects and Arrays and null token), specified default value will be returned; no exceptions are thrown.
      Specified by:
      getValueAsString in class JsonParser
      Parameters:
      defaultValue - Default value to return if conversion to String is not possible
      Returns:
      String value current token is converted to, if possible; def otherwise
    • readValueAs

      public <T> T readValueAs(Class<T> valueType) throws JacksonException
      Description copied from class: JsonParser
      Method to deserialize stream content into a non-container type (it can be an array type, however): typically a bean, array or a wrapper type (like Boolean).
      Note: method can only be called if the parser has been constructed with a linkage to ObjectReadContext; this is true if constructed by databinding layer above, or by factory method that takes in context object.

      This method may advance the event stream, for structured values the current token will be the closing end marker (END_ARRAY, END_OBJECT) of the bound structure. For non-structured values (and for JsonToken.VALUE_EMBEDDED_OBJECT) stream is not advanced.

      Note: this method should NOT be used if the result type is a container (Collection or Map. The reason is that due to type erasure, key and value types cannot be introspected when using this method.

      Specified by:
      readValueAs in class JsonParser
      Type Parameters:
      T - Nominal type parameter to specify expected node type to reduce need to cast result value
      Parameters:
      valueType - Type to bind content to
      Returns:
      Java value read from content
      Throws:
      JacksonException - if there is either an underlying I/O problem or decoding issue at format layer
    • readValueAs

      public <T> T readValueAs(TypeReference<T> valueTypeRef) throws JacksonException
      Description copied from class: JsonParser
      Method to deserialize stream content into a Java type, reference to which is passed as argument. Type is passed using so-called "super type token" and specifically needs to be used if the root type is a parameterized (generic) container type.
      Note: method can only be called if the parser has been constructed with a linkage to ObjectReadContext; this is true if constructed by databinding layer above, or by factory method that takes in context object.

      This method may advance the event stream, for structured types the current token will be the closing end marker (END_ARRAY, END_OBJECT) of the bound structure. For non-structured types (and for JsonToken.VALUE_EMBEDDED_OBJECT) stream is not advanced.

      Specified by:
      readValueAs in class JsonParser
      Type Parameters:
      T - Nominal type parameter to specify expected node type to reduce need to cast result value
      Parameters:
      valueTypeRef - Type to bind content to
      Returns:
      Java value read from content
      Throws:
      JacksonException - if there is either an underlying I/O problem or decoding issue at format layer
    • readValueAs

      public <T> T readValueAs(ResolvedType type) throws JacksonException
      Specified by:
      readValueAs in class JsonParser
      Throws:
      JacksonException
    • readValueAsTree

      public <T extends TreeNode> T readValueAsTree() throws JacksonException
      Description copied from class: JsonParser
      Method to deserialize stream content into equivalent "tree model", represented by root TreeNode of resulting model. For Array values it will an array node (with child nodes), for Object values object node (with child nodes), and for other types matching leaf node type. Empty or whitespace documents are null.
      Note: method can only be called if the parser has been constructed with a linkage to ObjectReadContext; this is true if constructed by databinding layer above, or by factory method that takes in context object.
      Specified by:
      readValueAsTree in class JsonParser
      Type Parameters:
      T - Nominal type parameter for result node type (to reduce need for casting)
      Returns:
      root of the document, or null if empty or whitespace.
      Throws:
      JacksonException - if there is either an underlying I/O problem or decoding issue at format layer
    • _decodeBase64

      protected void _decodeBase64(String str, ByteArrayBuilder builder, Base64Variant b64variant) throws JacksonException
      Helper method that can be used for base64 decoding in cases where encoded content has already been read as a String.
      Parameters:
      str - String to decode
      builder - Builder used to buffer binary content decoded
      b64variant - Base64 variant expected in content
      Throws:
      JacksonIOException - for low-level read issues
      StreamReadException - for decoding problems
      JacksonException
    • _hasTextualNull

      protected boolean _hasTextualNull(String value)
      Helper method used to determine whether we are currently pointing to a String value of "null" (NOT a null token); and, if so, that parser is to recognize and return it similar to if it was real null token.

      Default implementation accepts exact string "null" and nothing else

      Parameters:
      value - String value to check
      Returns:
      True if given value contains "null equivalent" String value (for content this parser handles).
    • _reportInvalidNumber

      protected <T> T _reportInvalidNumber(String msg) throws StreamReadException
      Method called to throw an exception for input token that looks like a number based on first character(s), but is not valid according to rules of format. In case of JSON this also includes invalid forms like positive sign and leading zeroes.
      Type Parameters:
      T - Nominal type parameter for bogus return value
      Parameters:
      msg - Base exception message to use
      Returns:
      Nothing: never returns; declared so caller can use fake return to keep compiler happy
      Throws:
      StreamReadException - Exception that describes problem with number validity
    • _reportOverflowByte

      protected void _reportOverflowByte(String numDesc, JsonToken inputType) throws InputCoercionException
      Throws:
      InputCoercionException
    • _reportOverflowShort

      protected void _reportOverflowShort(String numDesc, JsonToken inputType) throws InputCoercionException
      Throws:
      InputCoercionException
    • _reportOverflowInt

      protected void _reportOverflowInt() throws InputCoercionException
      Method called to throw an exception for integral (not floating point) input token with value outside of Java signed 32-bit range when requested as int. Result will be InputCoercionException being thrown.
      Throws:
      InputCoercionException - Exception that describes problem with number range validity
    • _reportOverflowInt

      protected void _reportOverflowInt(String numDesc) throws InputCoercionException
      Throws:
      InputCoercionException
    • _reportOverflowInt

      protected void _reportOverflowInt(String numDesc, JsonToken inputType) throws InputCoercionException
      Throws:
      InputCoercionException
    • _reportOverflowLong

      protected void _reportOverflowLong() throws InputCoercionException
      Method called to throw an exception for integral (not floating point) input token with value outside of Java signed 64-bit range when requested as long. Result will be InputCoercionException being thrown.
      Throws:
      InputCoercionException - Exception that describes problem with number range validity
    • _reportOverflowLong

      protected void _reportOverflowLong(String numDesc) throws InputCoercionException
      Throws:
      InputCoercionException
    • _reportOverflowLong

      protected void _reportOverflowLong(String numDesc, JsonToken inputType) throws InputCoercionException
      Throws:
      InputCoercionException
    • _longIntegerDesc

      protected String _longIntegerDesc(String rawNum)
    • _longNumberDesc

      protected String _longNumberDesc(String rawNum)
    • _reportBadInputStream

      protected <T> T _reportBadInputStream(int readLen) throws StreamReadException
      Throws:
      StreamReadException
    • _reportBadReader

      protected <T> T _reportBadReader(int readLen) throws StreamReadException
      Throws:
      StreamReadException
    • _reportInvalidEOF

      protected <T> T _reportInvalidEOF() throws StreamReadException
      Throws:
      StreamReadException
    • _reportInvalidEOFInValue

      protected <T> T _reportInvalidEOFInValue(JsonToken type) throws StreamReadException
      Throws:
      StreamReadException
    • _reportInvalidEOF

      protected <T> T _reportInvalidEOF(String msg, JsonToken currToken) throws StreamReadException
      Throws:
      StreamReadException
    • _reportInvalidSpace

      protected <T> T _reportInvalidSpace(int i) throws StreamReadException
      Throws:
      StreamReadException
    • _reportMissingRootWS

      protected <T> T _reportMissingRootWS(int ch) throws StreamReadException
      Throws:
      StreamReadException
    • _reportUnexpectedChar

      protected <T> T _reportUnexpectedChar(int ch, String comment) throws StreamReadException
      Throws:
      StreamReadException
    • _reportUnexpectedNumberChar

      protected <T> T _reportUnexpectedNumberChar(int ch, String comment) throws StreamReadException
      Throws:
      StreamReadException
    • _currentLocationMinusOne

      protected TokenStreamLocation _currentLocationMinusOne()
      Factory method used to provide location for cases where we must read and consume a single "wrong" character (to possibly allow error recovery), but need to report accurate location for that character: if so, the current location is past location we want, and location we want will be "one location earlier".

      Default implementation simply returns JsonParser.currentLocation()

      Returns:
      Same as JsonParser.currentLocation() except offset by -1
      Since:
      2.17
    • _getCharDesc

      protected static final String _getCharDesc(int ch)
    • _constructNotNumericType

      protected InputCoercionException _constructNotNumericType(JsonToken actualToken, int expNumericType)
    • _constructInputCoercion

      protected InputCoercionException _constructInputCoercion(String msg, JsonToken inputType, Class<?> targetType)
    • _reportError

      protected <T> T _reportError(String msg) throws StreamReadException
      Throws:
      StreamReadException
    • _reportError

      protected <T> T _reportError(String msg, Object arg) throws StreamReadException
      Throws:
      StreamReadException
    • _reportError

      protected <T> T _reportError(String msg, Object arg1, Object arg2) throws StreamReadException
      Throws:
      StreamReadException
    • _reportError

      protected <T> T _reportError(String msg, Object arg1, Object arg2, Object arg3) throws StreamReadException
      Throws:
      StreamReadException
    • _wrapIOFailure

      protected JacksonException _wrapIOFailure(IOException e)
    • _throwInternal

      protected <T> T _throwInternal()
    • _updateToken

      protected final JsonToken _updateToken(JsonToken token) throws StreamConstraintsException
      Throws:
      StreamConstraintsException
    • _nullSafeUpdateToken

      protected final JsonToken _nullSafeUpdateToken(JsonToken token) throws StreamConstraintsException
      Throws:
      StreamConstraintsException
    • _updateTokenToNull

      protected final JsonToken _updateTokenToNull()
    • _updateTokenToNA

      protected final JsonToken _updateTokenToNA()