Class InstantDeserializer<T extends java.time.temporal.Temporal>

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

    public class InstantDeserializer<T extends java.time.temporal.Temporal>
    extends JSR310DateTimeDeserializerBase<T>
    Deserializer for Java 8 temporal Instants, OffsetDateTime, and ZonedDateTimes.
    Since:
    2.2
    See Also:
    Serialized Form
    • Field Detail

      • DEFAULT_NORMALIZE_ZONE_ID

        private static final boolean DEFAULT_NORMALIZE_ZONE_ID
      • DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS

        private static final boolean DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
      • ISO8601_COLONLESS_OFFSET_REGEX

        protected static final java.util.regex.Pattern ISO8601_COLONLESS_OFFSET_REGEX
        Constants used to check if ISO 8601 time string is colon-less. See [jackson-modules-java8#131]
        Since:
        2.13
      • OFFSET_DATE_TIME

        public static final InstantDeserializer<java.time.OffsetDateTime> OFFSET_DATE_TIME
      • ZONED_DATE_TIME

        public static final InstantDeserializer<java.time.ZonedDateTime> ZONED_DATE_TIME
      • parsedToValue

        protected final java.util.function.Function<java.time.temporal.TemporalAccessor,​T extends java.time.temporal.Temporal> parsedToValue
      • adjust

        protected final java.util.function.BiFunction<T extends java.time.temporal.Temporal,​java.time.ZoneId,​T extends java.time.temporal.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 java.lang.Boolean _adjustToContextTZOverride
        Flag for JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE
        Since:
        2.8
      • _readTimestampsAsNanosOverride

        protected final java.lang.Boolean _readTimestampsAsNanosOverride
        Flag for JsonFormat.Feature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS
        Since:
        2.16
      • _alwaysAllowStringifiedDateTimestamps

        protected final boolean _alwaysAllowStringifiedDateTimestamps
        Flag set from JavaTimeFeature.ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS to determine whether stringified numbers are interpreted as timestamps (enabled) nor not (disabled) in addition to a custom pattern ({code DateTimeFormatter}).

        NOTE: stringified timestamps are always allowed with default patterns; this flag only affects handling of custom patterns.

        Since:
        2.16
    • Constructor Detail

      • InstantDeserializer

        protected InstantDeserializer​(java.lang.Class<T> supportedType,
                                      java.time.format.DateTimeFormatter formatter,
                                      java.util.function.Function<java.time.temporal.TemporalAccessor,​T> parsedToValue,
                                      java.util.function.Function<InstantDeserializer.FromIntegerArguments,​T> fromMilliseconds,
                                      java.util.function.Function<InstantDeserializer.FromDecimalArguments,​T> fromNanoseconds,
                                      java.util.function.BiFunction<T,​java.time.ZoneId,​T> adjust,
                                      boolean replaceZeroOffsetAsZ,
                                      boolean normalizeZoneId,
                                      boolean readNumericStringsAsTimestamp)
        Since:
        2.16
      • InstantDeserializer

        protected InstantDeserializer​(InstantDeserializer<T> base,
                                      java.time.format.DateTimeFormatter f)
      • InstantDeserializer

        protected InstantDeserializer​(InstantDeserializer<T> base,
                                      java.lang.Boolean adjustToContextTimezoneOverride)
      • InstantDeserializer

        protected InstantDeserializer​(InstantDeserializer<T> base,
                                      java.time.format.DateTimeFormatter f,
                                      java.lang.Boolean leniency)
      • InstantDeserializer

        protected InstantDeserializer​(InstantDeserializer<T> base,
                                      java.lang.Boolean leniency,
                                      java.time.format.DateTimeFormatter formatter,
                                      com.fasterxml.jackson.annotation.JsonFormat.Shape shape,
                                      java.lang.Boolean adjustToContextTimezoneOverride,
                                      java.lang.Boolean readTimestampsAsNanosOverride)
        Since:
        2.16
      • InstantDeserializer

        protected InstantDeserializer​(InstantDeserializer<T> base,
                                      com.fasterxml.jackson.core.util.JacksonFeatureSet<JavaTimeFeature> features)
        Since:
        2.16
    • Method Detail

      • _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 java.time.temporal.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 java.io.IOException
        Specified by:
        deserialize in class com.fasterxml.jackson.databind.JsonDeserializer<T extends java.time.temporal.Temporal>
        Throws:
        java.io.IOException
      • shouldAdjustToContextTimezone

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

        protected boolean shouldReadTimestampsAsNanoseconds​(com.fasterxml.jackson.databind.DeserializationContext context)
      • _countPeriods

        protected int _countPeriods​(java.lang.String str)
      • _fromString

        protected T _fromString​(com.fasterxml.jackson.core.JsonParser p,
                                com.fasterxml.jackson.databind.DeserializationContext ctxt,
                                java.lang.String string0)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • _fromLong

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

        protected T _fromDecimal​(com.fasterxml.jackson.databind.DeserializationContext context,
                                 java.math.BigDecimal value)
      • getZone

        private java.time.ZoneId getZone​(com.fasterxml.jackson.databind.DeserializationContext context)
      • replaceZeroOffsetAsZIfNecessary

        private java.lang.String replaceZeroOffsetAsZIfNecessary​(java.lang.String text)
      • replaceZeroOffsetAsZ

        private static java.lang.String replaceZeroOffsetAsZ​(java.lang.String text)
      • addInColonToOffsetIfMissing

        private java.lang.String addInColonToOffsetIfMissing​(java.lang.String text)