com.fasterxml.jackson.databind.deser
Class BuilderBasedDeserializer

java.lang.Object
  extended by com.fasterxml.jackson.databind.JsonDeserializer<T>
      extended by com.fasterxml.jackson.databind.deser.std.StdDeserializer<Object>
          extended by com.fasterxml.jackson.databind.deser.BeanDeserializerBase
              extended by com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer
All Implemented Interfaces:
ContextualDeserializer, ResolvableDeserializer

public class BuilderBasedDeserializer
extends BeanDeserializerBase

Class that handles deserialization using a separate Builder class, which is used for data binding and produces actual deserialized value at the end of data binding.

Note on implementation: much of code has been copied from BeanDeserializer; there may be opportunities to refactor this in future.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonDeserializer
JsonDeserializer.None
 
Field Summary
protected  AnnotatedMethod _buildMethod
           
 
Fields inherited from class com.fasterxml.jackson.databind.deser.BeanDeserializerBase
_anySetter, _backRefs, _beanProperties, _beanType, _classAnnotations, _delegateDeserializer, _externalTypeIdHandler, _ignorableProps, _ignoreAllUnknown, _injectables, _needViewProcesing, _nonStandardCreation, _objectIdReader, _propertyBasedCreator, _subDeserializers, _unwrappedPropertyHandler, _valueInstantiator, _vanillaProcessing
 
Fields inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer
_valueClass
 
Constructor Summary
  BuilderBasedDeserializer(BeanDeserializerBuilder builder, BeanDescription beanDesc, BeanPropertyMap properties, Map<String,SettableBeanProperty> backRefs, HashSet<String> ignorableProps, boolean ignoreAllUnknown, boolean hasViews)
          Constructor used by BeanDeserializerBuilder.
protected BuilderBasedDeserializer(BuilderBasedDeserializer src)
          Copy-constructor that can be used by sub-classes to allow copy-on-write styling copying of settings of an existing instance.
protected BuilderBasedDeserializer(BuilderBasedDeserializer src, boolean ignoreAllUnknown)
           
  BuilderBasedDeserializer(BuilderBasedDeserializer src, HashSet<String> ignorableProps)
           
protected BuilderBasedDeserializer(BuilderBasedDeserializer src, NameTransformer unwrapper)
           
  BuilderBasedDeserializer(BuilderBasedDeserializer src, ObjectIdReader oir)
           
 
Method Summary
protected  Object _deserialize(JsonParser jp, DeserializationContext ctxt, Object builder)
           
protected  Object _deserializeUsingPropertyBased(JsonParser jp, DeserializationContext ctxt)
          Method called to deserialize bean using "property-based creator": this means that a non-default constructor or factory method is called, and then possibly other setters.
 Object deserialize(JsonParser jp, DeserializationContext ctxt)
          Main deserialization method for bean-based objects (POJOs).
 Object deserialize(JsonParser jp, DeserializationContext ctxt, Object builder)
          Secondary deserialization method, called in cases where POJO instance is created as part of deserialization, potentially after collecting some or all of the properties to set.
 Object deserializeFromArray(JsonParser jp, DeserializationContext ctxt)
           
 Object deserializeFromBoolean(JsonParser jp, DeserializationContext ctxt)
          Method called to deserialize POJO value from a JSON boolean value (true, false)
 Object deserializeFromDouble(JsonParser jp, DeserializationContext ctxt)
          Method called to deserialize POJO value from a JSON floating-point number.
 Object deserializeFromNumber(JsonParser jp, DeserializationContext ctxt)
           
 Object deserializeFromObject(JsonParser jp, DeserializationContext ctxt)
          General version used when handling needs more advanced features.
