Skip to content

Commit

Permalink
Second part of manual merge (now 1 odd test failure to solve)
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Sep 5, 2019
1 parent de211e2 commit c63dac1
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.fasterxml.jackson.databind.type.TypeFactory;

import com.fasterxml.jackson.datatype.guava.deser.util.RangeFactory;
import com.fasterxml.jackson.datatype.guava.deser.util.RangeHelper;

/**
* Jackson deserializer for a Guava {@link Range}.
Expand All @@ -35,8 +36,13 @@ public class RangeDeserializer

protected final JsonDeserializer<Object> _endpointDeserializer;

private BoundType _defaultBoundType;
protected final BoundType _defaultBoundType;

/**
* @since 2.10
*/
protected final RangeHelper.RangeProperties _fieldNames;

/*
/**********************************************************
/* Life-cycle
Expand All @@ -50,27 +56,34 @@ public class RangeDeserializer
public RangeDeserializer(JavaType rangeType) {
this(null, rangeType);
}

public RangeDeserializer(BoundType defaultBoundType, JavaType rangeType) {
this(rangeType, null);
_defaultBoundType = defaultBoundType;
this(rangeType, null, defaultBoundType);
}

@SuppressWarnings("unchecked")
public RangeDeserializer(JavaType rangeType, JsonDeserializer<?> endpointDeser)
public RangeDeserializer(JavaType rangeType, JsonDeserializer<?> endpointDeser) {
this(rangeType, endpointDeser, null);
}

@Deprecated // since 2.10
public RangeDeserializer(JavaType rangeType, JsonDeserializer<?> endpointDeser,
BoundType defaultBoundType)
{
super(rangeType);
_rangeType = rangeType;
_endpointDeserializer = (JsonDeserializer<Object>) endpointDeser;
this(rangeType, endpointDeser, defaultBoundType, RangeHelper.standardNames());
}

/**
* @since 2.10
*/
@SuppressWarnings("unchecked")
public RangeDeserializer(JavaType rangeType, JsonDeserializer<?> endpointDeser, BoundType defaultBoundType)
protected RangeDeserializer(JavaType rangeType, JsonDeserializer<?> endpointDeser,
BoundType defaultBoundType, RangeHelper.RangeProperties fieldNames)
{
super(rangeType);
_rangeType = rangeType;
_endpointDeserializer = (JsonDeserializer<Object>) endpointDeser;
_defaultBoundType = defaultBoundType;
_fieldNames = fieldNames;
}

@Override
Expand All @@ -80,13 +93,18 @@ public RangeDeserializer(JavaType rangeType, JsonDeserializer<?> endpointDeser,
public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
BeanProperty property) throws JsonMappingException
{
if (_endpointDeserializer == null) {
final RangeHelper.RangeProperties fieldNames = RangeHelper.getPropertyNames(ctxt.getConfig(),
ctxt.getConfig().getPropertyNamingStrategy());
JsonDeserializer<?> deser = _endpointDeserializer;
if (deser == null) {
JavaType endpointType = _rangeType.containedType(0);
if (endpointType == null) { // should this ever occur?
endpointType = TypeFactory.unknownType();
}
JsonDeserializer<Object> deser = ctxt.findContextualValueDeserializer(endpointType, property);
return new RangeDeserializer(_rangeType, deser, _defaultBoundType);
deser = ctxt.findContextualValueDeserializer(endpointType, property);
}
if ((deser != _endpointDeserializer) || (fieldNames != _fieldNames)) {
return new RangeDeserializer(_rangeType, deser, _defaultBoundType, fieldNames);
}
return this;
}
Expand All @@ -98,11 +116,11 @@ public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
*/

@Override
public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
public Object deserializeWithType(JsonParser p, DeserializationContext ctxt,
TypeDeserializer typeDeserializer)
throws IOException
{
return typeDeserializer.deserializeTypedFromObject(jp, ctxt);
return typeDeserializer.deserializeTypedFromObject(p, ctxt);
}

@Override
Expand All @@ -124,16 +142,16 @@ public Range<?> deserialize(JsonParser p, DeserializationContext context)
expect(context, JsonToken.FIELD_NAME, t);
String fieldName = p.getCurrentName();
try {
if (fieldName.equals("lowerEndpoint")) {
if (fieldName.equals(_fieldNames.lowerEndpoint)) {
p.nextToken();
lowerEndpoint = deserializeEndpoint(context, p);
} else if (fieldName.equals("upperEndpoint")) {
} else if (fieldName.equals(_fieldNames.upperEndpoint)) {
p.nextToken();
upperEndpoint = deserializeEndpoint(context, p);
} else if (fieldName.equals("lowerBoundType")) {
} else if (fieldName.equals(_fieldNames.lowerBoundType)) {
p.nextToken();
lowerBoundType = deserializeBoundType(context, p);
} else if (fieldName.equals("upperBoundType")) {
} else if (fieldName.equals(_fieldNames.upperBoundType)) {
p.nextToken();
upperBoundType = deserializeBoundType(context, p);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ private void _writeContents(Range<?> value, JsonGenerator g, SerializerProvider
g.writeFieldName(fieldName);
_endpointSerializer.serialize(fieldName, g, provider);
} else {
provider.defaultSerializeField("upperEndpoint", value.upperEndpoint(), g);
provider.defaultSerializeField(fieldName, value.upperEndpoint(), g);
}
// same as above; should always be just String so
g.writeStringField(_fieldNames.upperBoundType, value.upperBoundType().name());
Expand Down

0 comments on commit c63dac1

Please sign in to comment.