org.codehaus.jackson.map
Class ObjectReader

java.lang.Object
  extended by org.codehaus.jackson.ObjectCodec
      extended by org.codehaus.jackson.map.ObjectReader
All Implemented Interfaces:
Versioned

public class ObjectReader
extends ObjectCodec
implements Versioned

Builder object that can be used for per-serialization configuration of deserialization parameters, such as root type to use or object to update (instead of constructing new instance). Uses "fluid" (aka builder) pattern so that instances are immutable (and thus fully thread-safe with no external synchronization); new instances are constructed for different configurations. Instances are initially constructed by ObjectMapper and can be reused.

Since:
1.6
Author:
tatu

Field Summary
protected  DeserializationConfig _config
          General serialization configuration settings; while immutable, can use copy-constructor to create modified instances as necessary.
protected  InjectableValues _injectableValues
          Values that can be injected during deserialization, if any.
protected  JsonFactory _jsonFactory
          Factory used for constructing JsonGenerators
protected  DeserializerProvider _provider
           
protected  ConcurrentHashMap<JavaType,JsonDeserializer<Object>> _rootDeserializers
          Root-level cached deserializers
protected  FormatSchema _schema
          When using data format that uses a schema, schema is passed to parser.
protected  boolean _unwrapRoot
          Flag that indicates whether root values are expected to be unwrapped or not
protected  Object _valueToUpdate
          Instance to update with data binding; if any.
protected  JavaType _valueType
          Declared type of value to instantiate during deserialization.
 
Constructor Summary
protected ObjectReader(ObjectMapper mapper, DeserializationConfig config)
          Constructor used by ObjectMapper for initial instantiation
protected ObjectReader(ObjectMapper mapper, DeserializationConfig config, JavaType valueType, Object valueToUpdate, FormatSchema schema, InjectableValues injectableValues)
           
protected ObjectReader(ObjectReader base, DeserializationConfig config, JavaType valueType, Object valueToUpdate, FormatSchema schema, InjectableValues injectableValues)
          Copy constructor used for building variations.
 
Method Summary
protected  Object _bind(JsonParser jp)
          Actual implementation of value reading+binding operation.
protected  Object _bindAndClose(JsonParser jp)
           
protected  JsonNode _bindAndCloseAsTree(JsonParser jp)
           
protected  JsonNode _bindAsTree(JsonParser jp)
           
protected  DeserializationContext _createDeserializationContext(JsonParser jp, DeserializationConfig cfg)
           
protected  JsonDeserializer<Object> _findRootDeserializer(DeserializationConfig cfg, JavaType valueType)
          Method called to locate deserializer for the passed root-level value.
protected static JsonToken _initForReading(JsonParser jp)
           
protected  Object _unwrapAndDeserialize(JsonParser jp, DeserializationContext ctxt, JavaType rootType, JsonDeserializer<Object> deser)
           
 JsonNode createArrayNode()
          Method for construct root level Array nodes for Tree Model instances.
 JsonNode createObjectNode()
          Method for construct root level Object nodes for Tree Model instances.
 JsonNode readTree(InputStream in)
          Method that reads content from given input source, using configuration of this reader, and binds it as JSON Tree.
 JsonNode readTree(JsonParser jp)
          Convenience method that binds content read using given parser, using configuration of this reader, except that content is bound as JSON tree instead of configured root value type.
 JsonNode readTree(Reader r)
          Method that reads content from given input source, using configuration of this reader, and binds it as JSON Tree.
 JsonNode readTree(String content)
          Method that reads content from given JSON input String, using configuration of this reader, and binds it as JSON Tree.
<T> T
readValue(byte[] src)
          Method that binds content read from given byte array, using configuration of this reader.
<T> T
readValue(byte[] src, int offset, int length)
          Method that binds content read from given byte array, using configuration of this reader.
<T> T
readValue(File src)
           
<T> T
readValue(InputStream src)
          Method that binds content read from given input source, using configuration of this reader.
<T> T
readValue(JsonNode src)
          Convenience method for converting results from given JSON tree into given value type.
<T> T
readValue(JsonParser jp)
          Method that binds content read using given parser, using configuration of this reader, including expected result type.
