Skip to content

Commit 73728de

Browse files
committed
Merge branch '2.19'
2 parents 35143ed + 0a6ca39 commit 73728de

15 files changed

+85
-52
lines changed

src/test/java/tools/jackson/databind/ObjectReaderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ public void testUnknownFields() throws Exception
462462
ObjectMapper mapper = JsonMapper.builder().addHandler(new DeserializationProblemHandler(){
463463
@Override
464464
public boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser p, ValueDeserializer<?> deserializer, Object beanOrClass, String propertyName) {
465-
p.readValueAsTree();
465+
ctxt.readTree(p);
466466
return true;
467467
}
468468
}).build();

src/test/java/tools/jackson/databind/convert/UpdateViaObjectReaderTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,8 @@ public DataA deserialize(JsonParser p, DeserializationContext ctxt)
7676
+p.currentToken());
7777
// never gets here
7878
}
79-
/*JsonNode node =*/ p.readValueAsTree();
79+
/*JsonNode node =*/ ctxt.readTree(p);
8080

81-
p.skipChildren(); // important, must consume input
8281
DataA da = new DataA();
8382
da.i = 5;
8483
return da;

src/test/java/tools/jackson/databind/deser/CustomDeserializersTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ public void testCustomDeserializerWithReadTreeAsValue() throws Exception
622622
assertEquals(new Point(13, -4), result.point);
623623

624624
// also, try some edge conditions
625-
result = MAPPER.readValue(a2q("{'name':4})"), NamedPoint.class);
625+
result = MAPPER.readValue(a2q("{'name':4}"), NamedPoint.class);
626626
assertNotNull(result);
627627
assertEquals("4", result.name);
628628
assertNull(result.point);

src/test/java/tools/jackson/databind/deser/DeserConcurrencyTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public Bean deserialize(JsonParser p, DeserializationContext ctxt)
4141
ctxt.reportInputMismatch(Bean.class,
4242
"Deserializer not yet completely resolved");
4343
}
44+
p.skipChildren(); // consume the value
4445
Bean b = new Bean();
4546
b.value = 13;
4647
return b;

src/test/java/tools/jackson/databind/deser/JacksonTypesDeserTest.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,21 +78,25 @@ public void testJavaType() throws Exception
7878
public void testTokenBufferWithSample() throws Exception
7979
{
8080
// First, try standard sample doc:
81-
TokenBuffer result = MAPPER.readValue(SAMPLE_DOC_JSON_SPEC, TokenBuffer.class);
82-
verifyJsonSpecSampleDoc(result.asParser(ObjectReadContext.empty()), true);
83-
result.close();
81+
try (TokenBuffer result = MAPPER.readValue(SAMPLE_DOC_JSON_SPEC, TokenBuffer.class)) {
82+
verifyJsonSpecSampleDoc(result.asParser(ObjectReadContext.empty()), true);
83+
}
8484
}
8585

