10
10
import com .fasterxml .jackson .dataformat .xml .XmlTestBase ;
11
11
import com .fasterxml .jackson .dataformat .xml .deser .FromXmlParser ;
12
12
13
-
14
13
public class XmlParserTest extends XmlTestBase
15
14
{
16
15
/*
@@ -76,74 +75,74 @@ public void testRoundTripWithSample() throws Exception
76
75
// Former could be worked around; latter less so at this point.
77
76
78
77
// So, for now, let's just do sort of minimal verification, manually
79
- JsonParser jp = _xmlMapper .getFactory ().createParser (xml );
78
+ JsonParser p = _xmlMapper .getFactory ().createParser (xml );
80
79
81
- assertToken (JsonToken .START_OBJECT , jp .nextToken ()); // main object
82
-
83
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Image'
84
- verifyFieldName (jp , "Image" );
85
- assertToken (JsonToken .START_OBJECT , jp .nextToken ()); // 'image' object
86
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Width'
87
- verifyFieldName (jp , "Width" );
88
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
89
- assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_WIDTH ), jp .getText ());
90
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Height'
91
- verifyFieldName (jp , "Height" );
92
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
93
- assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_HEIGHT ), jp .getText ());
94
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Title'
95
- verifyFieldName (jp , "Title" );
96
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
97
- assertEquals (SAMPLE_SPEC_VALUE_TITLE , getAndVerifyText (jp ));
98
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Thumbnail'
99
- verifyFieldName (jp , "Thumbnail" );
100
- assertToken (JsonToken .START_OBJECT , jp .nextToken ()); // 'thumbnail' object
101
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Url'
102
- verifyFieldName (jp , "Url" );
103
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
104
- assertEquals (SAMPLE_SPEC_VALUE_TN_URL , getAndVerifyText (jp ));
105
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Height'
106
- verifyFieldName (jp , "Height" );
107
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
108
- assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_HEIGHT ), jp .getText ());
109
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ()); // 'Width'
110
- verifyFieldName (jp , "Width" );
80
+ assertToken (JsonToken .START_OBJECT , p .nextToken ()); // main object
81
+
82
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Image'
83
+ verifyFieldName (p , "Image" );
84
+ assertToken (JsonToken .START_OBJECT , p .nextToken ()); // 'image' object
85
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Width'
86
+ verifyFieldName (p , "Width" );
87
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
88
+ assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_WIDTH ), p .getText ());
89
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Height'
90
+ verifyFieldName (p , "Height" );
91
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
92
+ assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_HEIGHT ), p .getText ());
93
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Title'
94
+ verifyFieldName (p , "Title" );
95
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
96
+ assertEquals (SAMPLE_SPEC_VALUE_TITLE , getAndVerifyText (p ));
97
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Thumbnail'
98
+ verifyFieldName (p , "Thumbnail" );
99
+ assertToken (JsonToken .START_OBJECT , p .nextToken ()); // 'thumbnail' object
100
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Url'
101
+ verifyFieldName (p , "Url" );
102
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
103
+ assertEquals (SAMPLE_SPEC_VALUE_TN_URL , getAndVerifyText (p ));
104
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Height'
105
+ verifyFieldName (p , "Height" );
106
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
107
+ assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_HEIGHT ), p .getText ());
108
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ()); // 'Width'
109
+ verifyFieldName (p , "Width" );
111
110
// Width value is actually a String in the example
112
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
113
- assertEquals (SAMPLE_SPEC_VALUE_TN_WIDTH , getAndVerifyText (jp ));
111
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
112
+ assertEquals (SAMPLE_SPEC_VALUE_TN_WIDTH , getAndVerifyText (p ));
114
113
115
- assertToken (JsonToken .END_OBJECT , jp .nextToken ()); // 'thumbnail' object
114
+ assertToken (JsonToken .END_OBJECT , p .nextToken ()); // 'thumbnail' object
116
115
117
116
// Note: arrays are "eaten"; wrapping is done using BeanPropertyWriter, so:
118
- //assertToken(JsonToken.FIELD_NAME, jp .nextToken()); // 'IDs'
119
- //verifyFieldName(jp , "IDs");
120
- //assertToken(JsonToken.START_OBJECT, jp .nextToken()); // 'ids' array
121
-
122
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ());
123
- verifyFieldName (jp , "IDs" );
124
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
125
- assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID1 ), getAndVerifyText (jp ));
126
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ());
127
- verifyFieldName (jp , "IDs" );
128
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
129
- assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID2 ), getAndVerifyText (jp ));
130
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ());
131
- verifyFieldName (jp , "IDs" );
132
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
133
- assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID3 ), getAndVerifyText (jp ));
134
- assertToken (JsonToken .FIELD_NAME , jp .nextToken ());
135
- verifyFieldName (jp , "IDs" );
136
- assertToken (JsonToken .VALUE_STRING , jp .nextToken ());
137
- assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID4 ), getAndVerifyText (jp ));
117
+ //assertToken(JsonToken.FIELD_NAME, p .nextToken()); // 'IDs'
118
+ //verifyFieldName(p , "IDs");
119
+ //assertToken(JsonToken.START_OBJECT, p .nextToken()); // 'ids' array
120
+
121
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ());
122
+ verifyFieldName (p , "IDs" );
123
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
124
+ assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID1 ), getAndVerifyText (p ));
125
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ());
126
+ verifyFieldName (p , "IDs" );
127
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
128
+ assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID2 ), getAndVerifyText (p ));
129
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ());
130
+ verifyFieldName (p , "IDs" );
131
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
132
+ assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID3 ), getAndVerifyText (p ));
133
+ assertToken (JsonToken .FIELD_NAME , p .nextToken ());
134
+ verifyFieldName (p , "IDs" );
135
+ assertToken (JsonToken .VALUE_STRING , p .nextToken ());
136
+ assertEquals (String .valueOf (SAMPLE_SPEC_VALUE_TN_ID4 ), getAndVerifyText (p ));
138
137
139
138
// no matching entry for array:
140
- //assertToken(JsonToken.END_OBJECT, jp .nextToken()); // 'ids' array
139
+ //assertToken(JsonToken.END_OBJECT, p .nextToken()); // 'ids' array
141
140
142
- assertToken (JsonToken .END_OBJECT , jp .nextToken ()); // 'image' object
141
+ assertToken (JsonToken .END_OBJECT , p .nextToken ()); // 'image' object
143
142
144
- assertToken (JsonToken .END_OBJECT , jp .nextToken ()); // main object
143
+ assertToken (JsonToken .END_OBJECT , p .nextToken ()); // main object
145
144
146
- jp .close ();
145
+ p .close ();
147
146
}
148
147
149
148
/**
@@ -202,6 +201,11 @@ public void testForceElementAsArray() throws Exception
202
201
assertEquals ("property" , xp .getCurrentName ());
203
202
assertToken (JsonToken .VALUE_STRING , xp .nextToken ());
204
203
assertEquals ("123" , xp .getText ());
204
+
205
+ StringWriter w = new StringWriter ();
206
+ assertEquals (3 , xp .getText (w ));
207
+ assertEquals ("123" , w .toString ());
208
+
205
209
assertTrue (xp .getParsingContext ().inObject ());
206
210
assertToken (JsonToken .END_OBJECT , xp .nextToken ()); // </property>
207
211
assertTrue (xp .getParsingContext ().inArray ());
@@ -237,9 +241,18 @@ public void testXmlAttributes() throws Exception
237
241
238
242
assertToken (JsonToken .FIELD_NAME , xp .nextToken ()); // <offset>
239
243
assertEquals ("offset" , xp .getCurrentName ());
244
+
245
+ StringWriter w = new StringWriter ();
246
+ assertEquals (6 , xp .getText (w ));
247
+ assertEquals ("offset" , w .toString ());
248
+
240
249
assertToken (JsonToken .VALUE_STRING , xp .nextToken ());
241
250
assertEquals ("9" , xp .getText ());
242
251
252
+ w = new StringWriter ();
253
+ assertEquals (1 , xp .getText (w ));
254
+ assertEquals ("9" , w .toString ());
255
+
243
256
assertToken (JsonToken .END_OBJECT , xp .nextToken ()); // </data>
244
257
xp .close ();
245
258
}
@@ -248,12 +261,12 @@ private String _readXmlWriteJson(String xml) throws IOException
248
261
{
249
262
StringWriter w = new StringWriter ();
250
263
251
- JsonParser jp = _xmlFactory .createParser (xml );
264
+ JsonParser p = _xmlFactory .createParser (xml );
252
265
JsonGenerator jg = _jsonFactory .createGenerator (w );
253
- while (jp .nextToken () != null ) {
254
- jg .copyCurrentEvent (jp );
266
+ while (p .nextToken () != null ) {
267
+ jg .copyCurrentEvent (p );
255
268
}
256
- jp .close ();
269
+ p .close ();
257
270
jg .close ();
258
271
return w .toString ();
259
272
}
0 commit comments