Skip to content

Commit 3e4513f

Browse files
authored
Merge pull request #267 from JooHyukKim/joohyukkim/master/fix-databind-#4890
2 parents bfa51c3 + f38fbdc commit 3e4513f

20 files changed

+81
-36
lines changed

afterburner/src/test/java/tools/jackson/module/afterburner/deser/TestCreators2.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,9 @@ public void testSimpleConstructor() throws Exception
229229
// Test for [JACKSON-372]
230230
public void testMissingPrimitives() throws Exception
231231
{
232-
Primitives p = MAPPER.readValue("{}", Primitives.class);
232+
Primitives p = MAPPER.readerFor(Primitives.class)
233+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
234+
.readValue("{}");
233235
assertFalse(p.b);
234236
assertEquals(0, p.x);
235237
assertEquals(0.0, p.d);

afterburner/src/test/java/tools/jackson/module/afterburner/deser/convert/CoerceJDKScalarsTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ private void _verifyNullOkFromEmpty(Class<?> type, Object exp) throws IOExceptio
7979
{
8080
Object result = COERCING_MAPPER.readerFor(type)
8181
.with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
82+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
8283
.readValue("\"\"");
8384
if (exp == null) {
8485
assertNull(result);

afterburner/src/test/java/tools/jackson/module/afterburner/deser/convert/CoerceStringToIntsTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class CoerceStringToIntsTest extends AfterburnerTestBase
3232
private final ObjectMapper MAPPER_TO_NULL = afterburnerMapperBuilder()
3333
.withCoercionConfig(LogicalType.Integer, cfg ->
3434
cfg.setCoercion(CoercionInputShape.String, CoercionAction.AsNull))
35+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
3536
.build();
3637

3738
private final ObjectMapper MAPPER_TO_FAIL = afterburnerMapperBuilder()

afterburner/src/test/java/tools/jackson/module/afterburner/deser/convert/CoerceToBooleanTest.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -222,22 +222,25 @@ public void testIntToBooleanCoercionSuccessRoot() throws Exception
222222
// Test for verifying that Long values are coerced to boolean correctly as well
223223
public void testLongToBooleanCoercionOk() throws Exception
224224
{
225+
ObjectReader r = DEFAULT_MAPPER.reader()
226+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES);
227+
225228
long value = 1L + Integer.MAX_VALUE;
226-
BooleanWrapper b = DEFAULT_MAPPER.readValue("{\"primitive\" : "+value+", \"wrapper\":"+value+", \"ctor\":"+value+"}",
227-
BooleanWrapper.class);
229+
BooleanWrapper b = r.forType(BooleanWrapper.class)
230+
.readValue("{\"primitive\" : "+value+", \"wrapper\":"+value+", \"ctor\":"+value+"}");
228231
assertEquals(Boolean.TRUE, b.wrapper);
229232
assertTrue(b.primitive);
230233
assertEquals(Boolean.TRUE, b.ctor);
231234

232235
// but ensure we can also get `false`
233-
b = DEFAULT_MAPPER.readValue("{\"primitive\" : 0 , \"wrapper\":0, \"ctor\":0}",
234-
BooleanWrapper.class);
236+
b = r.forType(BooleanWrapper.class)
237+
.readValue("{\"primitive\" : 0 , \"wrapper\":0, \"ctor\":0}");
235238
assertEquals(Boolean.FALSE, b.wrapper);
236239
assertFalse(b.primitive);
237240
assertEquals(Boolean.FALSE, b.ctor);
238241

239-
boolean[] boo = DEFAULT_MAPPER.readValue("[ 0, 15, \"\", \"false\", \"True\" ]",
240-
boolean[].class);
242+
boolean[] boo = r.forType(boolean[].class)
243+
.readValue("[ 0, 15, \"\", \"false\", \"True\" ]");
241244
assertEquals(5, boo.length);
242245
assertFalse(boo[0]);
243246
assertTrue(boo[1]);

afterburner/src/test/java/tools/jackson/module/afterburner/deser/convert/TestFailOnPrimitiveFromNullDeserialization.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ static class DoubleBean
3030

3131
private final static String BEAN_WITH_NULL_VALUE = "{\"value\": null}";
3232

33-
private final ObjectMapper MAPPER = newAfterburnerMapper();
33+
private final ObjectMapper MAPPER = afterburnerMapperBuilder()
34+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
35+
.build();
3436
private final ObjectMapper FAIL_ON_NULL_MAPPER = afterburnerMapperBuilder()
3537
.enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
3638
.build();

afterburner/src/test/java/tools/jackson/module/afterburner/deser/filter/NullConversionsForContentTest.java

+12-6
Original file line numberDiff line numberDiff line change
@@ -248,24 +248,30 @@ public void testNullsAsEmptyWithPrimitiveArrays() throws Exception
248248

249249
// int[]
250250
{
251-
NullContentAsEmpty<int[]> result = MAPPER.readValue(JSON,
252-
new TypeReference<NullContentAsEmpty<int[]>>() { });
251+
NullContentAsEmpty<int[]> result = MAPPER.readerFor(
252+
new TypeReference<NullContentAsEmpty<int[]>>() { })
253+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
254+
.readValue(JSON);
253255
assertEquals(1, result.values.length);
254256
assertEquals(0, result.values[0]);
255257
}
256258

257259
// long[]
258260
{
259-
NullContentAsEmpty<long[]> result = MAPPER.readValue(JSON,
260-
new TypeReference<NullContentAsEmpty<long[]>>() { });
261+
NullContentAsEmpty<long[]> result = MAPPER.readerFor(
262+
new TypeReference<NullContentAsEmpty<long[]>>() { })
263+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
264+
.readValue(JSON);
261265
assertEquals(1, result.values.length);
262266
assertEquals(0L, result.values[0]);
263267
}
264268

265269
// boolean[]
266270
{
267-
NullContentAsEmpty<boolean[]> result = MAPPER.readValue(JSON,
268-
new TypeReference<NullContentAsEmpty<boolean[]>>() { });
271+
NullContentAsEmpty<boolean[]> result = MAPPER.readerFor(
272+
new TypeReference<NullContentAsEmpty<boolean[]>>() { })
273+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
274+
.readValue(JSON);
269275
assertEquals(1, result.values.length);
270276
assertEquals(false, result.values[0]);
271277
}

afterburner/src/test/java/tools/jackson/module/afterburner/deser/jdk/JDKScalarsDeserTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
public class JDKScalarsDeserTest
2727
extends AfterburnerTestBase
2828
{
29-
private final ObjectMapper MAPPER = newAfterburnerMapper();
29+
private final ObjectMapper MAPPER = mapperBuilder()
30+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
31+
.build();
3032

3133
private final static String NAN_STRING = "NaN";
3234

afterburner/src/test/java/tools/jackson/module/afterburner/deser/merge/ArrayMergeTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public void testByteArrayMerging() throws Exception
8888
MergedX<byte[]> input = new MergedX<byte[]>(new byte[] { 1, 2 });
8989
MergedX<byte[]> result = MAPPER
9090
.readerFor(new TypeReference<MergedX<byte[]>>() {})
91+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
9192
.withValueToUpdate(input)
9293
.readValue(aposToQuotes("{'value':[4, 6.0, null]}"));
9394
assertSame(input, result);

afterburner/src/test/java/tools/jackson/module/afterburner/deser/struct/ScalarCoercionTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ private void _verifyNullOkFromEmpty(Class<?> type, Object exp) throws IOExceptio
5858
{
5959
Object result = COERCING_MAPPER.readerFor(type)
6060
.with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
61+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
6162
.readValue("\"\"");
6263
if (exp == null) {
6364
assertNull(result);

afterburner/src/test/java/tools/jackson/module/afterburner/roundtrip/BiggerDataTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@ static class Area {
7878
/**********************************************************
7979
*/
8080

81-
private final ObjectMapper MAPPER = newAfterburnerMapper();
81+
private final ObjectMapper MAPPER = mapperBuilder()
82+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
83+
.build();
8284

8385
public void testReading() throws Exception
8486
{

blackbird/src/test/java/tools/jackson/module/blackbird/deser/TestCreators2.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,10 @@ public void testSimpleConstructor() throws Exception
227227
// Test for [JACKSON-372]
228228
public void testMissingPrimitives() throws Exception
229229
{
230-
Primitives p = MAPPER.readValue("{}", Primitives.class);
230+
Primitives p = MAPPER
231+
.readerFor(Primitives.class)
232+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
233+
.readValue("{}");
231234
assertFalse(p.b);
232235
assertEquals(0, p.x);
233236
assertEquals(0.0, p.d);

blackbird/src/test/java/tools/jackson/module/blackbird/deser/convert/CoerceJDKScalarsTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ private void _verifyNullOkFromEmpty(Class<?> type, Object exp) throws IOExceptio
7979
{
8080
Object result = COERCING_MAPPER.readerFor(type)
8181
.with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
82+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
8283
.readValue("\"\"");
8384
if (exp == null) {
8485
assertNull(result);

blackbird/src/test/java/tools/jackson/module/blackbird/deser/convert/CoerceStringToIntsTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class CoerceStringToIntsTest extends BlackbirdTestBase
3232
private final ObjectMapper MAPPER_TO_NULL = mapperBuilder()
3333
.withCoercionConfig(LogicalType.Integer, cfg ->
3434
cfg.setCoercion(CoercionInputShape.String, CoercionAction.AsNull))
35+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
3536
.build();
3637

3738
private final ObjectMapper MAPPER_TO_FAIL = mapperBuilder()

blackbird/src/test/java/tools/jackson/module/blackbird/deser/convert/CoerceToBooleanTest.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -222,22 +222,25 @@ public void testIntToBooleanCoercionSuccessRoot() throws Exception
222222
// Test for verifying that Long values are coerced to boolean correctly as well
223223
public void testLongToBooleanCoercionOk() throws Exception
224224
{
225+
ObjectReader r = DEFAULT_MAPPER.reader()
226+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES);
227+
225228
long value = 1L + Integer.MAX_VALUE;
226-
BooleanWrapper b = DEFAULT_MAPPER.readValue("{\"primitive\" : "+value+", \"wrapper\":"+value+", \"ctor\":"+value+"}",
227-
BooleanWrapper.class);
229+
BooleanWrapper b = r.forType(BooleanWrapper.class)
230+
.readValue("{\"primitive\" : "+value+", \"wrapper\":"+value+", \"ctor\":"+value+"}");
228231
assertEquals(Boolean.TRUE, b.wrapper);
229232
assertTrue(b.primitive);
230233
assertEquals(Boolean.TRUE, b.ctor);
231234

232235
// but ensure we can also get `false`
233-
b = DEFAULT_MAPPER.readValue("{\"primitive\" : 0 , \"wrapper\":0, \"ctor\":0}",
234-
BooleanWrapper.class);
236+
b = r.forType(BooleanWrapper.class)
237+
.readValue("{\"primitive\" : 0 , \"wrapper\":0, \"ctor\":0}");
235238
assertEquals(Boolean.FALSE, b.wrapper);
236239
assertFalse(b.primitive);
237240
assertEquals(Boolean.FALSE, b.ctor);
238241

239-
boolean[] boo = DEFAULT_MAPPER.readValue("[ 0, 15, \"\", \"false\", \"True\" ]",
240-
boolean[].class);
242+
boolean[] boo = r.forType(boolean[].class)
243+
.readValue("[ 0, 15, \"\", \"false\", \"True\" ]");
241244
assertEquals(5, boo.length);
242245
assertFalse(boo[0]);
243246
assertTrue(boo[1]);

blackbird/src/test/java/tools/jackson/module/blackbird/deser/convert/TestFailOnPrimitiveFromNullDeserialization.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,14 @@ static class DoubleBean
4444

4545
public void testPassPrimitiveFromNull() throws Exception
4646
{
47-
LongBean longBean = MAPPER.readValue(BEAN_WITH_NULL_VALUE, LongBean.class);
48-
IntBean intBean = MAPPER.readValue(BEAN_WITH_NULL_VALUE, IntBean.class);
49-
BooleanBean booleanBean = MAPPER.readValue(BEAN_WITH_NULL_VALUE, BooleanBean.class);
50-
DoubleBean doubleBean = MAPPER.readValue(BEAN_WITH_NULL_VALUE, DoubleBean.class);
47+
ObjectMapper mapper = mapperBuilder()
48+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
49+
.build();
50+
51+
LongBean longBean = mapper.readValue(BEAN_WITH_NULL_VALUE, LongBean.class);
52+
IntBean intBean = mapper.readValue(BEAN_WITH_NULL_VALUE, IntBean.class);
53+
BooleanBean booleanBean = mapper.readValue(BEAN_WITH_NULL_VALUE, BooleanBean.class);
54+
DoubleBean doubleBean = mapper.readValue(BEAN_WITH_NULL_VALUE, DoubleBean.class);
5155
assertEquals(longBean.value, 0);
5256
assertEquals(intBean.value, 0);
5357
assertEquals(booleanBean.value, false);

blackbird/src/test/java/tools/jackson/module/blackbird/deser/filter/NullConversionsForContentTest.java

+11-6
Original file line numberDiff line numberDiff line change
@@ -246,28 +246,33 @@ public void testNullsAsEmptyWithArrays() throws Exception
246246

247247
public void testNullsAsEmptyWithPrimitiveArrays() throws Exception
248248
{
249+
ObjectReader r = MAPPER.reader().without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES);
250+
249251
final String JSON = aposToQuotes("{'values':[null]}");
250252

251253
// int[]
252254
{
253-
NullContentAsEmpty<int[]> result = MAPPER.readValue(JSON,
254-
new TypeReference<NullContentAsEmpty<int[]>>() { });
255+
NullContentAsEmpty<int[]> result = r.forType(
256+
new TypeReference<NullContentAsEmpty<int[]>>() { })
257+
.readValue(JSON);
255258
assertEquals(1, result.values.length);
256259
assertEquals(0, result.values[0]);
257260
}
258261

259262
// long[]
260263
{
261-
NullContentAsEmpty<long[]> result = MAPPER.readValue(JSON,
262-
new TypeReference<NullContentAsEmpty<long[]>>() { });
264+
NullContentAsEmpty<long[]> result = r.forType(
265+
new TypeReference<NullContentAsEmpty<long[]>>() { })
266+
.readValue(JSON);
263267
assertEquals(1, result.values.length);
264268
assertEquals(0L, result.values[0]);
265269
}
266270

267271
// boolean[]
268272
{
269-
NullContentAsEmpty<boolean[]> result = MAPPER.readValue(JSON,
270-
new TypeReference<NullContentAsEmpty<boolean[]>>() { });
273+
NullContentAsEmpty<boolean[]> result = r.forType(
274+
new TypeReference<NullContentAsEmpty<boolean[]>>() { })
275+
.readValue(JSON);
271276
assertEquals(1, result.values.length);
272277
assertEquals(false, result.values[0]);
273278
}

blackbird/src/test/java/tools/jackson/module/blackbird/deser/jdk/JDKScalarsDeserTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
public class JDKScalarsDeserTest
2929
extends BlackbirdTestBase
3030
{
31-
private final ObjectMapper MAPPER = newObjectMapper();
31+
private final ObjectMapper MAPPER = mapperBuilder()
32+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
33+
.build();
3234

3335
private final static String NAN_STRING = "NaN";
3436

blackbird/src/test/java/tools/jackson/module/blackbird/deser/merge/ArrayMergeTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public void testByteArrayMerging() throws Exception
8989
MergedX<byte[]> input = new MergedX<byte[]>(new byte[] { 1, 2 });
9090
MergedX<byte[]> result = MAPPER
9191
.readerFor(new TypeReference<MergedX<byte[]>>() {})
92+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
9293
.withValueToUpdate(input)
9394
.readValue(aposToQuotes("{'value':[4, 6.0, null]}"));
9495
assertSame(input, result);

blackbird/src/test/java/tools/jackson/module/blackbird/deser/struct/ScalarCoercionTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ private void _verifyNullOkFromEmpty(Class<?> type, Object exp) throws IOExceptio
5858
{
5959
Object result = COERCING_MAPPER.readerFor(type)
6060
.with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
61+
.without(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
6162
.readValue("\"\"");
6263
if (exp == null) {
6364
assertNull(result);

blackbird/src/test/java/tools/jackson/module/blackbird/roundtrip/BiggerDataTest.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,12 @@ static class Area {
7878
/**********************************************************
7979
*/
8080

81-
private final ObjectMapper MAPPER = newBlackbirdMapper();
81+
private final ObjectMapper MAPPER = blackbirdMapperBuilder()
82+
.disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
83+
.build();
8284

83-
public void testReading() throws Exception
85+
86+
public void testReading() throws Exception
8487
{
8588
Citm citm0 = MAPPER.readValue(getClass().getResourceAsStream("/data/citm_catalog.json"),
8689
Citm.class);

0 commit comments

Comments
 (0)