Class RangeDeserializer

  • 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 RangeDeserializer
    extends com.fasterxml.jackson.databind.deser.std.StdDeserializer<com.google.common.collect.Range<?>>
    implements com.fasterxml.jackson.databind.deser.ContextualDeserializer
    Jackson deserializer for a Guava Range.

    TODO: I think it would make sense to reimplement this deserializer to use Delegating Deserializer, using a POJO as an intermediate form (properties could be of type Object) This would also also simplify the implementation a bit.

    See Also:
    Serialized Form
    • Nested Class Summary

      • 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 com.google.common.collect.BoundType _defaultBoundType  
      protected com.fasterxml.jackson.databind.JsonDeserializer<java.lang.Object> _endpointDeserializer
      Deserializer used when getting JSON Object representation
      protected RangeHelper.RangeProperties _fieldNames  
      protected com.fasterxml.jackson.databind.KeyDeserializer _fromStringDeserializer
      Deserializer used when getting JSON String (inline) representation.
      protected com.fasterxml.jackson.databind.JavaType _rangeType  
      protected com.fasterxml.jackson.annotation.JsonFormat.Shape _shape  
      protected static java.util.regex.Pattern PATTERN_DOUBLE_DOT  
      private static long serialVersionUID  
      • 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
        RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType, com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser)
      Deprecated.
        RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType, com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser, com.google.common.collect.BoundType defaultBoundType)
      Deprecated.
      protected RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType, com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser, com.google.common.collect.BoundType defaultBoundType, RangeHelper.RangeProperties fieldNames)
      Deprecated.
      Since 2.17 use other constructor(s)
      protected RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType, com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser, com.google.common.collect.BoundType defaultBoundType, RangeHelper.RangeProperties fieldNames, com.fasterxml.jackson.annotation.JsonFormat.Shape shape, com.fasterxml.jackson.databind.KeyDeserializer fromStringDeserializer)  
        RangeDeserializer​(com.google.common.collect.BoundType defaultBoundType, com.fasterxml.jackson.databind.JavaType rangeType)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.fasterxml.jackson.databind.JsonDeserializer<?> createContextual​(com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.databind.BeanProperty property)  
      com.google.common.collect.Range<?> deserialize​(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext context)  
      private com.google.common.collect.BoundType deserializeBoundType​(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser p)  
      private java.lang.Comparable<?> deserializeEndpoint​(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser p)  
      private com.google.common.collect.Range<?> deserializeRangeFromString​(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonParser p)  
      private java.lang.Comparable<?> deserializeStringified​(com.fasterxml.jackson.databind.DeserializationContext context, java.lang.String value)  
      java.lang.Object deserializeWithType​(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.databind.jsontype.TypeDeserializer typeDeserializer)  
      private void expect​(com.fasterxml.jackson.databind.DeserializationContext context, com.fasterxml.jackson.core.JsonToken expected, com.fasterxml.jackson.core.JsonToken actual)  
      com.fasterxml.jackson.databind.JavaType getValueType()  
      private boolean isValidBracketNotation​(java.lang.String range)  
      com.fasterxml.jackson.databind.type.LogicalType logicalType()  
      • 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, _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, handledType, handleMissingEndArrayForSingle, handleNestedArrayForSingle, handleUnknownProperty, isDefaultDeserializer, isDefaultKeyDeserializer
      • Methods inherited from class com.fasterxml.jackson.databind.JsonDeserializer

        deserialize, deserializeWithType, findBackReference, getAbsentValue, getDelegatee, getEmptyAccessPattern, getEmptyValue, getEmptyValue, getKnownPropertyNames, getNullAccessPattern, getNullValue, getNullValue, getObjectIdReader, isCachable, replaceDelegatee, supportsUpdate, unwrappingDeserializer
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • PATTERN_DOUBLE_DOT

        protected static final java.util.regex.Pattern PATTERN_DOUBLE_DOT
      • _rangeType

        protected final com.fasterxml.jackson.databind.JavaType _rangeType
      • _endpointDeserializer

        protected final com.fasterxml.jackson.databind.JsonDeserializer<java.lang.Object> _endpointDeserializer
        Deserializer used when getting JSON Object representation
      • _fromStringDeserializer

        protected final com.fasterxml.jackson.databind.KeyDeserializer _fromStringDeserializer
        Deserializer used when getting JSON String (inline) representation.
        Since:
        2.17
      • _defaultBoundType

        protected final com.google.common.collect.BoundType _defaultBoundType
      • _shape

        protected final com.fasterxml.jackson.annotation.JsonFormat.Shape _shape
        Since:
        2.17
    • Constructor Detail

      • RangeDeserializer

        public RangeDeserializer​(com.google.common.collect.BoundType defaultBoundType,
                                 com.fasterxml.jackson.databind.JavaType rangeType)
      • RangeDeserializer

        @Deprecated
        public RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType,
                                 com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser)
        Deprecated.
      • RangeDeserializer

        @Deprecated
        public RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType,
                                 com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser,
                                 com.google.common.collect.BoundType defaultBoundType)
        Deprecated.
      • RangeDeserializer

        @Deprecated
        protected RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType,
                                    com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser,
                                    com.google.common.collect.BoundType defaultBoundType,
                                    RangeHelper.RangeProperties fieldNames)
        Deprecated.
        Since 2.17 use other constructor(s)
        Since:
        2.10
      • RangeDeserializer

        protected RangeDeserializer​(com.fasterxml.jackson.databind.JavaType rangeType,
                                    com.fasterxml.jackson.databind.JsonDeserializer<?> endpointDeser,
                                    com.google.common.collect.BoundType defaultBoundType,
                                    RangeHelper.RangeProperties fieldNames,
                                    com.fasterxml.jackson.annotation.JsonFormat.Shape shape,
                                    com.fasterxml.jackson.databind.KeyDeserializer fromStringDeserializer)
        Since:
        2.17
    • Method Detail

      • getValueType

        public com.fasterxml.jackson.databind.JavaType getValueType()
        Overrides:
        getValueType in class com.fasterxml.jackson.databind.deser.std.StdDeserializer<com.google.common.collect.Range<?>>
      • logicalType

        public com.fasterxml.jackson.databind.type.LogicalType logicalType()
        Overrides:
        logicalType in class com.fasterxml.jackson.databind.JsonDeserializer<com.google.common.collect.Range<?>>
      • createContextual

        public com.fasterxml.jackson.databind.JsonDeserializer<?> createContextual​(com.fasterxml.jackson.databind.DeserializationContext ctxt,
                                                                                   com.fasterxml.jackson.databind.BeanProperty property)
                                                                            throws com.fasterxml.jackson.databind.JsonMappingException
        Specified by:
        createContextual in interface com.fasterxml.jackson.databind.deser.ContextualDeserializer
        Throws:
        com.fasterxml.jackson.databind.JsonMappingException
      • deserializeWithType

        public java.lang.Object deserializeWithType​(com.fasterxml.jackson.core.JsonParser p,
                                                    com.fasterxml.jackson.databind.DeserializationContext ctxt,
                                                    com.fasterxml.jackson.databind.jsontype.TypeDeserializer typeDeserializer)
                                             throws java.io.IOException
        Overrides:
        deserializeWithType in class com.fasterxml.jackson.databind.deser.std.StdDeserializer<com.google.common.collect.Range<?>>
        Throws:
        java.io.IOException
      • deserialize

        public com.google.common.collect.Range<?> deserialize​(com.fasterxml.jackson.core.JsonParser p,
                                                              com.fasterxml.jackson.databind.DeserializationContext context)
                                                       throws java.io.IOException
        Specified by:
        deserialize in class com.fasterxml.jackson.databind.JsonDeserializer<com.google.common.collect.Range<?>>
        Throws:
        java.io.IOException
      • deserializeRangeFromString

        private com.google.common.collect.Range<?> deserializeRangeFromString​(com.fasterxml.jackson.databind.DeserializationContext context,
                                                                              com.fasterxml.jackson.core.JsonParser p)
                                                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • deserializeBoundType

        private com.google.common.collect.BoundType deserializeBoundType​(com.fasterxml.jackson.databind.DeserializationContext context,
                                                                         com.fasterxml.jackson.core.JsonParser p)
                                                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • deserializeEndpoint

        private java.lang.Comparable<?> deserializeEndpoint​(com.fasterxml.jackson.databind.DeserializationContext context,
                                                            com.fasterxml.jackson.core.JsonParser p)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • deserializeStringified

        private java.lang.Comparable<?> deserializeStringified​(com.fasterxml.jackson.databind.DeserializationContext context,
                                                               java.lang.String value)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • expect

        private void expect​(com.fasterxml.jackson.databind.DeserializationContext context,
                            com.fasterxml.jackson.core.JsonToken expected,
                            com.fasterxml.jackson.core.JsonToken actual)
                     throws com.fasterxml.jackson.databind.JsonMappingException
        Throws:
        com.fasterxml.jackson.databind.JsonMappingException
      • isValidBracketNotation

        private boolean isValidBracketNotation​(java.lang.String range)