com.fasterxml.jackson.databind.deser.std

## Class PrimitiveArrayDeserializers<T>

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonDeserializer<T>
  - - com.fasterxml.jackson.databind.deser.std.StdDeserializer<T>
    - - com.fasterxml.jackson.databind.deser.std.PrimitiveArrayDeserializers<T>

- All Implemented Interfaces:
    ContextualDeserializer, NullValueProvider, ValueInstantiator.Gettable, Serializable

      public abstract class PrimitiveArrayDeserializers<T>
      extends StdDeserializer<T>
      implements ContextualDeserializer

  Container for deserializers used for instantiating "primitive arrays", arrays that contain non-object java primitive types.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonDeserializer

      `JsonDeserializer.None`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected NullValueProvider` | `_nuller` Flag that indicates need for special handling; either failing (throw exception) or skipping
    `protected 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.

    - ### Fields inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer

      `_valueClass, _valueType, F_MASK_ACCEPT_ARRAYS, F_MASK_INT_COERCIONS`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `PrimitiveArrayDeserializers(Class<T> cls)`
    `protected` | `PrimitiveArrayDeserializers(PrimitiveArrayDeserializers<?> base, NullValueProvider nuller, Boolean unwrapSingle)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract T` | `_concat(T oldValue, T newValue)`
    `protected abstract T` | `_constructEmpty()`
    `protected void` | `_failOnNull(DeserializationContext ctxt)`
    `JsonDeserializer<?>` | `createContextual(DeserializationContext ctxt, BeanProperty property)` Method called to see if a different (or differently configured) deserializer is needed to deserialize values of specified property.
    `T` | `deserialize(JsonParser p, DeserializationContext ctxt, T existing)` Alternate deserialization method (compared to the most commonly used, `JsonDeserializer.deserialize(JsonParser, DeserializationContext)`), which takes in initialized value instance, to be configured and/or populated by deserializer.
    `Object` | `deserializeWithType(JsonParser p, DeserializationContext ctxt, TypeDeserializer typeDeserializer)` Base implementation that does not assume specific type inclusion mechanism.
    `static JsonDeserializer<?>` | `forType(Class<?> rawType)`
    `AccessPattern` | `getEmptyAccessPattern()` This method may be called in conjunction with calls to `JsonDeserializer.getEmptyValue(DeserializationContext)`, to check whether it needs to be called just once (static values), or each time empty value is needed.
    `Object` | `getEmptyValue(DeserializationContext ctxt)` Method called to determine value to be used for "empty" values (most commonly when deserializing from empty JSON Strings).
    `protected T` | `handleNonArray(JsonParser p, DeserializationContext ctxt)`
    `protected abstract T` | `handleSingleElementUnwrapped(JsonParser p, DeserializationContext ctxt)`
    `LogicalType` | `logicalType()` Method for accessing logical type of values this deserializer produces.
    `Boolean` | `supportsUpdate(DeserializationConfig config)` Introspection method that may be called to see whether deserializer supports update of an existing value (aka "merging") or not.
    `protected abstract PrimitiveArrayDeserializers<?>` | `withResolved(NullValueProvider nuller, Boolean unwrapSingle)`

    - ### Methods inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer

      `_byteOverflow, _checkCoercionFail, _checkDoubleSpecialValue, _checkFloatSpecialValue, _checkFloatToIntCoercion, _checkFromStringCoercion, _checkFromStringCoercion, _checkTextualNull, _coerceBooleanFromInt, _coercedTypeDesc, _coerceEmptyString, _coerceIntegral, _coerceNullToken, _coerceTextualNull, _deserializeFromArray, _deserializeFromEmpty, _deserializeFromEmptyString, _deserializeFromString, _deserializeWrappedValue, _failDoubleToIntCoercion, _findCoercionFromBlankString, _findCoercionFromEmptyArray, _findCoercionFromEmptyString, _findNullProvider, _hasTextualNull, _intOverflow, _isBlank, _isEmptyOrTextualNull, _isFalse, _isIntNumber, _isNaN, _isNegInf, _isPosInf, _isTrue, _neitherNull, _nonNullNumber, _parseBoolean, _parseBooleanFromInt, _parseBooleanPrimitive, _parseBooleanPrimitive, _parseBytePrimitive, _parseDate, _parseDate, _parseDateFromArray, _parseDouble, _parseDoublePrimitive, _parseDoublePrimitive, _parseFloatPrimitive, _parseFloatPrimitive, _parseInteger, _parseIntPrimitive, _parseIntPrimitive, _parseLong, _parseLongPrimitive, _parseLongPrimitive, _parseShortPrimitive, _parseString, _reportFailedNullCoerce, _shortOverflow, _verifyEndArrayForSingle, _verifyNullForPrimitive, _verifyNullForPrimitiveCoercion, _verifyNullForScalarCoercion, _verifyNumberForScalarCoercion, _verifyStringForScalarCoercion, findContentNullProvider, findContentNullStyle, findConvertingContentDeserializer, findDeserializer, findFormatFeature, findFormatOverrides, findValueNullProvider, getValueClass, getValueInstantiator, getValueType, getValueType, handledType, handleMissingEndArrayForSingle, handleUnknownProperty, isDefaultDeserializer, isDefaultKeyDeserializer`

    - ### Methods inherited from class com.fasterxml.jackson.databind.JsonDeserializer

      `deserialize, deserializeWithType, findBackReference, getDelegatee, getEmptyValue, getKnownPropertyNames, getNullAccessPattern, getNullValue, getNullValue, getObjectIdReader, isCachable, replaceDelegatee, unwrappingDeserializer`

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### _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.
      Since:
        2.7

    - #### _nuller

          protected final NullValueProvider _nuller

      Flag that indicates need for special handling; either failing (throw exception) or skipping

  - ### Constructor Detail

    - #### PrimitiveArrayDeserializers

          protected PrimitiveArrayDeserializers(Class<T> cls)

    - #### PrimitiveArrayDeserializers

          protected PrimitiveArrayDeserializers(PrimitiveArrayDeserializers<?> base,
                                                NullValueProvider nuller,
                                                Boolean unwrapSingle)

      Since:
        2.7

  - ### Method Detail

    - #### forType

          public static JsonDeserializer<?> forType(Class<?> rawType)

    - #### createContextual

          public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
                                                      BeanProperty property)
                                               throws JsonMappingException

      Description copied from interface: `ContextualDeserializer`
      Method called to see if a different (or differently configured) deserializer is needed to deserialize values of specified property. Note that instance that this method is called on is typically shared one and as a result method should NOT modify this instance but rather construct and return a new instance. This instance should only be returned as-is, in case it is already suitable for use.
      Specified by:
        `createContextual` in interface `ContextualDeserializer`
      Parameters:
        `ctxt` - Deserialization context to access configuration, additional deserializers that may be needed by this deserializer
        `property` - Method, field or constructor parameter that represents the property (and is used to assign deserialized value). Should be available; but there may be cases where caller cannot provide it and null is passed instead (in which case impls usually pass 'this' deserializer as is)
      Returns:
        Deserializer to use for deserializing values of specified property; may be this instance or a new instance.
      Throws:
        `JsonMappingException`

    - #### _concat

          protected abstract T _concat(T oldValue,
                                       T newValue)

      Since:
        2.9

    - #### handleSingleElementUnwrapped

          protected abstract T handleSingleElementUnwrapped(JsonParser p,
                                                            DeserializationContext ctxt)
                                                     throws IOException

      Throws:
        `IOException`

    - #### withResolved

          protected abstract PrimitiveArrayDeserializers<?> withResolved(NullValueProvider nuller,
                                                                         Boolean unwrapSingle)

      Since:
        2.9

    - #### _constructEmpty

          protected abstract T _constructEmpty()

    - #### logicalType

          public LogicalType logicalType()

      Description copied from class: `JsonDeserializer`
      Method for accessing logical type of values this deserializer produces. Typically used for further configuring handling of values, for example, to find which coercions are legal.
      Overrides:
        `logicalType` in class `JsonDeserializer<T>`
      Returns:
        Logical type of values this deserializer produces, if known; `null` if not

    - #### supportsUpdate

          public Boolean supportsUpdate(DeserializationConfig config)

      Description copied from class: `JsonDeserializer`
      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 deserialization 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 `JsonDeserializer<T>`

    - #### getEmptyAccessPattern

          public AccessPattern getEmptyAccessPattern()

      Description copied from class: `JsonDeserializer`
      This method may be called in conjunction with calls to `JsonDeserializer.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 `JsonDeserializer<T>`

    - #### getEmptyValue

          public Object getEmptyValue(DeserializationContext ctxt)
                               throws JsonMappingException

      Description copied from class: `JsonDeserializer`
      Method called to determine value to be used for "empty" values (most commonly when deserializing from empty JSON Strings). Usually this is same as `JsonDeserializer.getNullValue(com.fasterxml.jackson.databind.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 `JsonDeserializer.getEmptyAccessPattern()` returns.

      Default implementation simply calls `JsonDeserializer.getNullValue(com.fasterxml.jackson.databind.DeserializationContext)` and returns value.

      Overrides:
        `getEmptyValue` in class `JsonDeserializer<T>`
      Throws:
        `JsonMappingException`

    - #### deserializeWithType

          public Object deserializeWithType(JsonParser p,
                                            DeserializationContext ctxt,
                                            TypeDeserializer typeDeserializer)
                                     throws IOException

      Description copied from class: `StdDeserializer`
      Base implementation that does not assume specific type inclusion mechanism. Sub-classes are expected to override this method if they are to handle type information.
      Overrides:
        `deserializeWithType` in class `StdDeserializer<T>`
        `typeDeserializer` - Deserializer to use for handling type information
      Throws:
        `IOException`

    - #### deserialize

          public T deserialize(JsonParser p,
                               DeserializationContext ctxt,
                               T existing)
                        throws IOException

      Description copied from class: `JsonDeserializer`
      Alternate deserialization method (compared to the most commonly used, `JsonDeserializer.deserialize(JsonParser, DeserializationContext)`), which takes in initialized value instance, to be configured and/or populated by deserializer. Method is not necessarily used (or supported) by all types (it will not work for immutable types, for obvious reasons): most commonly it is used for Collections and Maps. It may be used both with "updating readers" (for POJOs) and when Collections and Maps use "getter as setter".

      Default implementation just throws `UnsupportedOperationException`, to indicate that types that do not explicitly add support do not necessarily support update-existing-value operation (esp. immutable types)

      Overrides:
        `deserialize` in class `JsonDeserializer<T>`
      Throws:
        `IOException`

    - #### handleNonArray

          protected T handleNonArray(JsonParser p,
                                     DeserializationContext ctxt)
                              throws IOException

      Throws:
        `IOException`

    - #### _failOnNull

          protected void _failOnNull(DeserializationContext ctxt)
                              throws IOException

      Throws:
        `IOException`

Copyright © 2008–2020 FasterXML. All rights reserved.