Class MappingIterator<T>

java.lang.Object
com.fasterxml.jackson.databind.MappingIterator<T>
All Implemented Interfaces:
Closeable, AutoCloseable, Iterator<T>

public class MappingIterator<T> extends Object implements Iterator<T>, Closeable
Iterator exposed by ObjectMapper when binding sequence of objects. Extension is done to allow more convenient exposing of IOException (which basic Iterator does not expose)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final boolean
    Flag that indicates whether input JsonParser should be closed when we are done or not; generally only called when caller did not pass JsonParser.
    protected final DeserializationContext
    Context for deserialization, needed to pass through to deserializer
    protected final JsonDeserializer<T>
    Deserializer for individual element values.
    protected final com.fasterxml.jackson.core.JsonParser
    Underlying parser used for reading content to bind.
    protected final com.fasterxml.jackson.core.JsonStreamContext
    Context to resynchronize to, in case an exception is encountered but caller wants to try to read more elements.
    protected int
    State of the iterator
    protected final JavaType
    Type to bind individual elements to.
    protected final T
    If not null, "value to update" instead of creating a new instance for each call.
    protected static final MappingIterator<?>
     
    protected static final int
    State in which iterator is closed
    protected static final int
    State in which "hasNextValue()" has been succesfully called and deserializer can be called to fetch value
    protected static final int
    State in which no recovery is needed, but "hasNextValue()" needs to be called first
    protected static final int
    State in which value read failed
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    MappingIterator(JavaType type, com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, JsonDeserializer<?> deser, boolean managedParser, Object valueToUpdate)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected <R> R
     
    protected <R> R
     
    protected void
     
    protected <R> R
     
    void
     
    static <T> MappingIterator<T>
    Method for getting an "empty" iterator instance: one that never has more values; may be freely shared.
    com.fasterxml.jackson.core.JsonLocation
    Convenience method, functionally equivalent to: iterator.getParser().getCurrentLocation()
    com.fasterxml.jackson.core.JsonParser
    Accessor for getting underlying parser this iterator uses.
    com.fasterxml.jackson.core.FormatSchema
    Accessor for accessing FormatSchema that the underlying parser (as per getParser()) is using, if any; only parser of schema-aware formats use schemas.
    boolean
     
    boolean
    Equivalent of next() but one that may throw checked exceptions from Jackson due to invalid input.
     
     
    Convenience method for reading all entries accessible via this iterator; resulting container will be a ArrayList.
    <C extends Collection<? super T>>
    C
    readAll(C results)
    Convenience method for reading all entries accessible via this iterator
    <L extends List<? super T>>
    L
    readAll(L resultList)
    Convenience method for reading all entries accessible via this iterator
    void
     

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface java.util.Iterator

    forEachRemaining
  • Field Details

    • EMPTY_ITERATOR

      protected static final MappingIterator<?> EMPTY_ITERATOR
    • STATE_CLOSED

      protected static final int STATE_CLOSED
      State in which iterator is closed
      See Also:
    • STATE_NEED_RESYNC

      protected static final int STATE_NEED_RESYNC
      State in which value read failed
      See Also:
    • STATE_MAY_HAVE_VALUE

      protected static final int STATE_MAY_HAVE_VALUE
      State in which no recovery is needed, but "hasNextValue()" needs to be called first
      See Also:
    • STATE_HAS_VALUE

      protected static final int STATE_HAS_VALUE
      State in which "hasNextValue()" has been succesfully called and deserializer can be called to fetch value
      See Also:
    • _type

      protected final JavaType _type
      Type to bind individual elements to.
    • _context

      protected final DeserializationContext _context
      Context for deserialization, needed to pass through to deserializer
    • _deserializer

      protected final JsonDeserializer<T> _deserializer
      Deserializer for individual element values.
    • _parser

      protected final com.fasterxml.jackson.core.JsonParser _parser
      Underlying parser used for reading content to bind. Initialized as not null but set as null when iterator is closed, to denote closing.
    • _seqContext

      protected final com.fasterxml.jackson.core.JsonStreamContext _seqContext
      Context to resynchronize to, in case an exception is encountered but caller wants to try to read more elements.
    • _updatedValue

      protected final T _updatedValue
      If not null, "value to update" instead of creating a new instance for each call.
    • _closeParser

      protected final boolean _closeParser
      Flag that indicates whether input JsonParser should be closed when we are done or not; generally only called when caller did not pass JsonParser.
    • _state

      protected int _state
      State of the iterator
  • Constructor Details

    • MappingIterator

      protected MappingIterator(JavaType type, com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, JsonDeserializer<?> deser, boolean managedParser, Object valueToUpdate)
      Parameters:
      managedParser - Whether we "own" the JsonParser passed or not: if true, it was created by ObjectReader and code here needs to close it; if false, it was passed by calling code and should not be closed by iterator.
  • Method Details

    • emptyIterator

      public static <T> MappingIterator<T> emptyIterator()
      Method for getting an "empty" iterator instance: one that never has more values; may be freely shared.
      Since:
      2.10 Existed earlier but public since 2.10
    • hasNext

      public boolean hasNext()
      Specified by:
      hasNext in interface Iterator<T>
    • next

      public T next()
      Specified by:
      next in interface Iterator<T>
    • remove

      public void remove()
      Specified by:
      remove in interface Iterator<T>
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • hasNextValue

      public boolean hasNextValue() throws IOException
      Equivalent of next() but one that may throw checked exceptions from Jackson due to invalid input.
      Throws:
      IOException
    • nextValue

      public T nextValue() throws IOException
      Throws:
      IOException
    • readAll

      public List<T> readAll() throws IOException
      Convenience method for reading all entries accessible via this iterator; resulting container will be a ArrayList.
      Returns:
      List of entries read
      Throws:
      IOException
      Since:
      2.2
    • readAll

      public <L extends List<? super T>> L readAll(L resultList) throws IOException
      Convenience method for reading all entries accessible via this iterator
      Returns:
      List of entries read (same as passed-in argument)
      Throws:
      IOException
      Since:
      2.2
    • readAll

      public <C extends Collection<? super T>> C readAll(C results) throws IOException
      Convenience method for reading all entries accessible via this iterator
      Throws:
      IOException
      Since:
      2.5
    • getParser

      public com.fasterxml.jackson.core.JsonParser getParser()
      Accessor for getting underlying parser this iterator uses.
      Since:
      2.2
    • getParserSchema

      public com.fasterxml.jackson.core.FormatSchema getParserSchema()
      Accessor for accessing FormatSchema that the underlying parser (as per getParser()) is using, if any; only parser of schema-aware formats use schemas.
      Since:
      2.2
    • getCurrentLocation

      public com.fasterxml.jackson.core.JsonLocation getCurrentLocation()
      Convenience method, functionally equivalent to: iterator.getParser().getCurrentLocation()
      Returns:
      Location of the input stream of the underlying parser
      Since:
      2.2.1
    • _resync

      protected void _resync() throws IOException
      Throws:
      IOException
    • _throwNoSuchElement

      protected <R> R _throwNoSuchElement()
    • _handleMappingException

      protected <R> R _handleMappingException(JsonMappingException e)
    • _handleIOException

      protected <R> R _handleIOException(IOException e)