protected  Object deserializeFromObjectUsingNonDefault(JsonParser jp, DeserializationContext ctxt)
           
 Object deserializeFromString(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeUsingPropertyBasedWithExternalTypeId(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeUsingPropertyBasedWithUnwrapped(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeWithExternalTypeId(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeWithExternalTypeId(JsonParser jp, DeserializationContext ctxt, Object bean)
           
protected  Object deserializeWithUnwrapped(JsonParser jp, DeserializationContext ctxt)
          Method called when there are declared "unwrapped" properties which need special handling
protected  Object deserializeWithUnwrapped(JsonParser jp, DeserializationContext ctxt, Object bean)
           
protected  Object deserializeWithView(JsonParser jp, DeserializationContext ctxt, Object bean, Class<?> activeView)
           
protected  Object finishBuild(DeserializationContext ctxt, Object builder)
           
protected  Object handlePolymorphic(JsonParser jp, DeserializationContext ctxt, Object bean, TokenBuffer unknownTokens)
          Method called in cases where we may have polymorphic deserialization case: that is, type of Creator-constructed bean is not the type of deserializer itself.
 JsonDeserializer<Object> unwrappingDeserializer(NameTransformer unwrapper)
          Method that will return deserializer instance that is able to handle "unwrapped" value instances If no unwrapped instance can be constructed, will simply return this object as-is.
 BuilderBasedDeserializer withIgnorableProperties(HashSet<String> ignorableProps)
           
 BuilderBasedDeserializer withObjectIdReader(ObjectIdReader oir)
           
 
Methods inherited from class com.fasterxml.jackson.databind.deser.BeanDeserializerBase
_findSubclassDeserializer, _resolveInnerClassValuedProperty, _resolveManagedReferenceProperty, _resolveUnwrappedProperty, createContextual, creatorProperties, deserializeFromObjectId, deserializeWithType, findBackReference, findProperty, getBeanClass, getKnownPropertyNames, getObjectIdReader, getPropertyCount, getValueInstantiator, getValueType, handleUnknownProperties, handleUnknownProperty, hasProperty, hasViews, injectValues, isCachable, properties, resolve, wrapAndThrow, wrapAndThrow, wrapInstantiationProblem
 
Methods inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer
_parseBoolean, _parseBooleanFromNumber, _parseBooleanPrimitive, _parseByte, _parseDate, _parseDouble, _parseDoublePrimitive, _parseFloat, _parseFloatPrimitive, _parseInteger, _parseIntPrimitive, _parseLong, _parseLongPrimitive, _parseShort, _parseShortPrimitive, findDeserializer, getValueClass, isDefaultDeserializer, isDefaultKeyDeserializer, parseDouble
 
Methods inherited from class com.fasterxml.jackson.databind.JsonDeserializer
getEmptyValue, getNullValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_buildMethod

protected final AnnotatedMethod _buildMethod
Constructor Detail

BuilderBasedDeserializer

public BuilderBasedDeserializer(BeanDeserializerBuilder builder,
                                BeanDescription beanDesc,
                                BeanPropertyMap properties,
                                Map<String,SettableBeanProperty> backRefs,
                                HashSet<String> ignorableProps,
                                boolean ignoreAllUnknown,
                                boolean hasViews)
Constructor used by BeanDeserializerBuilder.


BuilderBasedDeserializer

protected BuilderBasedDeserializer(BuilderBasedDeserializer src)
Copy-constructor that can be used by sub-classes to allow copy-on-write styling copying of settings of an existing instance.


BuilderBasedDeserializer

protected BuilderBasedDeserializer(BuilderBasedDeserializer src,
                                   boolean ignoreAllUnknown)

BuilderBasedDeserializer

protected BuilderBasedDeserializer(BuilderBasedDeserializer src,
                                   NameTransformer unwrapper)

BuilderBasedDeserializer

public BuilderBasedDeserializer(BuilderBasedDeserializer src,
                                ObjectIdReader oir)

BuilderBasedDeserializer

public BuilderBasedDeserializer(BuilderBasedDeserializer src,
                                HashSet<String> ignorableProps)
Method Detail

unwrappingDeserializer

public JsonDeserializer<Object> unwrappingDeserializer(NameTransformer unwrapper)
Description copied from class: JsonDeserializer
Method that will return deserializer instance that is able to handle "unwrapped" value instances If no unwrapped instance can be constructed, will simply return this object as-is.

Default implementation just returns 'this' indicating that no unwrapped variant exists

Specified by:
unwrappingDeserializer in class BeanDeserializerBase

withObjectIdReader

public BuilderBasedDeserializer withObjectIdReader(ObjectIdReader oir)
Specified by:
withObjectIdReader in class BeanDeserializerBase

withIgnorableProperties

public BuilderBasedDeserializer withIgnorableProperties(HashSet<String> ignorableProps)
Specified by:
withIgnorableProperties in class BeanDeserializerBase

finishBuild

protected final Object finishBuild(DeserializationContext ctxt,
                                   Object builder)
                            throws IOException
Throws:
IOException

deserialize

public final Object deserialize(JsonParser jp,
                                DeserializationContext ctxt)
                         throws IOException,
                                JsonProcessingException
Main deserialization method for bean-based objects (POJOs).

Specified by:
deserialize in class JsonDeserializer<Object>
Parameters:
jp - Parsed used for reading JSON content
ctxt - Context that can be used to access information about this deserialization activity.
Returns:
Deserializer value
Throws:
IOException
JsonProcessingException

deserialize

public Object deserialize(JsonParser jp,
                          DeserializationContext ctxt,
                          Object builder)
                   throws IOException,
                          JsonProcessingException
Secondary deserialization method, called in cases where POJO instance is created as part of deserialization, potentially after collecting some or all of the properties to set.

Overrides:
deserialize in class JsonDeserializer<Object>
Throws:
IOException
JsonProcessingException

_deserialize

protected final Object _deserialize(JsonParser jp,
                                    DeserializationContext ctxt,
                                    Object builder)
                             throws IOException,
                                    JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeFromObject

public Object deserializeFromObject(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
General version used when handling needs more advanced features.

Throws:
IOException
JsonProcessingException

deserializeFromObjectUsingNonDefault

protected Object deserializeFromObjectUsingNonDefault(JsonParser jp,
                                                      DeserializationContext ctxt)
                                               throws IOException,
                                                      JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeFromString

public Object deserializeFromString(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeFromNumber

public Object deserializeFromNumber(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeFromDouble

public Object deserializeFromDouble(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
Method called to deserialize POJO value from a JSON floating-point number.

Throws:
IOException
JsonProcessingException

deserializeFromBoolean

public Object deserializeFromBoolean(JsonParser jp,
                                     DeserializationContext ctxt)
                              throws IOException,
                                     JsonProcessingException
Method called to deserialize POJO value from a JSON boolean value (true, false)

Throws:
IOException
JsonProcessingException

deserializeFromArray

public Object deserializeFromArray(JsonParser jp,
                                   DeserializationContext ctxt)
                            throws IOException,
                                   JsonProcessingException
Throws:
IOException
JsonProcessingException

_deserializeUsingPropertyBased

protected final Object _deserializeUsingPropertyBased(JsonParser jp,
                                                      DeserializationContext ctxt)
                                               throws IOException,
                                                      JsonProcessingException
Method called to deserialize bean using "property-based creator": this means that a non-default constructor or factory method is called, and then possibly other setters. The trick is that values for creator method need to be buffered, first; and due to non-guaranteed ordering possibly some other properties as well.

Throws:
IOException
JsonProcessingException

handlePolymorphic

protected Object handlePolymorphic(JsonParser jp,
                                   DeserializationContext ctxt,
                                   Object bean,
                                   TokenBuffer unknownTokens)
                            throws IOException,
                                   JsonProcessingException
Method called in cases where we may have polymorphic deserialization case: that is, type of Creator-constructed bean is not the type of deserializer itself. It should be a sub-class or implementation class; either way, we may have more specific deserializer to use for handling it.

Parameters:
jp - (optional) If not null, parser that has more properties to handle (in addition to buffered properties); if null, all properties are passed in buffer
Throws:
IOException
JsonProcessingException

deserializeWithView

protected final Object deserializeWithView(JsonParser jp,
                                           DeserializationContext ctxt,
                                           Object bean,
                                           Class<?> activeView)
                                    throws IOException,
                                           JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeWithUnwrapped

protected Object deserializeWithUnwrapped(JsonParser jp,
                                          DeserializationContext ctxt)
                                   throws IOException,
                                          JsonProcessingException
Method called when there are declared "unwrapped" properties which need special handling

Throws:
IOException
JsonProcessingException

deserializeWithUnwrapped

protected Object deserializeWithUnwrapped(JsonParser jp,
                                          DeserializationContext ctxt,
                                          Object bean)
                                   throws IOException,
                                          JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeUsingPropertyBasedWithUnwrapped

protected Object deserializeUsingPropertyBasedWithUnwrapped(JsonParser jp,
                                                            DeserializationContext ctxt)
                                                     throws IOException,
                                                            JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeWithExternalTypeId

protected Object deserializeWithExternalTypeId(JsonParser jp,
                                               DeserializationContext ctxt)
                                        throws IOException,
                                               JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeWithExternalTypeId

protected Object deserializeWithExternalTypeId(JsonParser jp,
                                               DeserializationContext ctxt,
                                               Object bean)
                                        throws IOException,
                                               JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeUsingPropertyBasedWithExternalTypeId

protected Object deserializeUsingPropertyBasedWithExternalTypeId(JsonParser jp,
                                                                 DeserializationContext ctxt)
                                                          throws IOException,
                                                                 JsonProcessingException
Throws:
IOException
JsonProcessingException


Copyright © 2012 fasterxml.com. All Rights Reserved.