Top Description Fields Constructors Methods
tools.jackson.datatype.guava.ser

public Class RangeSerializer

extends StdSerializer<Range<?>>
Class Inheritance
Imports
com.google.common.collect.BoundType, .Range, com.fasterxml.jackson.annotation.JsonFormat, tools.jackson.core.*, tools.jackson.core.type.WritableTypeId, tools.jackson.databind.*, tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper, .JsonObjectFormatVisitor, tools.jackson.databind.jsontype.TypeSerializer, tools.jackson.databind.ser.std.StdSerializer, tools.jackson.datatype.guava.deser.util.RangeHelper

Jackson serializer for Guava Range objects with enhanced serialization capabilities. When the range property is annotated with @JsonFormat(JsonFormat.Shape.STRING), it generates bracket notation for a more concise and human-readable representation. Otherwise, it defaults to a more verbose standard serialization, explicitly writing out endpoints and bound types.

Usage Example for bracket notation:

@JsonFormat(JsonFormat.Shape.STRING)
  private Range<Integer> r;
When the range field is annotated with @JsonFormat(JsonFormat.Shape.STRING), the serializer will output the range that would look something like: [X..Y] or (X..Y).

By default, when the range property lacks the string shape annotation, the serializer will output the JSON in following manner:
{
     "lowerEndpoint": X,
     "lowerBoundType": "CLOSED",
     "upperEndpoint": Y,
     "upperBoundType": "CLOSED"
  }

Field Summary

Modifier and TypeField and Description
protected final ValueSerializer<Object>
protected final RangeHelper.RangeProperties
protected final JavaType
protected final JsonFormat.Shape
Inherited from tools.jackson.databind.ser.std.StdSerializer:
_handledType

Constructor Summary

AccessConstructor and Description
public
protected

Method Summary

Modifier and TypeMethod and Description
private String
private void
public void
public ValueSerializer<?>
createContextual(SerializationContext ctxt, BeanProperty property)

Overrides tools.jackson.databind.ValueSerializer.createContextual.

Method called to see if a different (or differently configured) serializer is needed to serialize values of specified property (or, for root values, in which case `null` is passed).

public boolean
isEmpty(SerializationContext ctxt, Range<?> value)

Overrides tools.jackson.databind.ValueSerializer.isEmpty.

Method called to check whether given serializable value is considered "empty" value (for purposes of suppressing serialization of empty values).

public void
serialize(Range<?> value, JsonGenerator gen, SerializationContext ctxt)

Implements abstract tools.jackson.databind.ser.std.StdSerializer.serialize.

Method that can be called to ask implementation to serialize values of type this serializer handles.

public void
serializeWithType(Range<?> value, JsonGenerator gen, SerializationContext ctxt, TypeSerializer typeSer)

Overrides tools.jackson.databind.ValueSerializer.serializeWithType.

Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.

Inherited from tools.jackson.databind.ser.std.StdSerializer:
_neitherNull_nonEmpty_wrapIOFailureacceptJsonFormatVisitorForBinarycreateSchemaNodecreateSchemaNodefindAnnotatedContentSerializerfindContextualConvertingSerializerfindFormatFeaturefindFormatOverridesfindIncludeOverridesfindPropertyFilterhandledTypeisDefaultSerializervisitArrayFormatvisitArrayFormatvisitFloatFormatvisitIntFormatvisitIntFormatvisitStringFormatvisitStringFormatwrapAndThrowwrapAndThrow

Field Detail

_endpointSerializerback to summary
protected final ValueSerializer<Object> _endpointSerializer
_fieldNamesback to summary
protected final RangeHelper.RangeProperties _fieldNames
_rangeTypeback to summary
protected final JavaType _rangeType
_shapeback to summary
protected final JsonFormat.Shape _shape

Constructor Detail

RangeSerializerback to summary
public RangeSerializer(JavaType type)
RangeSerializerback to summary
protected RangeSerializer(JavaType type, ValueSerializer<?> endpointSer, RangeHelper.RangeProperties fieldNames, JsonFormat.Shape shape)
Annotations
@SuppressWarnings:unchecked

Method Detail

_getStringFormatback to summary
private String _getStringFormat(Range<?> range)
_writeContentsback to summary
private void _writeContents(Range<?> value, JsonGenerator g, SerializationContext ctxt) throws JacksonException
acceptJsonFormatVisitorback to summary
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)

Overrides tools.jackson.databind.ser.std.StdSerializer.acceptJsonFormatVisitor.

Implements tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitable.acceptJsonFormatVisitor.

Doc from tools.jackson.databind.ser.std.StdSerializer.acceptJsonFormatVisitor.

Default implementation specifies no format. This behavior is usually overriden by custom serializers.

Annotations
@Override
createContextualback to summary
public ValueSerializer<?> createContextual(SerializationContext ctxt, BeanProperty property)

Overrides tools.jackson.databind.ValueSerializer.createContextual.

Doc from tools.jackson.databind.ValueSerializer.createContextual.

Method called to see if a different (or differently configured) serializer is needed to serialize values of specified property (or, for root values, in which case `null` is passed). 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.

Note that method is only called once per POJO property, and for the first usage as root value serializer; it is not called for every serialization, as doing that would have significant performance impact; most serializers cache contextual instances for future use.

Annotations
@Override
isEmptyback to summary
public boolean isEmpty(SerializationContext ctxt, Range<?> value)

Overrides tools.jackson.databind.ValueSerializer.isEmpty.

Doc from tools.jackson.databind.ValueSerializer.isEmpty.

Method called to check whether given serializable value is considered "empty" value (for purposes of suppressing serialization of empty values).

Default implementation will consider only null values to be empty.

Annotations
@Override
serializeback to summary
public void serialize(Range<?> value, JsonGenerator gen, SerializationContext ctxt) throws JacksonException

Implements abstract tools.jackson.databind.ser.std.StdSerializer.serialize.

Doc from tools.jackson.databind.ValueSerializer.serialize.

Method that can be called to ask implementation to serialize values of type this serializer handles.

Annotations
@Override
serializeWithTypeback to summary
public void serializeWithType(Range<?> value, JsonGenerator gen, SerializationContext ctxt, TypeSerializer typeSer) throws JacksonException

Overrides tools.jackson.databind.ValueSerializer.serializeWithType.

Doc from tools.jackson.databind.ValueSerializer.serializeWithType.

Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.

Default implementation will throw UnsupportedOperationException to indicate that proper type handling needs to be implemented.

For simple datatypes written as a single scalar value (JSON String, Number, Boolean), implementation would look like:

  // note: method to call depends on whether this type is serialized as JSON scalar, object or Array!
  typeSer.writeTypePrefixForScalar(value, gen);
  serialize(value, gen, provider);
  typeSer.writeTypeSuffixForScalar(value, gen);
and implementations for type serialized as JSON Arrays or Objects would differ slightly, as START-ARRAY/END-ARRAY and START-OBJECT/END-OBJECT pairs need to be properly handled with respect to serializing of contents.
Annotations
@Override