<T> T
readValue(JsonParser jp, Class<T> valueType)
          Convenience method that binds content read using given parser, using configuration of this reader, except that expected value type is specified with the call (instead of currently configured root type).
<T> T
readValue(JsonParser jp, JavaType valueType)
          Convenience method that binds content read using given parser, using configuration of this reader, except that expected value type is specified with the call (instead of currently configured root type).
<T> T
readValue(JsonParser jp, TypeReference<?> valueTypeRef)
          Convenience method that binds content read using given parser, using configuration of this reader, except that expected value type is specified with the call (instead of currently configured root type).
<T> T
readValue(Reader src)
          Method that binds content read from given input source, using configuration of this reader.
<T> T
readValue(String src)
          Method that binds content read from given JSON string, using configuration of this reader.
<T> T
readValue(URL src)
          Method that binds content read from given input source, using configuration of this reader.
<T> MappingIterator<T>
readValues(byte[] src, int offset, int length)
          Method for reading sequence of Objects from parser stream.
<T> MappingIterator<T>
readValues(File src)
          Method for reading sequence of Objects from parser stream.
<T> MappingIterator<T>
readValues(InputStream src)
          Method for reading sequence of Objects from parser stream.
<T> MappingIterator<T>
readValues(JsonParser jp)
          Method for reading sequence of Objects from parser stream.
<T> Iterator<T>
readValues(JsonParser jp, Class<T> valueType)
          Convenience method that is equivalent to:
<T> Iterator<T>
readValues(JsonParser jp, JavaType valueType)
          Convenience method that is equivalent to:
<T> Iterator<T>
readValues(JsonParser jp, TypeReference<?> valueTypeRef)
          Convenience method that is equivalent to:
<T> MappingIterator<T>
readValues(Reader src)
          Method for reading sequence of Objects from parser stream.
<T> MappingIterator<T>
readValues(String json)
          Method for reading sequence of Objects from parser stream.
<T> MappingIterator<T>
readValues(URL src)
          Method for reading sequence of Objects from parser stream.
 JsonParser treeAsTokens(JsonNode n)
          Method for constructing a JsonParser for reading contents of a JSON tree, as if it was external serialized JSON content.
<T> T
treeToValue(JsonNode n, Class<T> valueType)
          Convenience method for converting given JSON tree into instance of specified value type.
 Version version()
          Method that will return version information stored in and read from jar that contains this class.
 ObjectReader withInjectableValues(InjectableValues injectableValues)
          Method for constructing a new instance with configuration that uses passed InjectableValues to provide injectable values.
 ObjectReader withNodeFactory(JsonNodeFactory f)
          Method for constructing a new reader instance with configuration that uses passed JsonNodeFactory for constructing JsonNode instances.
 ObjectReader withSchema(FormatSchema schema)
          Method for constructing a new instance with configuration that passes specified FormatSchema to JsonParser that is constructed for parsing content.
 ObjectReader withType(Class<?> valueType)
          Method for constructing a new reader instance that is configured to data bind into specified type.
 ObjectReader withType(JavaType valueType)
          Method for constructing a new reader instance that is configured to data bind into specified type.
 ObjectReader withType(Type valueType)
          Method for constructing a new reader instance that is configured to data bind into specified type.
 ObjectReader withType(TypeReference<?> valueTypeRef)
          Method for constructing a new reader instance that is configured to data bind into specified type.
 ObjectReader withValueToUpdate(Object value)
          Method for constructing a new instance with configuration that updates passed Object (as root value), instead of constructing a new value.
 void writeTree(JsonGenerator jgen, JsonNode rootNode)
          NOTE: NOT implemented for ObjectReader.
 void writeValue(JsonGenerator jgen, Object value)
          Method to serialize given Java Object, using generator provided.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_config

protected final DeserializationConfig _config
General serialization configuration settings; while immutable, can use copy-constructor to create modified instances as necessary.


_unwrapRoot

protected final boolean _unwrapRoot
Flag that indicates whether root values are expected to be unwrapped or not

Since:
1.9

_rootDeserializers

protected final ConcurrentHashMap<JavaType,JsonDeserializer<Object>> _rootDeserializers
Root-level cached deserializers


_provider

protected final DeserializerProvider _provider

_jsonFactory

protected final JsonFactory _jsonFactory
Factory used for constructing JsonGenerators


_valueType

