2
2
3
3
import java .io .ByteArrayInputStream ;
4
4
import java .io .StringReader ;
5
+ import java .nio .charset .StandardCharsets ;
5
6
7
+ import com .fasterxml .jackson .core .JsonParser ;
8
+ import com .fasterxml .jackson .core .TreeNode ;
6
9
import com .fasterxml .jackson .databind .*;
7
10
8
11
/**
@@ -12,35 +15,127 @@ public class EmptyContentAsTreeTest extends BaseMapTest
12
15
{
13
16
private final ObjectMapper MAPPER = objectMapper ();
14
17
18
+ private final String EMPTY0 = "" ;
19
+ private final byte [] EMPTY0_BYTES = EMPTY0 .getBytes (StandardCharsets .UTF_8 );
20
+ private final String EMPTY1 = " \n \t " ;
21
+ private final byte [] EMPTY1_BYTES = EMPTY1 .getBytes (StandardCharsets .UTF_8 );
22
+
15
23
// [databind#1406]: when passing `JsonParser`, indicate lack of content
16
24
// by returning `null`
17
25
18
- public void testNullFromEOFWithParser () throws Exception
26
+ public void testNullFromEOFWithParserAndMapper () throws Exception
19
27
{
20
- assertNull (MAPPER .readTree (new StringReader ("" )));
21
- assertNull (MAPPER .readTree (new ByteArrayInputStream (new byte [0 ])));
28
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY0 )) {
29
+ _assertNullTree (MAPPER .readTree (p ));
30
+ }
31
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY1 )) {
32
+ _assertNullTree (MAPPER .readTree (p ));
33
+ }
34
+ try (JsonParser p = MAPPER .getFactory ().createParser (new StringReader (EMPTY0 ))) {
35
+ _assertNullTree (MAPPER .readTree (p ));
36
+ }
37
+ try (JsonParser p = MAPPER .getFactory ().createParser (new StringReader (EMPTY1 ))) {
38
+ _assertNullTree (MAPPER .readTree (p ));
39
+ }
40
+
41
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY0_BYTES )) {
42
+ _assertNullTree (MAPPER .readTree (p ));
43
+ }
44
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY1_BYTES )) {
45
+ _assertNullTree (MAPPER .readTree (p ));
46
+ }
47
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY1_BYTES , 0 , EMPTY1_BYTES .length )) {
48
+ _assertNullTree (MAPPER .readTree (p ));
49
+ }
50
+ try (JsonParser p = MAPPER .getFactory ().createParser (new ByteArrayInputStream (EMPTY0_BYTES ))) {
51
+ _assertNullTree (MAPPER .readTree (p ));
52
+ }
53
+ try (JsonParser p = MAPPER .getFactory ().createParser (new ByteArrayInputStream (EMPTY1_BYTES ))) {
54
+ _assertNullTree (MAPPER .readTree (p ));
55
+ }
22
56
}
23
57
24
58
// [databind#1406]
25
- public void testNullFromEOFWithParserViaReader () throws Exception
59
+ public void testNullFromEOFWithParserAndReader () throws Exception
26
60
{
27
- assertNull (MAPPER .readTree (new StringReader ("" )));
28
- assertNull (MAPPER .readTree (new ByteArrayInputStream (new byte [0 ])));
29
- assertNull (MAPPER .readerFor (JsonNode .class )
30
- .readTree (new StringReader ("" )));
31
- assertNull (MAPPER .readerFor (JsonNode .class )
32
- .readTree (new ByteArrayInputStream (new byte [0 ])));
61
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY0 )) {
62
+ _assertNullTree (MAPPER .reader ().readTree (p ));
63
+ }
64
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY1 )) {
65
+ _assertNullTree (MAPPER .reader ().readTree (p ));
66
+ }
67
+ try (JsonParser p = MAPPER .getFactory ().createParser (new StringReader (EMPTY0 ))) {
68
+ _assertNullTree (MAPPER .reader ().readTree (p ));
69
+ }
70
+ try (JsonParser p = MAPPER .getFactory ().createParser (new StringReader (EMPTY1 ))) {
71
+ _assertNullTree (MAPPER .reader ().readTree (p ));
72
+ }
73
+
74
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY0_BYTES )) {
75
+ _assertNullTree (MAPPER .reader ().readTree (p ));
76
+ }
77
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY1_BYTES )) {
78
+ _assertNullTree (MAPPER .reader ().readTree (p ));
79
+ }
80
+ try (JsonParser p = MAPPER .getFactory ().createParser (EMPTY1_BYTES , 0 , EMPTY1_BYTES .length )) {
81
+ _assertNullTree (MAPPER .reader ().readTree (p ));
82
+ }
83
+
84
+ try (JsonParser p = MAPPER .getFactory ().createParser (new ByteArrayInputStream (EMPTY0_BYTES ))) {
85
+ _assertNullTree (MAPPER .reader ().readTree (p ));
86
+ }
87
+ try (JsonParser p = MAPPER .getFactory ().createParser (new ByteArrayInputStream (EMPTY1_BYTES ))) {
88
+ _assertNullTree (MAPPER .reader ().readTree (p ));
89
+ }
33
90
}
34
91
35
92
// [databind#2211]: when passing content sources OTHER than `JsonParser`,
36
93
// return "missing node" instead of alternate (return `null`, throw exception).
37
- public void testMissingNodeForEOFOther () throws Exception
94
+ public void testMissingNodeForEOFOtherMapper () throws Exception
38
95
{
96
+ _assertMissing (MAPPER .readTree (EMPTY0 ));
97
+ _assertMissing (MAPPER .readTree (EMPTY1 ));
98
+ _assertMissing (MAPPER .readTree (new StringReader (EMPTY0 )));
99
+ _assertMissing (MAPPER .readTree (new StringReader (EMPTY1 )));
39
100
101
+ _assertMissing (MAPPER .readTree (EMPTY0_BYTES ));
102
+ _assertMissing (MAPPER .readTree (EMPTY0_BYTES , 0 , EMPTY0_BYTES .length ));
103
+ _assertMissing (MAPPER .readTree (new ByteArrayInputStream (EMPTY0_BYTES )));
104
+ _assertMissing (MAPPER .readTree (EMPTY1_BYTES ));
105
+ _assertMissing (MAPPER .readTree (EMPTY1_BYTES , 0 , EMPTY1_BYTES .length ));
106
+ _assertMissing (MAPPER .readTree (new ByteArrayInputStream (EMPTY1_BYTES )));
107
+
108
+ // Assume File, URL, etc are fine. Note: `DataInput` probably can't be made to
109
+ // work since it can not easily/gracefully handle unexpected end-of-input
40
110
}
41
111
42
- public void testMissingNodeForEOFOtherViaReader () throws Exception
112
+ public void testMissingNodeViaObjectReader () throws Exception
43
113
{
114
+ _assertMissing (MAPPER .reader ().readTree (EMPTY0 ));
115
+ _assertMissing (MAPPER .reader ().readTree (EMPTY1 ));
116
+ _assertMissing (MAPPER .reader ().readTree (new StringReader (EMPTY0 )));
117
+ _assertMissing (MAPPER .reader ().readTree (new StringReader (EMPTY1 )));
44
118
119
+ _assertMissing (MAPPER .reader ().readTree (EMPTY0_BYTES ));
120
+ _assertMissing (MAPPER .reader ().readTree (EMPTY0_BYTES , 0 , EMPTY0_BYTES .length ));
121
+ _assertMissing (MAPPER .reader ().readTree (new ByteArrayInputStream (EMPTY0_BYTES )));
122
+ _assertMissing (MAPPER .reader ().readTree (EMPTY1_BYTES ));
123
+ _assertMissing (MAPPER .reader ().readTree (EMPTY1_BYTES , 0 , EMPTY1_BYTES .length ));
124
+ _assertMissing (MAPPER .reader ().readTree (new ByteArrayInputStream (EMPTY1_BYTES )));
125
+ }
126
+
127
+ private void _assertNullTree (TreeNode n ) {
128
+ if (n != null ) {
129
+ fail ("Should get `null` for reads with `JsonParser`, instead got: " +n .getClass ().getName ());
130
+ }
131
+ }
132
+
133
+ private void _assertMissing (JsonNode n ) {
134
+ /*
135
+ assertNotNull("Should not get `null` but `MissingNode`", n);
136
+ if (!n.isMissingNode()) {
137
+ fail("Should get `MissingNode` but got: "+n.getClass().getName());
138
+ }
139
+ */
45
140
}
46
141
}
0 commit comments