JsonParserMinimalBase (Jackson JSON Processor)
Date: 2013-07-14

org.codehaus.jackson.impl

## Class JsonParserMinimalBase

- java.lang.Object
- - org.codehaus.jackson.JsonParser
  - - org.codehaus.jackson.impl.JsonParserMinimalBase

- All Implemented Interfaces:
    Closeable, AutoCloseable, Versioned
  Direct Known Subclasses:
    JsonParserBase, TokenBuffer.Parser, TreeTraversingParser

      public abstract class JsonParserMinimalBase
      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.

  Since:
    1.6
  Author:
    Tatu Saloranta

- - ### 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 static int` | `INT_APOSTROPHE`
    `protected static int` | `INT_ASTERISK`
    `protected static int` | `INT_b`
    `protected static int` | `INT_BACKSLASH`
    `protected static int` | `INT_COLON`
    `protected static int` | `INT_COMMA`
    `protected static int` | `INT_CR`
    `protected static int` | `INT_f`
    `protected static int` | `INT_LBRACKET`
    `protected static int` | `INT_LCURLY`
    `protected static int` | `INT_LF`
    `protected static int` | `INT_n`
    `protected static int` | `INT_QUOTE`
    `protected static int` | `INT_r`
    `protected static int` | `INT_RBRACKET`
    `protected static int` | `INT_RCURLY`
    `protected static int` | `INT_SLASH`
    `protected static int` | `INT_SPACE`
    `protected static int` | `INT_t`
    `protected static int` | `INT_TAB`
    `protected static int` | `INT_u`

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

      `_currToken, _features, _lastClearedToken`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `JsonParserMinimalBase()`
    `protected` | `JsonParserMinimalBase(int features)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected JsonParseException` | `_constructError(String msg, Throwable t)`
    `protected void` | `_decodeBase64(String str, ByteArrayBuilder builder, Base64Variant b64variant)` Helper method that can be used for base64 decoding in cases where encoded content has already been read as a String.
    `protected static String` | `_getCharDesc(int ch)`
    `protected abstract void` | `_handleEOF()` Method sub-classes need to implement
    `protected char` | `_handleUnrecognizedCharacterEscape(char ch)`
    `protected void` | `_reportBase64EOF()`
    `protected void` | `_reportError(String msg)`
    `protected void` | `_reportInvalidBase64(Base64Variant b64variant, char ch, int bindex, String msg)`
    `protected void` | `_reportInvalidEOF()`
    `protected void` | `_reportInvalidEOF(String msg)`
    `protected void` | `_reportInvalidEOFInValue()`
    `protected void` | `_reportUnexpectedChar(int ch, String comment)`
    `protected void` | `_throwInternal()`
    `protected void` | `_throwInvalidSpace(int i)`
    `protected void` | `_throwUnquotedSpace(int i, String ctxtDesc)` Method called to report a problem with unquoted control character.
    `protected void` | `_wrapError(String msg, Throwable t)`
    `abstract 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.
    `abstract 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.
    `abstract 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.
    `abstract JsonStreamContext` | `getParsingContext()` Method that can be used to access current parsing context reader is in.
    `abstract 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.
    `abstract 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.
    `abstract int` | `getTextLength()` Accessor used with `JsonParser.getTextCharacters()`, to know length of String stored in returned buffer.
    `abstract int` | `getTextOffset()` Accessor used with `JsonParser.getTextCharacters()`, to know offset of the first text content character within buffer.
    `boolean` | `getValueAsBoolean(boolean defaultValue)` Method that will try to convert value of current token to a boolean.
    `double` | `getValueAsDouble(double defaultValue)` Method that will try to convert value of current token to a Java double.
    `int` | `getValueAsInt(int defaultValue)` Method that will try to convert value of current token to a int.
    `long` | `getValueAsLong(long defaultValue)` Method that will try to convert value of current token to a long.
    `abstract 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.
    `abstract boolean` | `isClosed()` Method that can be called to determine whether this parser is closed or not.
    `abstract JsonToken` | `nextToken()` Main iteration method, which will advance stream enough to determine type of the next token, if any.
    `JsonParser` | `skipChildren()` 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`.

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

      `_constructError, canUseSchema, clearCurrentToken, configure, disable, disableFeature, enable, enableFeature, getBigIntegerValue, getBinaryValue, getBooleanValue, getByteValue, getCodec, getCurrentLocation, getCurrentToken, getDecimalValue, getDoubleValue, getEmbeddedObject, getFloatValue, getInputSource, getIntValue, getLastClearedToken, getLongValue, getNumberType, getNumberValue, getShortValue, getTokenLocation, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, hasCurrentToken, isEnabled, isExpectedStartArrayToken, isFeatureEnabled, nextBooleanValue, nextFieldName, nextIntValue, nextLongValue, nextTextValue, nextValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, releaseBuffered, setCodec, setFeature, setSchema, version`

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

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

- - ### Field Detail

    - #### INT_TAB

          protected static final int INT_TAB

      See Also:
        Constant Field Values

    - #### INT_LF

          protected static final int INT_LF

      See Also:
        Constant Field Values

    - #### INT_CR

          protected static final int INT_CR

      See Also:
        Constant Field Values

    - #### INT_SPACE

          protected static final int INT_SPACE

      See Also:
        Constant Field Values

    - #### INT_LBRACKET

          protected static final int INT_LBRACKET

      See Also:
        Constant Field Values

    - #### INT_RBRACKET

          protected static final int INT_RBRACKET

      See Also:
        Constant Field Values

    - #### INT_LCURLY

          protected static final int INT_LCURLY

      See Also:
        Constant Field Values

    - #### INT_RCURLY

          protected static final int INT_RCURLY

      See Also:
        Constant Field Values

    - #### INT_QUOTE

          protected static final int INT_QUOTE

      See Also:
        Constant Field Values

    - #### INT_BACKSLASH

          protected static final int INT_BACKSLASH

      See Also:
        Constant Field Values

    - #### INT_SLASH

          protected static final int INT_SLASH

      See Also:
        Constant Field Values

    - #### INT_COLON

          protected static final int INT_COLON

      See Also:
        Constant Field Values

    - #### INT_COMMA

          protected static final int INT_COMMA

      See Also:
        Constant Field Values

    - #### INT_ASTERISK

          protected static final int INT_ASTERISK

      See Also:
        Constant Field Values

    - #### INT_APOSTROPHE

          protected static final int INT_APOSTROPHE

      See Also:
        Constant Field Values

    - #### INT_b

          protected static final int INT_b

      See Also:
        Constant Field Values

    - #### INT_f

          protected static final int INT_f

      See Also:
        Constant Field Values

    - #### INT_n

          protected static final int INT_n

      See Also:
        Constant Field Values

    - #### INT_r

          protected static final int INT_r

      See Also:
        Constant Field Values

    - #### INT_t

          protected static final int INT_t

      See Also:
        Constant Field Values

    - #### INT_u

          protected static final int INT_u

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### JsonParserMinimalBase

          protected JsonParserMinimalBase()

    - #### JsonParserMinimalBase

          protected JsonParserMinimalBase(int features)

  - ### Method Detail

    - #### nextToken

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

    - #### skipChildren

          public JsonParser skipChildren()
                                  throws IOException,
                                         JsonParseException

      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`
      Throws:
        `IOException`
        `JsonParseException`

    - #### _handleEOF

          protected abstract void _handleEOF()
                                      throws JsonParseException

      Method sub-classes need to implement
      Throws:
        `JsonParseException`

    - #### getCurrentName

          public abstract String getCurrentName()
                                         throws IOException,
                                                JsonParseException

      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 `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### close

          public abstract 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 `JsonParser`
      Throws:
        `IOException`

    - #### isClosed

          public abstract 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`

    - #### getParsingContext

          public abstract 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 `JsonParser`

    - #### getText

          public abstract String getText()
                                  throws IOException,
                                         JsonParseException

      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 `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getTextCharacters

          public abstract char[] getTextCharacters()
                                            throws IOException,
                                                   JsonParseException

      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 `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### hasTextCharacters

          public abstract 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.

      Overrides:
        `hasTextCharacters` in class `JsonParser`
      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

    - #### getTextLength

          public abstract int getTextLength()
                                     throws IOException,
                                            JsonParseException

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

    - #### getTextOffset

          public abstract int getTextOffset()
                                     throws IOException,
                                            JsonParseException

      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 `JsonParser`
      Returns:
        Offset of the first character within buffer returned by `JsonParser.getTextCharacters()` that is part of textual content of the current token.
      Throws:
        `IOException`
        `JsonParseException`

    - #### getBinaryValue

          public abstract 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 `JsonParser`
      Parameters:
        `b64variant` - Expected variant of base64 encoded content (see `Base64Variants` for definitions of "standard" variants).
      Returns:
        Decoded binary data
      Throws:
        `IOException`
        `JsonParseException`

    - #### getValueAsBoolean

          public boolean getValueAsBoolean(boolean defaultValue)
                                    throws IOException,
                                           JsonParseException

      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 can not be converted to a boolean value (including structured types like Objects and Arrays), specified defaultValue will be returned; no exceptions are thrown.

      Overrides:
        `getValueAsBoolean` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getValueAsInt

          public int getValueAsInt(int defaultValue)
                            throws IOException,
                                   JsonParseException

      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 can not be converted to an int (including structured type markers like start/end Object/Array) specified defaultValue will be returned; no exceptions are thrown.

      Overrides:
        `getValueAsInt` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getValueAsLong

          public long getValueAsLong(long defaultValue)
                              throws IOException,
                                     JsonParseException

      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 can not be converted to an int (including structured type markers like start/end Object/Array) specified defaultValue will be returned; no exceptions are thrown.

      Overrides:
        `getValueAsLong` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### getValueAsDouble

          public double getValueAsDouble(double defaultValue)
                                  throws IOException,
                                         JsonParseException

      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 integer parsing rules.

      If representation can not be converted to an int (including structured types like Objects and Arrays), specified defaultValue will be returned; no exceptions are thrown.

      Overrides:
        `getValueAsDouble` in class `JsonParser`
      Throws:
        `IOException`
        `JsonParseException`

    - #### _decodeBase64

          protected void _decodeBase64(String str,
                           ByteArrayBuilder builder,
                           Base64Variant b64variant)
                                throws IOException,
                                       JsonParseException

      Helper method that can be used for base64 decoding in cases where encoded content has already been read as a String.
      Throws:
        `IOException`
        `JsonParseException`
      Since:
        1.9.3

    - #### _reportInvalidBase64

          protected void _reportInvalidBase64(Base64Variant b64variant,
                                  char ch,
                                  int bindex,
                                  String msg)
                                       throws JsonParseException

      Parameters:
        `bindex` - Relative index within base64 character unit; between 0 and 3 (as unit has exactly 4 characters)
      Throws:
        `JsonParseException`

    - #### _reportBase64EOF

          protected void _reportBase64EOF()
                                   throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _reportUnexpectedChar

          protected void _reportUnexpectedChar(int ch,
                                   String comment)
                                        throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _reportInvalidEOF

          protected void _reportInvalidEOF()
                                    throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _reportInvalidEOF

          protected void _reportInvalidEOF(String msg)
                                    throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _reportInvalidEOFInValue

          protected void _reportInvalidEOFInValue()
                                           throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _throwInvalidSpace

          protected void _throwInvalidSpace(int i)
                                     throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _throwUnquotedSpace

          protected void _throwUnquotedSpace(int i,
                                 String ctxtDesc)
                                      throws JsonParseException

      Method called to report a problem with unquoted control character. Note: starting with version 1.4, it is possible to suppress exception by enabling `JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS`.
      Throws:
        `JsonParseException`

    - #### _handleUnrecognizedCharacterEscape

          protected char _handleUnrecognizedCharacterEscape(char ch)
                                                     throws JsonProcessingException

      Throws:
        `JsonProcessingException`

    - #### _getCharDesc

          protected static final String _getCharDesc(int ch)

    - #### _reportError

          protected final void _reportError(String msg)
                                     throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _wrapError

          protected final void _wrapError(String msg,
                        Throwable t)
                                   throws JsonParseException

      Throws:
        `JsonParseException`

    - #### _throwInternal

          protected final void _throwInternal()

    - #### _constructError

          protected final JsonParseException _constructError(String msg,
                                           Throwable t)