TokenBuffer.Parser (Jackson JSON Processor)
Date: 2013-07-14

org.codehaus.jackson.util

## Class TokenBuffer.Parser

- java.lang.Object
- - org.codehaus.jackson.JsonParser
  - - org.codehaus.jackson.impl.JsonParserMinimalBase
    - - org.codehaus.jackson.util.TokenBuffer.Parser

- All Implemented Interfaces:
    Closeable, AutoCloseable, Versioned
  Enclosing class:
    TokenBuffer

      protected static final class TokenBuffer.Parser
      extends JsonParserMinimalBase

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.codehaus.jackson.JsonParser

      `JsonParser.Feature, JsonParser.NumberType`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected ByteArrayBuilder` | `_byteBuilder`
    `protected boolean` | `_closed`
    `protected ObjectCodec` | `_codec`
    `protected JsonLocation` | `_location`
    `protected JsonReadContext` | `_parsingContext` Information about parser context, context in which the next token is to be parsed (root, array, object).
    `protected TokenBuffer.Segment` | `_segment` Currently active segment
    `protected int` | `_segmentPtr` Pointer to current token within current segment

    - ### Fields inherited from class org.codehaus.jackson.impl.JsonParserMinimalBase

      `INT_APOSTROPHE, INT_ASTERISK, INT_b, INT_BACKSLASH, INT_COLON, INT_COMMA, INT_CR, INT_f, INT_LBRACKET, INT_LCURLY, INT_LF, INT_n, INT_QUOTE, INT_r, INT_RBRACKET, INT_RCURLY, INT_SLASH, INT_SPACE, INT_t, INT_TAB, INT_u`

    - ### Fields inherited from class org.codehaus.jackson.JsonParser

      `_currToken, _features, _lastClearedToken`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TokenBuffer.Parser(TokenBuffer.Segment firstSeg, ObjectCodec codec)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_checkIsNumber()`
    `protected Object` | `_currentObject()`
    `protected void` | `_handleEOF()` Method sub-classes need to implement
    `void` | `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 `JsonParser.Feature.AUTO_CLOSE_SOURCE` is enabled.
    `BigInteger` | `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.
    `byte[]` | `getBinaryValue(Base64Variant b64variant)` 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.
    `ObjectCodec` | `getCodec()` Accessor for `ObjectCodec` associated with this parser, if any.
    `JsonLocation` | `getCurrentLocation()` Method that returns location of the last processed character; usually for error reporting purposes.
    `String` | `getCurrentName()` Method that can be called to get the name associated with the current token: for `JsonToken.FIELD_NAME`s it will be the same as what `JsonParser.getText()` returns; for field values it will be preceding field name; and for others (array values, root-level values) null.
    `BigDecimal` | `getDecimalValue()` Numeric accessor that can be called when the current token is of type `JsonToken.VALUE_NUMBER_FLOAT` or `JsonToken.VALUE_NUMBER_INT`.
    `double` | `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.
    `Object` | `getEmbeddedObject()` Accessor that can be called if (and only if) the current token is `JsonToken.VALUE_EMBEDDED_OBJECT`.
    `float` | `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.
    `int` | `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.
    `long` | `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.
    `JsonParser.NumberType` | `getNumberType()` If current token is of type `JsonToken.VALUE_NUMBER_INT` or `JsonToken.VALUE_NUMBER_FLOAT`, returns one of `JsonParser.NumberType` constants; otherwise returns null.
    `Number` | `getNumberValue()` Generic number value accessor method that will work for all kinds of numeric values.
    `JsonStreamContext` | `getParsingContext()` Method that can be used to access current parsing context reader is in.
    `String` | `getText()` Method for accessing textual representation of the current token; if no current token (before first call to `JsonParser.nextToken()`, or after encountering end-of-input), returns null.
    `char[]` | `getTextCharacters()` Method similar to `JsonParser.getText()`, but that will return underlying (unmodifiable) character array that contains textual value, instead of constructing a String object to contain this information.
    `int` | `getTextLength()` Accessor used with `JsonParser.getTextCharacters()`, to know length of String stored in returned buffer.
    `int` | `getTextOffset()` Accessor used with `JsonParser.getTextCharacters()`, to know offset of the first text content character within buffer.
    `JsonLocation` | `getTokenLocation()` Method that return the starting location of the current token; that is, position of the first character from input that starts the current token.
    `boolean` | `hasTextCharacters()` Method that can be used to determine whether calling of `JsonParser.getTextCharacters()` would be the most efficient way to access textual content for the event parser currently points to.
    `boolean` | `isClosed()` Method that can be called to determine whether this parser is closed or not.
    `JsonToken` | `nextToken()` Main iteration method, which will advance stream enough to determine type of the next token, if any.
    `JsonToken` | `peekNextToken()`
    `void` | `setCodec(ObjectCodec c)` Setter that allows defining `ObjectCodec` associated with this parser, if any.
    `void` | `setLocation(JsonLocation l)`

    - ### Methods inherited from class org.codehaus.jackson.impl.JsonParserMinimalBase

      `_constructError, _decodeBase64, _getCharDesc, _handleUnrecognizedCharacterEscape, _reportBase64EOF, _reportError, _reportInvalidBase64, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportUnexpectedChar, _throwInternal, _throwInvalidSpace, _throwUnquotedSpace, _wrapError, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, skipChildren`

    - ### Methods inherited from class org.codehaus.jackson.JsonParser

      `_constructError, canUseSchema, clearCurrentToken, configure, disable, disableFeature, enable, enableFeature, getBinaryValue, getBooleanValue, getByteValue, getCurrentToken, getInputSource, getLastClearedToken, getShortValue, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, hasCurrentToken, isEnabled, isExpectedStartArrayToken, isFeatureEnabled, nextBooleanValue, nextFieldName, nextIntValue, nextLongValue, nextTextValue, nextValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, releaseBuffered, setFeature, setSchema, version`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _codec

          protected ObjectCodec _codec

    - #### _segment

          protected TokenBuffer.Segment _segment

      Currently active segment

    - #### _segmentPtr

          protected int _segmentPtr

      Pointer to current token within current segment

    - #### _parsingContext

          protected JsonReadContext _parsingContext

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

    - #### _closed

          protected boolean _closed

    - #### _byteBuilder

          protected transient ByteArrayBuilder _byteBuilder

    - #### _location

          protected JsonLocation _location

  - ### Constructor Detail

    - #### TokenBuffer.Parser

          public TokenBuffer.Parser(TokenBuffer.Segment firstSeg,
                            ObjectCodec codec)

  - ### Method Detail

    - #### setLocation

          public void setLocation(JsonLocation l)

    - #### getCodec

          public ObjectCodec getCodec()

      Description copied from class: `JsonParser`
      Accessor for `ObjectCodec` associated with this parser, if any. Codec is used by `JsonParser.readValueAs(Class)` method (and its variants).
      Specified by:
        `getCodec` in class `JsonParser`

    - #### setCodec

          public void setCodec(ObjectCodec c)

      Description copied from class: `JsonParser`
      Setter that allows defining `ObjectCodec` associated with this parser, if any. Codec is used by `JsonParser.readValueAs(Class)` method (and its variants).
      Specified by:
        `setCodec` in class `JsonParser`

    - #### peekNextToken

          public JsonToken peekNextToken()
                                  throws IOException,
                                         JsonParseException

      Throws:
        `IOException`
        `JsonParseException`

    - #### close

          public void close()
                     throws IOException

      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 `JsonParser.Feature.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 `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `JsonParserMinimalBase`
      Throws:
        `IOException`

    - #### nextToken

          public JsonToken nextToken()
                              throws IOException,
                                     JsonParseException

      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 class `JsonParserMinimalBase`
      Returns:
        Next token from the stream, if any found, or null to indicate end-of-input
      Throws:
        `IOException`
        `JsonParseException`

    - #### 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 `JsonParserMinimalBase`

    - #### getParsingContext

          public JsonStreamContext getParsingContext()

      Description copied from class: `JsonParser`
      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. Contexts are hierarchically nested, and can be used for example for figuring out part of the input document that correspond to specific array or object (for highlighting purposes, or error reporting). Contexts can also be used for simple xpath-like matching of input, if so desired.
      Specified by:
        `getParsingContext` in class `JsonParserMinimalBase`

    - #### getTokenLocation

          public JsonLocation getTokenLocation()

      Description copied from class: `JsonParser`
      Method that return the starting location of the current token; that is, position of the first character from input that starts the current token.
      Specified by:
        `getTokenLocation` in class `JsonParser`

    - #### getCurrentLocation

          public JsonLocation getCurrentLocation()

      Description copied from class: `JsonParser`
      Method that returns location of the last processed character; usually for error reporting purposes.
      Specified by:
        `getCurrentLocation` in class `JsonParser`

    - #### getCurrentName

          public String getCurrentName()

      Description copied from class: `JsonParser`
      Method that can be called to get the name associated with the current token: for `JsonToken.FIELD_NAME`s it will be the same as what `JsonParser.getText()` returns; for field values it will be preceding field name; and for others (array values, root-level values) null.
      Specified by:
        `getCurrentName` in class `JsonParserMinimalBase`

    - #### getText

          public String getText()

      Description copied from class: `JsonParser`
      Method for accessing textual representation of the current token; if no current token (before first call to `JsonParser.nextToken()`, or after encountering end-of-input), returns null. Method can be called for any token type.
      Specified by:
        `getText` in class `JsonParserMinimalBase`

    - #### getTextCharacters

          public char[] getTextCharacters()

      Description copied from class: `JsonParser`
      Method similar to `JsonParser.getText()`, but that will return underlying (unmodifiable) character array that contains textual value, instead of constructing a String object to contain this information. Note, however, that:
      - Textual contents are not guaranteed to start at index 0 (rather, call `JsonParser.getTextOffset()`) to know the actual offset
      - Length of textual contents may be less than the length of returned buffer: call `JsonParser.getTextLength()` for actual length of returned content.

      Note that caller MUST NOT modify the returned character array in any way -- doing so may corrupt current parser state and render parser instance useless.

      The only reason to call this method (over `JsonParser.getText()`) is to avoid construction of a String object (which will make a copy of contents).

      Specified by:
        `getTextCharacters` in class `JsonParserMinimalBase`

    - #### getTextLength

          public int getTextLength()

      Description copied from class: `JsonParser`
      Accessor used with `JsonParser.getTextCharacters()`, to know length of String stored in returned buffer.
      Specified by:
        `getTextLength` in class `JsonParserMinimalBase`
      Returns:
        Number of characters within buffer returned by `JsonParser.getTextCharacters()` that are part of textual content of the current token.

    - #### getTextOffset

          public int getTextOffset()

      Description copied from class: `JsonParser`
      Accessor used with `JsonParser.getTextCharacters()`, to know offset of the first text content character within buffer.
      Specified by:
        `getTextOffset` in class `JsonParserMinimalBase`
      Returns:
        Offset of the first character within buffer returned by `JsonParser.getTextCharacters()` that is part of textual content of the current token.

    - #### hasTextCharacters

          public boolean hasTextCharacters()

      Description copied from class: `JsonParser`
      Method that can be used to determine whether calling of `JsonParser.getTextCharacters()` would be the most efficient way to access textual content for the event parser currently points to.

      Default implementation simply returns false since only actual implementation class has knowledge of its internal buffering state. Implementations are strongly encouraged to properly override this method, to allow efficient copying of content by other code.

      Specified by:
        `hasTextCharacters` in class `JsonParserMinimalBase`
      Returns:
        True if parser currently has character array that can be efficiently returned via `JsonParser.getTextCharacters()`; false means that it may or may not exist

    - #### getBigIntegerValue

          public BigInteger getBigIntegerValue()
                                        throws IOException,
                                               JsonParseException

      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 not be used as a Java long primitive type due to its magnitude. It can also be called for `JsonToken.VALUE_NUMBER_FLOAT`; if so, it is equivalent to calling `JsonParser.getDecimalValue()` and then constructing a `BigInteger` from that value.
      Specified by:
        `getBigIntegerValue` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getDecimalValue

          public BigDecimal getDecimalValue()
                                     throws IOException,
                                            JsonParseException

      Description copied from class: `JsonParser`
      Numeric accessor that can be called when the current token is of type `JsonToken.VALUE_NUMBER_FLOAT` or `JsonToken.VALUE_NUMBER_INT`. No under/overflow exceptions are ever thrown.
      Specified by:
        `getDecimalValue` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getDoubleValue

          public double getDoubleValue()
                                throws IOException,
                                       JsonParseException

      Description copied from class: `JsonParser`
      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. It can also be called for `JsonToken.VALUE_NUMBER_INT`; if so, it is equivalent to calling `JsonParser.getLongValue()` and then casting; except for possible overflow/underflow exception.

      Note: if the value falls outside of range of Java double, a `JsonParseException` will be thrown to indicate numeric overflow/underflow.

      Specified by:
        `getDoubleValue` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getFloatValue

          public float getFloatValue()
                              throws IOException,
                                     JsonParseException

      Description copied from class: `JsonParser`
      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. It can also be called for `JsonToken.VALUE_NUMBER_INT`; if so, it is equivalent to calling `JsonParser.getLongValue()` and then casting; except for possible overflow/underflow exception.

      Note: if the value falls outside of range of Java float, a `JsonParseException` will be thrown to indicate numeric overflow/underflow.

      Specified by:
        `getFloatValue` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getIntValue

          public int getIntValue()
                          throws IOException,
                                 JsonParseException

      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 int 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 int, a `JsonParseException` may be thrown to indicate numeric overflow/underflow.

      Specified by:
        `getIntValue` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getLongValue

          public long getLongValue()
                            throws IOException,
                                   JsonParseException

      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 Java long primitive type. It can also be called for `JsonToken.VALUE_NUMBER_FLOAT`; if so, it is equivalent to calling `JsonParser.getDoubleValue()` and then casting to int; except for possible overflow/underflow exception.

      Note: if the token is an integer, but its value falls outside of range of Java long, a `JsonParseException` may be thrown to indicate numeric overflow/underflow.

      Specified by:
        `getLongValue` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getNumberType

          public JsonParser.NumberType getNumberType()
                                              throws IOException,
                                                     JsonParseException

      Description copied from class: `JsonParser`
      If current token is of type `JsonToken.VALUE_NUMBER_INT` or `JsonToken.VALUE_NUMBER_FLOAT`, returns one of `JsonParser.NumberType` constants; otherwise returns null.
      Specified by:
        `getNumberType` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getNumberValue

          public final Number getNumberValue()
                                      throws IOException,
                                             JsonParseException

      Description copied from class: `JsonParser`
      Generic number value accessor method that will work for all kinds of numeric values. It will return the optimal (simplest/smallest possible) wrapper object that can express the numeric value just parsed.
      Specified by:
        `getNumberValue` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### 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).

      Overrides:
        `getEmbeddedObject` in class `JsonParser`

    - #### getBinaryValue

          public byte[] getBinaryValue(Base64Variant b64variant)
                                throws IOException,
                                       JsonParseException

      Description copied from class: `JsonParser`
      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. It works similar to getting String value via `JsonParser.getText()` and decoding result (except for decoding part), but should be significantly more performant.

      Note that non-decoded textual contents of the current token are not guaranteed to be accessible after this method is called. Current implementation, for example, clears up textual content during decoding. Decoded binary content, however, will be retained until parser is advanced to the next event.

      Specified by:
        `getBinaryValue` in class `JsonParserMinimalBase`
      Parameters:
        `b64variant` - Expected variant of base64 encoded content (see `Base64Variants` for definitions of "standard" variants).
      Returns:
        Decoded binary data
      Throws:
        `IOException`
        `JsonParseException`

    - #### _currentObject

          protected final Object _currentObject()

    - #### _checkIsNumber

          protected final void _checkIsNumber()
                                       throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _handleEOF

          protected void _handleEOF()
                             throws JsonParseException

      Description copied from class: `JsonParserMinimalBase`
      Method sub-classes need to implement
      Specified by:
        `_handleEOF` in class `JsonParserMinimalBase`
      Throws:
        `JsonParseException`