Class ContainerDeserializerBase<T>

java.lang.Object
tools.jackson.databind.ValueDeserializer<T>
tools.jackson.databind.deser.std.StdDeserializer<T>
tools.jackson.databind.deser.std.ContainerDeserializerBase<T>
All Implemented Interfaces:
NullValueProvider, ValueInstantiator.Gettable
Direct Known Subclasses:
CollectionDeserializer, EnumMapDeserializer, MapDeserializer, MapEntryDeserializer, ObjectArrayDeserializer, StringCollectionDeserializer

public abstract class ContainerDeserializerBase<T> extends StdDeserializer<T> implements ValueInstantiator.Gettable
Intermediate base deserializer class that adds more shared accessor so that other classes can access information about contained (value) types
  • Field Details

    • _containerType

      protected final JavaType _containerType
    • _nullProvider

      protected final NullValueProvider _nullProvider
      Handler we need for dealing with nulls.
    • _skipNullValues

      protected final boolean _skipNullValues
      Marker flag set if the _nullProvider indicates that all null content values should be skipped (instead of being possibly converted).
    • _unwrapSingle

      protected final Boolean _unwrapSingle
      Specific override for this instance (from proper, or global per-type overrides) to indicate whether single value may be taken to mean an unwrapped one-element array or not. If null, left to global defaults.
  • Constructor Details

  • Method Details

    • getValueType

      public JavaType getValueType()
      Description copied from class: StdDeserializer
      Exact structured type this deserializer handles, if known.
      Overrides:
      getValueType in class StdDeserializer<T>
    • supportsUpdate

      public Boolean supportsUpdate(DeserializationConfig config)
      Description copied from class: ValueDeserializer
      Introspection method that may be called to see whether deserializer supports update of an existing value (aka "merging") or not. Return value should either be Boolean.FALSE if update is not supported at all (immutable values); Boolean.TRUE if update should usually work (regular POJOs, for example), or null if this is either not known, or may sometimes work.

      Information gathered is typically used to either prevent merging update for property (either by skipping, if based on global defaults; or by exception during deserializer construction if explicit attempt made) if Boolean.FALSE returned, or inclusion if Boolean.TRUE is specified. If "unknown" case (null returned) behavior is to exclude property if global defaults used; or to allow if explicit per-type or property merging is defined.

      Default implementation returns null to allow explicit per-type or per-property attempts.

      Overrides:
      supportsUpdate in class ValueDeserializer<T>
    • findBackReference

      public SettableBeanProperty findBackReference(String refName)
      Description copied from class: ValueDeserializer
      Method needed by BeanDeserializerFactory to properly link managed- and back-reference pairs.
      Overrides:
      findBackReference in class ValueDeserializer<T>
    • getContentType

      public JavaType getContentType()
      Accessor for declared type of contained value elements; either exact type, or one of its supertypes.
    • getContentDeserializer

      public abstract ValueDeserializer<Object> getContentDeserializer()
      Accesor for deserializer use for deserializing content values.
    • getEmptyAccessPattern

      public AccessPattern getEmptyAccessPattern()
      Description copied from class: ValueDeserializer
      This method may be called in conjunction with calls to ValueDeserializer.getEmptyValue(DeserializationContext), to check whether it needs to be called just once (static values), or each time empty value is needed.
      Overrides:
      getEmptyAccessPattern in class ValueDeserializer<T>
    • getEmptyValue

      public Object getEmptyValue(DeserializationContext ctxt) throws tools.jackson.core.JacksonException
      Description copied from class: ValueDeserializer
      Method called to determine value to be used for "empty" values (most commonly when deserializing from empty JSON Strings). Usually this is same as ValueDeserializer.getNullValue(DeserializationContext) (which in turn is usually simply Java null), but it can be overridden for specific types. Or, if type should never be converted from empty String, method can also throw an exception.

      This method may be called once, or multiple times, depending on what ValueDeserializer.getEmptyAccessPattern() returns.

      Default implementation simply calls ValueDeserializer.getNullValue(DeserializationContext) and returns value.

      Overrides:
      getEmptyValue in class ValueDeserializer<T>
      Throws:
      tools.jackson.core.JacksonException
    • wrapAndThrow

      protected <BOGUS> BOGUS wrapAndThrow(DeserializationContext ctxt, Throwable t, Object ref, String key) throws tools.jackson.core.JacksonException
      Helper method called by various Map(-like) deserializers when encountering a processing problem (whether from underlying parser, i/o, or something else).
      Throws:
      tools.jackson.core.JacksonException