protected final JavaType _valueType
Declared type of value to instantiate during deserialization. Defines which deserializer to use; as well as base type of instance to construct if an updatable value is not configured to be used (subject to changes by embedded type information, for polymorphic types). If _valueToUpdate is non-null, only used for locating deserializer.


_valueToUpdate

protected final Object _valueToUpdate
Instance to update with data binding; if any. If null, a new instance is created, if non-null, properties of this value object will be updated instead. Note that value can be of almost any type, except not ArrayType; array types can not be modified because array size is immutable.


_schema

protected final FormatSchema _schema
When using data format that uses a schema, schema is passed to parser.

Since:
1.8

_injectableValues

protected final InjectableValues _injectableValues
Values that can be injected during deserialization, if any.

Since:
1.9
Constructor Detail

ObjectReader

protected ObjectReader(ObjectMapper mapper,
                       DeserializationConfig config)
Constructor used by ObjectMapper for initial instantiation

Since:
1.8

ObjectReader

protected ObjectReader(ObjectMapper mapper,
                       DeserializationConfig config,
                       JavaType valueType,
                       Object valueToUpdate,
                       FormatSchema schema,
                       InjectableValues injectableValues)

ObjectReader

protected ObjectReader(ObjectReader base,
                       DeserializationConfig config,
                       JavaType valueType,
                       Object valueToUpdate,
                       FormatSchema schema,
                       InjectableValues injectableValues)
Copy constructor used for building variations.

Method Detail

version

public Version version()
Method that will return version information stored in and read from jar that contains this class.

Specified by:
version in interface Versioned
Since:
1.6

withType

public ObjectReader withType(JavaType valueType)
Method for constructing a new reader instance that is configured to data bind into specified type.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.


withType

public ObjectReader withType(Class<?> valueType)
Method for constructing a new reader instance that is configured to data bind into specified type.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.


withType

public ObjectReader withType(Type valueType)
Method for constructing a new reader instance that is configured to data bind into specified type.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.


withType

public ObjectReader withType(TypeReference<?> valueTypeRef)
Method for constructing a new reader instance that is configured to data bind into specified type.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.

Since:
1.8

withNodeFactory

public ObjectReader withNodeFactory(JsonNodeFactory f)
Method for constructing a new reader instance with configuration that uses passed JsonNodeFactory for constructing JsonNode instances.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.


withValueToUpdate

public ObjectReader withValueToUpdate(Object value)
Method for constructing a new instance with configuration that updates passed Object (as root value), instead of constructing a new value.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.


withSchema

public ObjectReader withSchema(FormatSchema schema)
Method for constructing a new instance with configuration that passes specified FormatSchema to JsonParser that is constructed for parsing content.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.

Since:
1.8

withInjectableValues

public ObjectReader withInjectableValues(InjectableValues injectableValues)
Method for constructing a new instance with configuration that uses passed InjectableValues to provide injectable values.

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.

Since:
1.9

readValue

public <T> T readValue(JsonParser jp)
            throws IOException,
                   JsonProcessingException
Method that binds content read using given parser, using configuration of this reader, including expected result type. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(JsonParser jp,
                       Class<T> valueType)
            throws IOException,
                   JsonProcessingException
Convenience method that binds content read using given parser, using configuration of this reader, except that expected value type is specified with the call (instead of currently configured root type). Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Specified by:
readValue in class ObjectCodec
Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(JsonParser jp,
                       TypeReference<?> valueTypeRef)
            throws IOException,
                   JsonProcessingException
Convenience method that binds content read using given parser, using configuration of this reader, except that expected value type is specified with the call (instead of currently configured root type). Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Specified by:
readValue in class ObjectCodec
Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(JsonParser jp,
                       JavaType valueType)
            throws IOException,
                   JsonProcessingException
Convenience method that binds content read using given parser, using configuration of this reader, except that expected value type is specified with the call (instead of currently configured root type). Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Specified by:
readValue in class ObjectCodec
Throws:
IOException
JsonProcessingException

readTree

public JsonNode readTree(JsonParser jp)
                  throws IOException,
                         JsonProcessingException
Convenience method that binds content read using given parser, using configuration of this reader, except that content is bound as JSON tree instead of configured root value type.

Note: if an object was specified with withValueToUpdate(java.lang.Object), it will be ignored.

