Class BsonObjectTraversingParser

  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned, Closeable, AutoCloseable

    public class BsonObjectTraversingParser
    extends com.fasterxml.jackson.core.base.ParserMinimalBase
    Parses a BSONObject by traversing it. This class was copied from TreeTraversingParser and then adapted to be for BSONObject's, rather than JsonNode's.

    While decoding by the cursor uses DBDecoderBsonParser, there are still things that need to be decoded from the DBObjects, including the result of findAndModify, and saved objects after saving.

    Since:
    1.0
    Author:
    James Roper
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonParser

        com.fasterxml.jackson.core.JsonParser.Feature, com.fasterxml.jackson.core.JsonParser.NumberType
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean closed
      Flag that indicates whether parser is closed or not.
      protected com.fasterxml.jackson.core.JsonToken nextToken
      Sometimes parser needs to buffer a single look-ahead token; if so, it'll be stored here.
      protected org.mongojack.internal.object.BsonObjectCursor nodeCursor
      Traversal context within tree
      protected com.fasterxml.jackson.core.ObjectCodec objectCodec  
      protected boolean startContainer
      Flag needed to handle recursion into contents of child Array/Object nodes.
      • Fields inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase

        _currToken, _lastClearedToken, BD_MAX_INT, BD_MAX_LONG, BD_MIN_INT, BD_MIN_LONG, BI_MAX_INT, BI_MAX_LONG, BI_MIN_INT, BI_MIN_LONG, CHAR_NULL, INT_0, INT_9, INT_APOS, INT_ASTERISK, INT_BACKSLASH, INT_COLON, INT_COMMA, INT_CR, INT_e, INT_E, INT_HASH, INT_LBRACKET, INT_LCURLY, INT_LF, INT_MINUS, INT_PERIOD, INT_PLUS, INT_QUOTE, INT_RBRACKET, INT_RCURLY, INT_SLASH, INT_SPACE, INT_TAB, MAX_ERROR_TOKEN_LENGTH, MAX_INT_D, MAX_INT_L, MAX_LONG_D, MIN_INT_D, MIN_INT_L, MIN_LONG_D, NO_BYTES, NO_INTS, NR_BIGDECIMAL, NR_BIGINT, NR_DOUBLE, NR_FLOAT, NR_INT, NR_LONG, NR_UNKNOWN
      • Fields inherited from class com.fasterxml.jackson.core.JsonParser

        _features, _requestPayload, DEFAULT_READ_CAPABILITIES
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void _handleEOF()  
      void close()  
      protected Object currentNode()  
      BigInteger getBigIntegerValue()  
      byte[] getBinaryValue​(com.fasterxml.jackson.core.Base64Variant b64variant)  
      com.fasterxml.jackson.core.ObjectCodec getCodec()  
      com.fasterxml.jackson.core.JsonLocation getCurrentLocation()  
      String getCurrentName()  
      BigDecimal getDecimalValue()  
      double getDoubleValue()  
      Object getEmbeddedObject()  
      float getFloatValue()  
      int getIntValue()  
      long getLongValue()  
      com.fasterxml.jackson.core.JsonParser.NumberType getNumberType()  
      Number getNumberValue()  
      com.fasterxml.jackson.core.JsonStreamContext getParsingContext()  
      String getText()  
      char[] getTextCharacters()  
      int getTextLength()  
      int getTextOffset()  
      com.fasterxml.jackson.core.JsonLocation getTokenLocation()  
      boolean hasTextCharacters()  
      boolean isClosed()  
      com.fasterxml.jackson.core.JsonToken nextToken()  
      void overrideCurrentName​(String name)  
      void setCodec​(com.fasterxml.jackson.core.ObjectCodec c)  
      com.fasterxml.jackson.core.JsonParser skipChildren()  
      com.fasterxml.jackson.core.Version version()  
      • Methods inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase

        _ascii, _asciiBytes, _constructError, _decodeBase64, _getCharDesc, _hasTextualNull, _longIntegerDesc, _longNumberDesc, _reportError, _reportError, _reportError, _reportInputCoercion, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportInvalidEOFInValue, _reportMissingRootWS, _reportUnexpectedChar, _reportUnexpectedNumberChar, _throwInternal, _throwInvalidSpace, _wrapError, clearCurrentToken, currentToken, currentTokenId, getCurrentToken, getCurrentTokenId, getLastClearedToken, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsInt, getValueAsLong, getValueAsLong, getValueAsString, getValueAsString, hasCurrentToken, hasToken, hasTokenId, isExpectedNumberIntToken, isExpectedStartArrayToken, isExpectedStartObjectToken, nextValue, reportInvalidNumber, reportOverflowInt, reportOverflowInt, reportOverflowInt, reportOverflowLong, reportOverflowLong, reportOverflowLong, reportUnexpectedNumberChar
      • Methods inherited from class com.fasterxml.jackson.core.JsonParser

        _codec, _constructError, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _reportUnsupportedOperation, assignCurrentValue, canParseAsync, canReadObjectId, canReadTypeId, canUseSchema, configure, currentLocation, currentName, currentTokenLocation, currentValue, disable, enable, finishToken, getBinaryValue, getBooleanValue, getByteValue, getCurrentValue, getFeatureMask, getFormatFeatures, getInputSource, getNonBlockingInputFeeder, getNumberValueExact, getObjectId, getReadCapabilities, getSchema, getShortValue, getText, getTypeId, getValueAsBoolean, getValueAsDouble, isEnabled, isEnabled, isNaN, nextBooleanValue, nextFieldName, nextFieldName, nextIntValue, nextLongValue, nextTextValue, overrideFormatFeatures, overrideStdFeatures, readBinaryValue, readBinaryValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, releaseBuffered, requiresCustomCodec, setCurrentValue, setFeatureMask, setRequestPayloadOnError, setRequestPayloadOnError, setRequestPayloadOnError, setSchema
    • Field Detail

      • objectCodec

        protected com.fasterxml.jackson.core.ObjectCodec objectCodec
      • nodeCursor

        protected org.mongojack.internal.object.BsonObjectCursor nodeCursor
        Traversal context within tree
      • nextToken

        protected com.fasterxml.jackson.core.JsonToken nextToken
        Sometimes parser needs to buffer a single look-ahead token; if so, it'll be stored here. This is currently used for handling
      • startContainer

        protected boolean startContainer
        Flag needed to handle recursion into contents of child Array/Object nodes.
      • 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.
    • Constructor Detail

      • BsonObjectTraversingParser

        public BsonObjectTraversingParser​(Object rootValue,
                                          com.fasterxml.jackson.core.ObjectCodec codec)
    • Method Detail

      • version

        public com.fasterxml.jackson.core.Version version()
        Specified by:
        version in interface com.fasterxml.jackson.core.Versioned
        Specified by:
        version in class com.fasterxml.jackson.core.JsonParser
      • setCodec

        public void setCodec​(com.fasterxml.jackson.core.ObjectCodec c)
        Specified by:
        setCodec in class com.fasterxml.jackson.core.JsonParser
      • getCodec

        public com.fasterxml.jackson.core.ObjectCodec getCodec()
        Specified by:
        getCodec in class com.fasterxml.jackson.core.JsonParser
      • nextToken

        public com.fasterxml.jackson.core.JsonToken nextToken()
                                                       throws IOException
        Specified by:
        nextToken in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        IOException
      • skipChildren

        public com.fasterxml.jackson.core.JsonParser skipChildren()
                                                           throws IOException
        Overrides:
        skipChildren in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        IOException
      • isClosed

        public boolean isClosed()
        Specified by:
        isClosed in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • getCurrentName

        public String getCurrentName()
        Specified by:
        getCurrentName in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • getParsingContext

        public com.fasterxml.jackson.core.JsonStreamContext getParsingContext()
        Specified by:
        getParsingContext in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • getTokenLocation

        public com.fasterxml.jackson.core.JsonLocation getTokenLocation()
        Specified by:
        getTokenLocation in class com.fasterxml.jackson.core.JsonParser
      • getCurrentLocation

        public com.fasterxml.jackson.core.JsonLocation getCurrentLocation()
        Specified by:
        getCurrentLocation in class com.fasterxml.jackson.core.JsonParser
      • getText

        public String getText()
        Specified by:
        getText in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • getTextCharacters

        public char[] getTextCharacters()
                                 throws IOException
        Specified by:
        getTextCharacters in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        IOException
      • getTextLength

        public int getTextLength()
                          throws IOException
        Specified by:
        getTextLength in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        IOException
      • getTextOffset

        public int getTextOffset()
                          throws IOException
        Specified by:
        getTextOffset in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        IOException
      • hasTextCharacters

        public boolean hasTextCharacters()
        Specified by:
        hasTextCharacters in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • getNumberType

        public com.fasterxml.jackson.core.JsonParser.NumberType getNumberType()
                                                                       throws IOException
        Specified by:
        getNumberType in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getBigIntegerValue

        public BigInteger getBigIntegerValue()
                                      throws IOException
        Specified by:
        getBigIntegerValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getDecimalValue

        public BigDecimal getDecimalValue()
                                   throws IOException
        Specified by:
        getDecimalValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getDoubleValue

        public double getDoubleValue()
                              throws IOException
        Specified by:
        getDoubleValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getFloatValue

        public float getFloatValue()
                            throws IOException
        Specified by:
        getFloatValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getLongValue

        public long getLongValue()
                          throws IOException
        Specified by:
        getLongValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getIntValue

        public int getIntValue()
                        throws IOException
        Specified by:
        getIntValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getNumberValue

        public Number getNumberValue()
                              throws IOException
        Specified by:
        getNumberValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • getBinaryValue

        public byte[] getBinaryValue​(com.fasterxml.jackson.core.Base64Variant b64variant)
                              throws IOException
        Specified by:
        getBinaryValue in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        IOException
      • getEmbeddedObject

        public Object getEmbeddedObject()
                                 throws IOException
        Overrides:
        getEmbeddedObject in class com.fasterxml.jackson.core.JsonParser
        Throws:
        IOException
      • _handleEOF

        protected void _handleEOF()
                           throws com.fasterxml.jackson.core.JsonParseException
        Specified by:
        _handleEOF in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        com.fasterxml.jackson.core.JsonParseException
      • overrideCurrentName

        public void overrideCurrentName​(String name)
        Specified by:
        overrideCurrentName in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • currentNode

        protected Object currentNode()