com.fasterxml.jackson.core.util

Class JsonParserSequence

    • Field Detail

      • _parsers

        protected final JsonParser[] _parsers
        Parsers other than the first one (which is initially assigned as delegate)
      • _checkForExistingToken

        protected final boolean _checkForExistingToken
        Configuration that determines whether state of parsers is first verified to see if parser already points to a token (that is, JsonParser.hasCurrentToken() returns true), and if so that token is first return before JsonParser.nextToken() is called. If enabled, this check is made; if disabled, no check is made and JsonParser.nextToken() is always called for all parsers.

        Default setting is false (for backwards-compatibility) so that possible existing token is not considered for parsers.

        Since:
        2.8
      • _nextParserIndex

        protected int _nextParserIndex
        Index of the next parser in _parsers.
      • _hasToken

        protected boolean _hasToken
        Flag used to indicate that `JsonParser.nextToken()` should not be called, due to parser already pointing to a token.
        Since:
        2.8
    • Constructor Detail

      • JsonParserSequence

        protected JsonParserSequence(boolean checkForExistingToken,
                                     JsonParser[] parsers)
    • Method Detail

      • createFlattened

        public static JsonParserSequence createFlattened(boolean checkForExistingToken,
                                                         JsonParser first,
                                                         JsonParser second)
        Method that will construct a sequence (possibly a sequence) that contains all given sub-parsers. All parsers given are checked to see if they are sequences: and if so, they will be "flattened", that is, contained parsers are directly added in a new sequence instead of adding sequences within sequences. This is done to minimize delegation depth, ideally only having just a single level of delegation.
        Parameters:
        checkForExistingToken - Flag passed to be assigned as _checkForExistingToken for resulting sequence
        first - First parser to traverse
        second - Second parser to traverse
        Returns:
        Sequence instance constructed
      • addFlattenedActiveParsers

        protected void addFlattenedActiveParsers(List<JsonParser> listToAddIn)
      • 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
        Overrides:
        close in class JsonParserDelegate
        Throws:
        IOException - if there is either an underlying I/O problem
      • nextToken

        public JsonToken nextToken()
                            throws IOException
        Description copied from class: JsonParser
        Main iteration method, which will advance stream enough to determine type of the next token, if any. If none remaining (stream has no content other than possible white space before ending), null will be returned.
        Overrides:
        nextToken in class JsonParserDelegate
        Returns:
        Next token from the stream, if any found, or null to indicate end-of-input
        Throws:
        IOException - for low-level read issues, or JsonParseException for decoding problems
      • containedParsersCount

        public int containedParsersCount()
        Method that is most useful for debugging or testing; returns actual number of underlying parsers sequence was constructed with (nor just ones remaining active)
        Returns:
        Number of actual underlying parsers this sequence has
      • switchToNext

        protected boolean switchToNext()
        Method that will switch active delegate parser from the current one to the next parser in sequence, if there is another parser left: if so, the next parser will become the active delegate parser.
        Returns:
        True if switch succeeded; false otherwise
        Since:
        2.8

Copyright © 2008–2022 FasterXML. All rights reserved.