8686
@SuppressWarnings("resource")
8787
@Test
8888
public void testTokenBufferWithSequence() throws Exception
8989
{
90+
final ObjectMapper mapper = jsonMapperBuilder()
91+
.disable(DeserializationFeature.FAIL_ON_TRAILING_TOKENS)
92+
.build();
93+
9094
// and then sequence of other things
91-
JsonParser p = MAPPER.createParser("[ 32, [ 1 ], \"abc\", { \"a\" : true } ]");
95+
JsonParser p = mapper.createParser("[ 32, [ 1 ], \"abc\", { \"a\" : true } ]");
9296
assertToken(JsonToken.START_ARRAY, p.nextToken());
9397

9498
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
95-
TokenBuffer buf = MAPPER.readValue(p, TokenBuffer.class);
99+
TokenBuffer buf = mapper.readValue(p, TokenBuffer.class);
96100

97101
// check manually...
98102
JsonParser bufParser = buf.asParser(ObjectReadContext.empty());
@@ -101,7 +105,7 @@ public void testTokenBufferWithSequence() throws Exception
101105
assertNull(bufParser.nextToken());
102106

103107
// then bind to another
104-
buf = MAPPER.readValue(p, TokenBuffer.class);
108+
buf = mapper.readValue(p, TokenBuffer.class);
105109
bufParser = buf.asParser(ObjectReadContext.empty());
106110
assertToken(JsonToken.START_ARRAY, bufParser.nextToken());
107111
assertToken(JsonToken.VALUE_NUMBER_INT, bufParser.nextToken());
@@ -110,13 +114,13 @@ public void testTokenBufferWithSequence() throws Exception
110114
assertNull(bufParser.nextToken());
111115

112116
// third one, with automatic binding
113-
buf = MAPPER.readValue(p, TokenBuffer.class);
114-
String str = MAPPER.readValue(buf.asParser(ObjectReadContext.empty()), String.class);
117+
buf = mapper.readValue(p, TokenBuffer.class);
118+
String str = mapper.readValue(buf.asParser(ObjectReadContext.empty()), String.class);
115119
assertEquals("abc", str);
116120

117121
// and ditto for last one
118-
buf = MAPPER.readValue(p, TokenBuffer.class);
119-
Map<?,?> map = MAPPER.readValue(buf.asParser(ObjectReadContext.empty()), Map.class);
122+
buf = mapper.readValue(p, TokenBuffer.class);
123+
Map<?,?> map = mapper.readValue(buf.asParser(ObjectReadContext.empty()), Map.class);
120124
assertEquals(1, map.size());
121125
assertEquals(Boolean.TRUE, map.get("a"));
122126

src/test/java/tools/jackson/databind/deser/SetterlessPropertiesDeserTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,22 @@ public class SetterlessPropertiesDeserTest
2323
{
2424
static class CollectionBean
2525
{
26-
List<String> _values = new ArrayList<String>();
26+
List<String> _values = new ArrayList<>();
2727

2828
public List<String> getValues() { return _values; }
2929
}
3030

3131
static class MapBean
3232
{
33-
Map<String,Integer> _values = new HashMap<String,Integer>();
33+
Map<String,Integer> _values = new HashMap<>();
3434

3535
public Map<String,Integer> getValues() { return _values; }
3636
}
3737

3838
// testing to verify that field has precedence over getter, for lists
3939
static class Dual
4040
{
41-
@JsonProperty("list") protected List<Integer> values = new ArrayList<Integer>();
41+
@JsonProperty("list") protected List<Integer> values = new ArrayList<>();
4242

4343
public Dual() { }
4444

@@ -129,7 +129,7 @@ public void testSetterlessPrecedence() throws Exception
129129
ObjectMapper m = jsonMapperBuilder()
130130
.enable(MapperFeature.USE_GETTERS_AS_SETTERS)
131131
.build();
132-
Dual value = m.readValue("{\"list\":[1,2,3]}, valueType)", Dual.class);
132+
Dual value = m.readValue("{\"list\":[1,2,3]}", Dual.class);
133133
assertNotNull(value);
134134
assertEquals(3, value.values.size());
135135
}

src/test/java/tools/jackson/databind/deser/bean/BeanDeserializerTest.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,9 @@ public Issue1912SubBean(String a) {
169169
}
170170
}
171171

172-
public static class Issue1912CustomBeanDeserializer extends ValueDeserializer<Issue1912Bean> {
172+
public static class Issue1912CustomBeanDeserializer
173+
extends ValueDeserializer<Issue1912Bean>
174+
{
173175
private BeanDeserializer defaultDeserializer;
174176

175177
public Issue1912CustomBeanDeserializer(BeanDeserializer defaultDeserializer) {
@@ -179,16 +181,26 @@ public Issue1912CustomBeanDeserializer(BeanDeserializer defaultDeserializer) {
179181
@Override
180182
public Issue1912Bean deserialize(JsonParser p, DeserializationContext ctxt)
181183
{
182-
// this is need on some cases, this populate _propertyBasedCreator
183-
defaultDeserializer.resolve(ctxt);
184-
185184
p.nextName(); // read subBean
186-
p.nextToken(); // read start object
185+
if (p.nextToken() != JsonToken.START_OBJECT) {
186+
throw new IllegalArgumentException("Unexpected token "+p.currentToken());
187+
}
187188

188189
Issue1912SubBean subBean = (Issue1912SubBean) defaultDeserializer.findProperty("subBean").deserialize(p, ctxt);
190+
// Must also read trailing END_OBJECT
191+
if (p.nextToken() != JsonToken.END_OBJECT) {
192+
throw new IllegalArgumentException("Unexpected token "+p.currentToken());
193+
}
189194

190195
return new Issue1912Bean(subBean);
191196
}
197+
198+
@Override
199+
public ValueDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property)
200+
{
201+
return new Issue1912CustomBeanDeserializer(
202+
(BeanDeserializer) defaultDeserializer.createContextual(ctxt, property));
203+
}
192204
}
193205

194206
public static class Issue1912CustomPropertyDeserializer extends ValueDeserializer<Issue1912SubBean>

src/test/java/tools/jackson/databind/deser/builder/BuilderSimpleTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ public void testBuilderMethodReturnMoreSpecific() throws Exception
409409
@Test
410410
public void testSelfBuilder777() throws Exception
411411
{
412-
SelfBuilder777 result = MAPPER.readValue(a2q("{'x':3}'"),
412+
SelfBuilder777 result = MAPPER.readValue(a2q("{'x':3}"),
413413
SelfBuilder777.class);
414414
assertNotNull(result);
415415
assertEquals(3, result.x);

src/test/java/tools/jackson/databind/deser/enums/EnumDeserializationTest.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -283,11 +283,16 @@ public void testSimple() throws Exception
283283
{
284284
// First "good" case with Strings
285285
String JSON = "\"OK\" \"RULES\" null";
286-
// multiple main-level mappings, need explicit parser:
287-
JsonParser p = MAPPER.createParser(JSON);
286+
// multiple main-level mappings, need explicit parser
287+
// (and possibly prevent validation of trailing tokens)
288+
ObjectMapper mapper = jsonMapperBuilder()
289+
.disable(DeserializationFeature.FAIL_ON_TRAILING_TOKENS)
290+
.build();
291+
292+
JsonParser p = mapper.createParser(JSON);
288293

289-
assertEquals(TestEnum.OK, MAPPER.readValue(p, TestEnum.class));
290-
assertEquals(TestEnum.RULES, MAPPER.readValue(p, TestEnum.class));
294+
assertEquals(TestEnum.OK, mapper.readValue(p, TestEnum.class));
295+
assertEquals(TestEnum.RULES, mapper.readValue(p, TestEnum.class));
291296

292297
// should be ok; nulls are typeless; handled by mapper, not by deserializer
293298
assertNull(MAPPER.readValue(p, TestEnum.class));
@@ -296,11 +301,11 @@ public void testSimple() throws Exception
296301
assertFalse(p.hasCurrentToken());
297302

298303
// Then alternative with index (0 means first entry)
299-
assertEquals(TestEnum.JACKSON, MAPPER.readValue(" 0 ", TestEnum.class));
304+
assertEquals(TestEnum.JACKSON, mapper.readValue(" 0 ", TestEnum.class));
300305

301306
// Then error case: unrecognized value
302307
try {
303-
/*Object result =*/ MAPPER.readValue("\"NO-SUCH-VALUE\"", TestEnum.class);
308+
/*Object result =*/ mapper.readValue("\"NO-SUCH-VALUE\"", TestEnum.class);
304309
fail("Expected an exception for bogus enum value...");
305310
} catch (MismatchedInputException jex) {
306311
verifyException(jex, "not one of the values accepted for Enum class");
@@ -309,8 +314,8 @@ public void testSimple() throws Exception
309314
}
310315

311316
/**
312-
* Enums are considered complex if they have code (and hence sub-classes)... an
313-
* example is TimeUnit
317+
* Enums are considered complex if they have code (and hence sub-classes)...
318+
* an example is TimeUnit
314319
*/
315320
@Test
316321
public void testComplexEnum() throws Exception

src/test/java/tools/jackson/databind/deser/filter/ProblemHandlerTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,10 @@ public void testInstantiationExceptionHandling() throws Exception
369369
public void testMissingInstantiatorHandling() throws Exception
370370
{
371371
ObjectMapper mapper = jsonMapperBuilder()
372+
// 14-Jan-2025, tatu: Need to disable trailing tokens (for 3.0)
373+
// for this to work (handler not consuming all tokens as it should
374+
// but no time to fully fix right now)
375+
.disable(DeserializationFeature.FAIL_ON_TRAILING_TOKENS)
372376
.addHandler(new MissingInstantiationHandler(new NoDefaultCtor(13)))
373377
.build();
374378
NoDefaultCtor w = mapper.readValue("{ \"x\" : true }", NoDefaultCtor.class);

0 commit comments

Comments
 (0)