Package com.fasterxml.jackson.datatype.jsr310.deser

# Class InstantDeserializer<T extends Temporal>

java.lang.Object
com.fasterxml.jackson.databind.JsonDeserializer<T>
com.fasterxml.jackson.databind.deser.std.StdDeserializer<T>
com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer<T>
com.fasterxml.jackson.datatype.jsr310.deser.JSR310DateTimeDeserializerBase<T>
com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer<T>

All Implemented Interfaces:
  `com.fasterxml.jackson.databind.deser.ContextualDeserializer`, `com.fasterxml.jackson.databind.deser.NullValueProvider`, `com.fasterxml.jackson.databind.deser.ValueInstantiator.Gettable`, `Serializable`

public class InstantDeserializer<T extends Temporal> extends JSR310DateTimeDeserializerBase<T>
Deserializer for Java 8 temporal `Instant`s, `OffsetDateTime`, and `ZonedDateTime`s.

Since:
  2.2
Author:
  Nick Williams
See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`InstantDeserializer.FromDecimalArguments`
`static class`
`InstantDeserializer.FromIntegerArguments`

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

`com.fasterxml.jackson.databind.JsonDeserializer.None`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final Boolean`
`_adjustToContextTZOverride`
Flag for `JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE`
`protected final boolean`
`_isLenient`
Flag that indicates what leniency setting is enabled for this deserializer (either due `JsonFormat.Shape` annotation on property or class, or due to per-type "config override", or from global settings): leniency/strictness has effect on accepting some non-default input value representations (such as integer values for dates).
`protected final BiFunction<T,ZoneId,T>`
`adjust`
`protected final Function<InstantDeserializer.FromIntegerArguments,T>`
`fromMilliseconds`
`protected final Function<InstantDeserializer.FromDecimalArguments,T>`
`fromNanoseconds`
`static final InstantDeserializer<Instant>`
`INSTANT`
`protected static final Pattern`
`ISO8601_COLONLESS_OFFSET_REGEX`
Constants used to check if ISO 8601 time string is colonless.
`static final InstantDeserializer<OffsetDateTime>`
`OFFSET_DATE_TIME`
`protected final Function<TemporalAccessor,T>`
`parsedToValue`
`protected final boolean`
`replaceZeroOffsetAsZ`
In case of vanilla `Instant` we seem to need to translate "+0000 | +00:00 | +00" timezone designator into plain "Z" for some reason; see [jackson-modules-java8#18] for more info
`static final InstantDeserializer<ZonedDateTime>`
`ZONED_DATE_TIME`

### Fields inherited from class com.fasterxml.jackson.datatype.jsr310.deser.JSR310DateTimeDeserializerBase

`_formatter, _shape`

### 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
Description
`protected`
`InstantDeserializer(InstantDeserializer<T> base, Boolean adjustToContextTimezoneOverride)`
`protected`
`InstantDeserializer(InstantDeserializer<T> base, DateTimeFormatter f)`
`protected`
`InstantDeserializer(InstantDeserializer<T> base, DateTimeFormatter f, Boolean leniency)`
`protected`
`InstantDeserializer(Class<T> supportedType, DateTimeFormatter formatter, Function<TemporalAccessor,T> parsedToValue, Function<InstantDeserializer.FromIntegerArguments,T> fromMilliseconds, Function<InstantDeserializer.FromDecimalArguments,T> fromNanoseconds, BiFunction<T,ZoneId,T> adjust, boolean replaceZeroOffsetAsZ)`

## Method Summary

Modifier and Type
Method
Description
`protected int`
`_countPeriods(String str)`
`protected T`
`_failForNotLenient(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.core.JsonToken expToken)`
`protected T`
`_fromDecimal(com.fasterxml.jackson.databind.DeserializationContext context, BigDecimal value)`
`protected T`
`_fromEmptyString(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt, String str)`
Replacement for `isLenient()` for specific case of deserialization from empty or blank String.
`protected T`
`_fromLong(com.fasterxml.jackson.databind.DeserializationContext context, long timestamp)`
`protected T`
`_fromString(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt, String string0)`
`protected <R> R`
`_handleDateTimeException(com.fasterxml.jackson.databind.DeserializationContext context, DateTimeException e0, String value)`
`protected <R> R`
`_handleUnexpectedToken(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.core.JsonToken... expTypes)`
`protected <R> R`
`_handleUnexpectedToken(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, String message, Object... args)`
`protected boolean`
`_isValidTimestampString(String str)`
`protected DateTimeException`
`_peelDTE(DateTimeException e)`
Helper method used to peel off spurious wrappings of DateTimeException
`protected <BOGUS> BOGUS`
`_reportWrongToken(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonToken... expTypes)`
`protected <BOGUS> BOGUS`
`_reportWrongToken(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonToken exp, String unit)`
`protected JSR310DateTimeDeserializerBase<?>`
`_withFormatOverrides(com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.databind.BeanProperty property, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides)`
`T`
`deserialize(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context)`
`Object`
`deserializeWithType(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.databind.jsontype.TypeDeserializer typeDeserializer)`
`protected boolean`
`isLenient()`
`com.fasterxml.jackson.databind.type.LogicalType`
`logicalType()`
`protected boolean`
`shouldAdjustToContextTimezone(com.fasterxml.jackson.databind.DeserializationContext context)`
`protected InstantDeserializer<T>`
`withDateFormat(DateTimeFormatter dtf)`
`protected InstantDeserializer<T>`
`withLeniency(Boolean leniency)`
`protected InstantDeserializer<T>`
`withShape(com.fasterxml.jackson.annotation.JsonFormat.Shape shape)`

### Methods inherited from class com.fasterxml.jackson.datatype.jsr310.deser.JSR310DateTimeDeserializerBase

`_throwNoNumericTimestampNeedTimeZone, createContextual`

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

`deserialize, getEmptyAccessPattern, getNullAccessPattern, supportsUpdate`

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

`_byteOverflow, _checkBooleanToStringCoercion, _checkCoercionFail, _checkDoubleSpecialValue, _checkFloatSpecialValue, _checkFloatToIntCoercion, _checkFloatToStringCoercion, _checkFromStringCoercion, _checkFromStringCoercion, _checkIntToFloatCoercion, _checkIntToStringCoercion, _checkTextualNull, _checkToStringCoercion, _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, _parseDouble, _parseDoublePrimitive, _parseDoublePrimitive, _parseDoublePrimitive, _parseFloatPrimitive, _parseFloatPrimitive, _parseFloatPrimitive, _parseInteger, _parseInteger, _parseIntPrimitive, _parseIntPrimitive, _parseLong, _parseLong, _parseLongPrimitive, _parseLongPrimitive, _parseShortPrimitive, _parseString, _parseString, _reportFailedNullCoerce, _shortOverflow, _verifyEndArrayForSingle, _verifyNullForPrimitive, _verifyNullForPrimitiveCoercion, _verifyNullForScalarCoercion, _verifyNumberForScalarCoercion, _verifyStringForScalarCoercion, findContentNullProvider, findContentNullStyle, findConvertingContentDeserializer, findDeserializer, findFormatFeature, findFormatOverrides, findValueNullProvider, getValueClass, getValueInstantiator, getValueType, getValueType, handledType, handleMissingEndArrayForSingle, handleNestedArrayForSingle, handleUnknownProperty, isDefaultDeserializer, isDefaultKeyDeserializer`

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

`deserializeWithType, findBackReference, getAbsentValue, getDelegatee, getEmptyValue, getEmptyValue, getKnownPropertyNames, 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 Details

