Package com.fasterxml.jackson.databind
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 byObjectMapperwhen binding sequence of objects. Extension is done to allow more convenient exposing ofIOException(which basicIteratordoes not expose)
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean_closeParserFlag that indicates whether inputJsonParsershould be closed when we are done or not; generally only called when caller did not pass JsonParser.protected DeserializationContext_contextContext for deserialization, needed to pass through to deserializerprotected JsonDeserializer<T>_deserializerDeserializer for individual element values.protected com.fasterxml.jackson.core.JsonParser_parserUnderlying parser used for reading content to bind.protected com.fasterxml.jackson.core.JsonStreamContext_seqContextContext to resynchronize to, in case an exception is encountered but caller wants to try to read more elements.protected int_stateState of the iteratorprotected JavaType_typeType to bind individual elements to.protected T_updatedValueIf not null, "value to update" instead of creating a new instance for each call.protected static MappingIterator<?>EMPTY_ITERATORprotected static intSTATE_CLOSEDState in which iterator is closedprotected static intSTATE_HAS_VALUEState in which "hasNextValue()" has been succesfully called and deserializer can be called to fetch valueprotected static intSTATE_MAY_HAVE_VALUEState in which no recovery is needed, but "hasNextValue()" needs to be called firstprotected static intSTATE_NEED_RESYNCState in which value read failed
-
Constructor Summary
Constructors Modifier Constructor Description protectedMappingIterator(JavaType type, com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, JsonDeserializer<?> deser, boolean managedParser, Object valueToUpdate)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected <R> R_handleIOException(IOException e)protected <R> R_handleMappingException(JsonMappingException e)protected void_resync()protected <R> R_throwNoSuchElement()voidclose()static <T> MappingIterator<T>emptyIterator()Method for getting an "empty" iterator instance: one that never has more values; may be freely shared.com.fasterxml.jackson.core.JsonLocationgetCurrentLocation()Convenience method, functionally equivalent to:iterator.getParser().getCurrentLocation()com.fasterxml.jackson.core.JsonParsergetParser()Accessor for getting underlying parser this iterator uses.com.fasterxml.jackson.core.FormatSchemagetParserSchema()Accessor for accessingFormatSchemathat the underlying parser (as pergetParser()) is using, if any; only parser of schema-aware formats use schemas.booleanhasNext()booleanhasNextValue()Equivalent ofnext()but one that may throw checked exceptions from Jackson due to invalid input.Tnext()TnextValue()List<T>readAll()Convenience method for reading all entries accessible via this iterator; resulting container will be aArrayList.<C extends Collection<? super T>>
CreadAll(C results)Convenience method for reading all entries accessible via this iterator<L extends List<? super T>>
LreadAll(L resultList)Convenience method for reading all entries accessible via this iteratorvoidremove()-
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 Detail
-
EMPTY_ITERATOR
protected static final MappingIterator<?> EMPTY_ITERATOR
-
STATE_CLOSED
protected static final int STATE_CLOSED
State in which iterator is closed- See Also:
- Constant Field Values
-
STATE_NEED_RESYNC
protected static final int STATE_NEED_RESYNC
State in which value read failed- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
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:
- Constant Field Values
-
_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 notnullbut set asnullwhen 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 inputJsonParsershould 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 Detail
-
MappingIterator
protected MappingIterator(JavaType type, com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, JsonDeserializer<?> deser, boolean managedParser, Object valueToUpdate)
- Parameters:
managedParser- Whether we "own" theJsonParserpassed or not: if true, it was created byObjectReaderand code here needs to close it; if false, it was passed by calling code and should not be closed by iterator.
-
-
Method Detail
-
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
publicsince 2.10
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
hasNextValue
public boolean hasNextValue() throws IOExceptionEquivalent ofnext()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 aArrayList.- 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 accessingFormatSchemathat the underlying parser (as pergetParser()) 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)
-
-