Skip to content

Commit 5013822

Browse files
committed
Merge branch '2.9'
2 parents adc8512 + dcd40a1 commit 5013822

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/main/java/com/fasterxml/jackson/databind/ser/std/JsonValueSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
249249
return;
250250
}
251251
}
252-
ser.acceptJsonFormatVisitor(visitor, null);
252+
ser.acceptJsonFormatVisitor(visitor, type);
253253
}
254254

255255
/**

src/main/java/com/fasterxml/jackson/databind/ser/std/ObjectArraySerializer.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
1616
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
1717
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
18-
import com.fasterxml.jackson.databind.type.TypeFactory;
1918

2019
/**
2120
* Generic serializer for Object arrays (<code>Object[]</code>).
@@ -312,12 +311,17 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
312311
{
313312
JsonArrayFormatVisitor arrayVisitor = visitor.expectArrayFormat(typeHint);
314313
if (arrayVisitor != null) {
314+
JavaType contentType = _elementType;
315+
316+
// [databind#1793]: Was getting `null` for `typeHint`. But why would we even use it...
317+
/*
315318
TypeFactory tf = visitor.getProvider().getTypeFactory();
316-
JavaType contentType = tf.moreSpecificType(_elementType, typeHint.getContentType());
319+
contentType = tf.moreSpecificType(_elementType, typeHint.getContentType());
317320
if (contentType == null) {
318321
visitor.getProvider().reportBadDefinition(_elementType,
319322
"Could not resolve type: "+_elementType);
320323
}
324+
*/
321325
JsonSerializer<?> valueSer = _elementSerializer;
322326
if (valueSer == null) {
323327
valueSer = visitor.getProvider().findValueSerializer(contentType, _property);

src/test/java/com/fasterxml/jackson/databind/jsonschema/NewSchemaTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.*;
66
import java.util.concurrent.atomic.AtomicReference;
77

8+
import com.fasterxml.jackson.annotation.JsonCreator;
89
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
910
import com.fasterxml.jackson.annotation.JsonValue;
1011
import com.fasterxml.jackson.core.JsonParser.NumberType;
@@ -87,6 +88,17 @@ static class POJOWithRefs {
8788
public AtomicReference<String> maybeString;
8889
}
8990

91+
// [databind#1793]
92+
static class POJOWithJsonValue {
93+
private Point[] value;
94+
95+
@JsonCreator(mode=JsonCreator.Mode.DELEGATING)
96+
public POJOWithJsonValue(Point[] v) { value = v; }
97+
98+
@JsonValue
99+
public Point[] serialization() { return value; }
100+
}
101+
90102
@JsonPropertyOrder({ "dec", "bigInt" })
91103
static class Numbers {
92104
public BigDecimal dec;
@@ -201,6 +213,8 @@ public void testBasicTraversal() throws Exception
201213
MAPPER.acceptJsonFormatVisitor(EnumSet.class, new BogusJsonFormatVisitorWrapper());
202214

203215
MAPPER.acceptJsonFormatVisitor(POJOWithRefs.class, new BogusJsonFormatVisitorWrapper());
216+
217+
MAPPER.acceptJsonFormatVisitor(POJOWithJsonValue.class, new BogusJsonFormatVisitorWrapper());
204218
}
205219

206220
public void testSimpleEnum() throws Exception

0 commit comments

Comments
 (0)