### ISO8601_COLONLESS_OFFSET_REGEX

protected static final Pattern ISO8601_COLONLESS_OFFSET_REGEX
Constants used to check if ISO 8601 time string is colonless. See [jackson-modules-java8#131]

Since:
  2.13

### INSTANT

public static final InstantDeserializer<Instant> INSTANT

### OFFSET_DATE_TIME

public static final InstantDeserializer<OffsetDateTime> OFFSET_DATE_TIME

### ZONED_DATE_TIME

public static final InstantDeserializer<ZonedDateTime> ZONED_DATE_TIME

### fromMilliseconds

protected final Function<InstantDeserializer.FromIntegerArguments,T extends Temporal> fromMilliseconds

### fromNanoseconds

protected final Function<InstantDeserializer.FromDecimalArguments,T extends Temporal> fromNanoseconds

### parsedToValue

protected final Function<TemporalAccessor,T extends Temporal> parsedToValue

### adjust

protected final BiFunction<T extends Temporal,ZoneId,T extends Temporal> adjust

### replaceZeroOffsetAsZ

protected final boolean replaceZeroOffsetAsZ
In case of vanilla `Instant` we seem to need to translate "+0000 | +00:00 | +00" timezone designator into plain "Z" for some reason; see [jackson-modules-java8#18] for more info

Since:
  2.9.0

### _adjustToContextTZOverride

protected final Boolean _adjustToContextTZOverride
Flag for `JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE`

Since:
  2.8

### _isLenient

protected final boolean _isLenient
Flag that indicates what leniency setting is enabled for this deserializer (either due `JsonFormat.Shape` annotation on property or class, or due to per-type "config override", or from global settings): leniency/strictness has effect on accepting some non-default input value representations (such as integer values for dates).

Note that global default setting is for leniency to be enabled, for Jackson 2.x, and has to be explicitly change to force strict handling: this is to keep backwards compatibility with earlier versions.

Note that with 2.12 and later coercion settings are moving to `CoercionConfig`, instead of simple yes/no leniency setting.

Since:
  2.11

## Constructor Details

### InstantDeserializer

protected InstantDeserializer(Class<T> supportedType, DateTimeFormatter formatter, Function<TemporalAccessor,T> parsedToValue, Function<InstantDeserializer.FromIntegerArguments,T> fromMilliseconds, Function<InstantDeserializer.FromDecimalArguments,T> fromNanoseconds, BiFunction<T,ZoneId,T> adjust, boolean replaceZeroOffsetAsZ)

### InstantDeserializer

protected InstantDeserializer(InstantDeserializer<T> base, DateTimeFormatter f)

### InstantDeserializer

protected InstantDeserializer(InstantDeserializer<T> base, Boolean adjustToContextTimezoneOverride)

### InstantDeserializer

protected InstantDeserializer(InstantDeserializer<T> base, DateTimeFormatter f, Boolean leniency)

## Method Details

### withDateFormat

protected InstantDeserializer<T> withDateFormat(DateTimeFormatter dtf)

Specified by:
  `withDateFormat` in class `JSR310DateTimeDeserializerBase<T extends Temporal>`

### withLeniency

protected InstantDeserializer<T> withLeniency(Boolean leniency)

Specified by:
  `withLeniency` in class `JSR310DateTimeDeserializerBase<T extends Temporal>`

### withShape

protected InstantDeserializer<T> withShape(com.fasterxml.jackson.annotation.JsonFormat.Shape shape)

Specified by:
  `withShape` in class `JSR310DateTimeDeserializerBase<T extends Temporal>`

### _withFormatOverrides

protected JSR310DateTimeDeserializerBase<?> _withFormatOverrides(com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.databind.BeanProperty property, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides)

Overrides:
  `_withFormatOverrides` in class `JSR310DateTimeDeserializerBase<T extends Temporal>`
Parameters:
  `ctxt` - Active deserialization context
  `property` - (optional) Property on which this deserializer is used, or `null` for root value
  `formatOverrides` - Format overrides to use (non-null)
Returns:
  Either this deserializer as is, or newly constructed variant if created for different configuration

### deserialize

public T deserialize(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context) throws IOException

Specified by:
  `deserialize` in class `com.fasterxml.jackson.databind.JsonDeserializer<T extends Temporal>`
Throws:
  `IOException`

### shouldAdjustToContextTimezone

protected boolean shouldAdjustToContextTimezone(com.fasterxml.jackson.databind.DeserializationContext context)

### _countPeriods

protected int _countPeriods(String str)

### _fromString

protected T _fromString(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt, String string0) throws IOException

Throws:
  `IOException`

### _fromLong

protected T _fromLong(com.fasterxml.jackson.databind.DeserializationContext context, long timestamp)

### _fromDecimal

protected T _fromDecimal(com.fasterxml.jackson.databind.DeserializationContext context, BigDecimal value)

### isLenient

protected boolean isLenient()

Returns:
  `true` if lenient handling is enabled; {code false} if not (strict mode)
Since:
  2.11

### _fromEmptyString

protected T _fromEmptyString(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt, String str) throws IOException
Replacement for `isLenient()` for specific case of deserialization from empty or blank String.

Throws:
  `IOException`
Since:
  2.12

### logicalType

public com.fasterxml.jackson.databind.type.LogicalType logicalType()

Overrides:
  `logicalType` in class `com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer<T>`

### deserializeWithType

public Object deserializeWithType(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.databind.jsontype.TypeDeserializer typeDeserializer) throws IOException

Overrides:
  `deserializeWithType` in class `com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer<T>`
Throws:
  `IOException`

### _isValidTimestampString

protected boolean _isValidTimestampString(String str)

### _reportWrongToken

protected <BOGUS> BOGUS _reportWrongToken(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonToken exp, String unit) throws IOException

Throws:
  `IOException`

### _reportWrongToken

protected <BOGUS> BOGUS _reportWrongToken(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonToken... expTypes) throws IOException

Throws:
  `IOException`

### _handleDateTimeException

protected <R> R _handleDateTimeException(com.fasterxml.jackson.databind.DeserializationContext context, DateTimeException e0, String value) throws com.fasterxml.jackson.databind.JsonMappingException

Throws:
  `com.fasterxml.jackson.databind.JsonMappingException`

### _handleUnexpectedToken

protected <R> R _handleUnexpectedToken(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, String message, Object... args) throws com.fasterxml.jackson.databind.JsonMappingException

Throws:
  `com.fasterxml.jackson.databind.JsonMappingException`

### _handleUnexpectedToken

protected <R> R _handleUnexpectedToken(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.core.JsonToken... expTypes) throws com.fasterxml.jackson.databind.JsonMappingException

Throws:
  `com.fasterxml.jackson.databind.JsonMappingException`

### _failForNotLenient

protected T _failForNotLenient(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.core.JsonToken expToken) throws IOException

Throws:
  `IOException`

### _peelDTE

protected DateTimeException _peelDTE(DateTimeException e)
Helper method used to peel off spurious wrappings of DateTimeException

Parameters:
  `e` - DateTimeException to peel
Returns:
  DateTimeException that does not have another DateTimeException as its cause.