Specified by:
readTree in class ObjectCodec
Throws:
IOException
JsonProcessingException

readValues

public <T> Iterator<T> readValues(JsonParser jp,
                                  Class<T> valueType)
                       throws IOException,
                              JsonProcessingException
Convenience method that is equivalent to:
   withType(valueType).readValues(jp);

Specified by:
readValues in class ObjectCodec
Throws:
IOException
JsonProcessingException

readValues

public <T> Iterator<T> readValues(JsonParser jp,
                                  TypeReference<?> valueTypeRef)
                       throws IOException,
                              JsonProcessingException
Convenience method that is equivalent to:
   withType(valueTypeRef).readValues(jp);

Specified by:
readValues in class ObjectCodec
Throws:
IOException
JsonProcessingException

readValues

public <T> Iterator<T> readValues(JsonParser jp,
                                  JavaType valueType)
                       throws IOException,
                              JsonProcessingException
Convenience method that is equivalent to:
   withType(valueType).readValues(jp);

Specified by:
readValues in class ObjectCodec
Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(InputStream src)
            throws IOException,
                   JsonProcessingException
Method that binds content read from given input source, using configuration of this reader. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(Reader src)
            throws IOException,
                   JsonProcessingException
Method that binds content read from given input source, using configuration of this reader. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(String src)
            throws IOException,
                   JsonProcessingException
Method that binds content read from given JSON string, using configuration of this reader. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(byte[] src)
            throws IOException,
                   JsonProcessingException
Method that binds content read from given byte array, using configuration of this reader. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(byte[] src,
                       int offset,
                       int length)
            throws IOException,
                   JsonProcessingException
Method that binds content read from given byte array, using configuration of this reader. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(File src)
            throws IOException,
                   JsonProcessingException
Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(URL src)
            throws IOException,
                   JsonProcessingException
Method that binds content read from given input source, using configuration of this reader. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).

Throws:
IOException
JsonProcessingException

readValue

public <T> T readValue(JsonNode src)
            throws IOException,
                   JsonProcessingException
Convenience method for converting results from given JSON tree into given value type. Basically short-cut for:
   objectReader.readValue(src.traverse())

Throws:
IOException
JsonProcessingException

readTree

public JsonNode readTree(InputStream in)
                  throws IOException,
                         JsonProcessingException
Method that reads content from given input source, using configuration of this reader, and binds it as JSON Tree.

Note that if an object was specified with a call to withValueToUpdate(Object) it will just be ignored; result is always a newly constructed JsonNode instance.

Throws:
IOException
JsonProcessingException

readTree

public JsonNode readTree(Reader r)
                  throws IOException,
                         JsonProcessingException
Method that reads content from given input source, using configuration of this reader, and binds it as JSON Tree.

Note that if an object was specified with a call to withValueToUpdate(Object) it will just be ignored; result is always a newly constructed JsonNode instance.

Throws:
IOException
JsonProcessingException

readTree

public JsonNode readTree(String content)
                  throws IOException,
                         JsonProcessingException
Method that reads content from given JSON input String, using configuration of this reader, and binds it as JSON Tree.

Note that if an object was specified with a call to withValueToUpdate(Object) it will just be ignored; result is always a newly constructed JsonNode instance.

Throws:
IOException
JsonProcessingException

readValues

public <T> MappingIterator<T> readValues(JsonParser jp)
                              throws IOException,
                                     JsonProcessingException
Method for reading sequence of Objects from parser stream.

Throws:
IOException
JsonProcessingException
Since:
1.8

readValues

public <T> MappingIterator<T> readValues(InputStream src)
                              throws IOException,
                                     JsonProcessingException
Method for reading sequence of Objects from parser stream.

Throws:
IOException
JsonProcessingException
Since:
1.8

readValues

public <T> MappingIterator<T> readValues(Reader src)
                              throws IOException,
                                     JsonProcessingException
Method for reading sequence of Objects from parser stream.

Throws:
IOException
JsonProcessingException
Since:
1.8

readValues

public <T> MappingIterator<T> readValues(String json)
                              throws IOException,
                                     JsonProcessingException
Method for reading sequence of Objects from parser stream.

Throws:
IOException
JsonProcessingException
Since:
1.8

readValues

public <T> MappingIterator<T> readValues(byte[] src,
                                         int offset,
                                         int length)
                              throws IOException,
                                     JsonProcessingException
Method for reading sequence of Objects from parser stream.

Throws:
IOException
JsonProcessingException
Since:
1.8

readValues

public <T> MappingIterator<T> readValues(File src)
                              throws IOException,
                                     JsonProcessingException
Method for reading sequence of Objects from parser stream.

Throws:
IOException
JsonProcessingException
Since:
1.8

readValues

public <T> MappingIterator<T> readValues(URL src)
                              throws IOException,
                                     JsonProcessingException
Method for reading sequence of Objects from parser stream.

Throws:
IOException
JsonProcessingException
Since:
1.8

_bind

protected Object _bind(JsonParser jp)
                throws IOException,
                       JsonParseException,
                       JsonMappingException
Actual implementation of value reading+binding operation.

Throws:
IOException
JsonParseException
JsonMappingException

_bindAndClose

protected Object _bindAndClose(JsonParser jp)
                        throws IOException,
                               JsonParseException,
                               JsonMappingException
Throws:
IOException
JsonParseException
JsonMappingException

_bindAsTree

protected JsonNode _bindAsTree(JsonParser jp)
                        throws IOException,
                               JsonParseException,
                               JsonMappingException
Throws:
IOException
JsonParseException
JsonMappingException

_bindAndCloseAsTree

protected JsonNode _bindAndCloseAsTree(JsonParser jp)
                                throws IOException,
                                       JsonParseException,
                                       JsonMappingException
Throws:
IOException
JsonParseException
JsonMappingException

_initForReading

protected static JsonToken _initForReading(JsonParser jp)
                                    throws IOException,
                                           JsonParseException,
                                           JsonMappingException
Throws:
IOException
JsonParseException
JsonMappingException

_findRootDeserializer

protected JsonDeserializer<Object> _findRootDeserializer(DeserializationConfig cfg,
                                                         JavaType valueType)
                                                  throws JsonMappingException
Method called to locate deserializer for the passed root-level value.

Throws:
JsonMappingException

_createDeserializationContext

protected DeserializationContext _createDeserializationContext(JsonParser jp,
                                                               DeserializationConfig cfg)

_unwrapAndDeserialize

protected Object _unwrapAndDeserialize(JsonParser jp,
                                       DeserializationContext ctxt,
                                       JavaType rootType,
                                       JsonDeserializer<Object> deser)
                                throws IOException,
                                       JsonParseException,
                                       JsonMappingException
Throws:
IOException
JsonParseException
JsonMappingException

createArrayNode

public JsonNode createArrayNode()
Description copied from class: ObjectCodec
Method for construct root level Array nodes for Tree Model instances.

Specified by:
createArrayNode in class ObjectCodec

createObjectNode

public JsonNode createObjectNode()
Description copied from class: ObjectCodec
Method for construct root level Object nodes for Tree Model instances.

Specified by:
createObjectNode in class ObjectCodec

treeAsTokens

public JsonParser treeAsTokens(JsonNode n)
Description copied from class: ObjectCodec
Method for constructing a JsonParser for reading contents of a JSON tree, as if it was external serialized JSON content.

Specified by:
treeAsTokens in class ObjectCodec

treeToValue

public <T> T treeToValue(JsonNode n,
                         Class<T> valueType)
              throws IOException,
                     JsonProcessingException
Description copied from class: ObjectCodec
Convenience method for converting given JSON tree into instance of specified value type. This is equivalent to first constructing a JsonParser to iterate over contents of the tree, and using that parser for data binding.

Specified by:
treeToValue in class ObjectCodec
Throws:
IOException
JsonProcessingException

writeTree

public void writeTree(JsonGenerator jgen,
                      JsonNode rootNode)
               throws IOException,
                      JsonProcessingException
NOTE: NOT implemented for ObjectReader.

Specified by:
writeTree in class ObjectCodec
Throws:
IOException
JsonProcessingException

writeValue

public void writeValue(JsonGenerator jgen,
                       Object value)
                throws IOException,
                       JsonProcessingException
Description copied from class: ObjectCodec
Method to serialize given Java Object, using generator provided.

Specified by:
writeValue in class ObjectCodec
Throws:
IOException
JsonProcessingException