Skip to content

Commit 4fc290e

Browse files
committed
Merge branch '2.19'
2 parents 452fe21 + a128083 commit 4fc290e

File tree

10 files changed

+86
-18
lines changed

10 files changed

+86
-18
lines changed

avro/src/test/java/tools/jackson/dataformat/avro/POJOSimpleReadTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ private void _testSimplePojoViaParser(Employee empl, byte[] avro,
6161
assertFalse(p.hasStringCharacters());
6262
assertEquals("name", p.currentName());
6363
assertEquals("name", p.getString());
64+
assertEquals("name", p.getValueAsString());
65+
assertEquals("name", p.getValueAsString("x"));
6466
assertToken(JsonToken.VALUE_STRING, p.nextToken());
6567
assertEquals(empl.name, p.getString());
6668

@@ -71,6 +73,9 @@ private void _testSimplePojoViaParser(Employee empl, byte[] avro,
7173
assertTrue(p.hasStringCharacters());
7274
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
7375
assertEquals("age", p.currentName());
76+
assertEquals("age", p.getString());
77+
assertEquals("age", p.getValueAsString());
78+
assertEquals("age", p.getValueAsString("x"));
7479
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
7580
assertEquals(NumberType.INT, p.getNumberType());
7681
assertEquals(Integer.valueOf(empl.age), p.getNumberValue());
@@ -83,6 +88,9 @@ private void _testSimplePojoViaParser(Employee empl, byte[] avro,
8388
sw = new StringWriter();
8489
assertEquals(6, p.getString(sw));
8590
assertEquals("emails", sw.toString());
91+
assertEquals("emails", p.getString());
92+
assertEquals("emails", p.getValueAsString());
93+
assertEquals("emails", p.getValueAsString("x"));
8694

8795
assertToken(JsonToken.START_ARRAY, p.nextToken());
8896
assertToken(JsonToken.VALUE_STRING, p.nextToken());

cbor/src/main/java/tools/jackson/dataformat/cbor/CBORParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,6 +1744,9 @@ public String getValueAsString() throws JacksonException
17441744
if (_currToken == JsonToken.VALUE_STRING) {
17451745
return _sharedString == null ? _textBuffer.contentsAsString() : _sharedString;
17461746
}
1747+
if (_currToken == JsonToken.PROPERTY_NAME) {
1748+
return currentName();
1749+
}
17471750
if (_currToken == null || _currToken == JsonToken.VALUE_NULL || !_currToken.isScalarValue()) {
17481751
return null;
17491752
}
@@ -1754,6 +1757,9 @@ public String getValueAsString() throws JacksonException
17541757
public String getValueAsString(String defaultValue) throws JacksonException
17551758
{
17561759
if (_currToken != JsonToken.VALUE_STRING) {
1760+
if (_currToken == JsonToken.PROPERTY_NAME) {
1761+
return currentName();
1762+
}
17571763
if (_currToken == null || _currToken == JsonToken.VALUE_NULL || !_currToken.isScalarValue()) {
17581764
return defaultValue;
17591765
}

cbor/src/test/java/tools/jackson/dataformat/cbor/parse/BasicParserTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,14 @@ public void testStringField() throws IOException {
248248
assertEquals(JsonToken.START_OBJECT, parser.nextToken());
249249
assertEquals(JsonToken.PROPERTY_NAME, parser.nextToken());
250250
assertEquals("a", parser.currentName());
251+
assertEquals("a", parser.getString());
252+
assertEquals("a", parser.getValueAsString());
253+
assertEquals("a", parser.getValueAsString("x"));
251254
assertEquals(JsonToken.VALUE_STRING, parser.nextToken());
252255
assertEquals("a", parser.currentName());
253256
assertEquals("b", parser.getString());
257+
assertEquals("b", parser.getValueAsString());
258+
assertEquals("b", parser.getValueAsString("x"));
254259
assertEquals(1, parser.getStringLength());
255260
assertEquals(JsonToken.END_OBJECT, parser.nextToken());
256261

@@ -281,14 +286,23 @@ public void testNestedObject() throws IOException
281286

282287
assertEquals(JsonToken.PROPERTY_NAME, parser.nextToken());
283288
assertEquals("ob", parser.currentName());
289+
assertEquals("ob", parser.getString());
290+
assertEquals("ob", parser.getValueAsString());
291+
assertEquals("ob", parser.getValueAsString("x"));
284292
assertEquals(JsonToken.START_OBJECT, parser.nextToken());
285293
assertEquals(JsonToken.PROPERTY_NAME, parser.nextToken());
286294
assertEquals("num", parser.currentName());
295+
assertEquals("num", parser.getString());
296+
assertEquals("num", parser.getValueAsString());
297+
assertEquals("num", parser.getValueAsString("y"));
287298
assertEquals(JsonToken.VALUE_NUMBER_INT, parser.nextToken());
288299
assertEquals(JsonToken.END_OBJECT, parser.nextToken());
289300

290301
assertEquals(JsonToken.PROPERTY_NAME, parser.nextToken());
291302
assertEquals("arr", parser.currentName());
303+
assertEquals("arr", parser.getString());
304+
assertEquals("arr", parser.getValueAsString());
305+
assertEquals("arr", parser.getValueAsString("z"));
292306
assertEquals(JsonToken.START_ARRAY, parser.nextToken());
293307
assertEquals(JsonToken.END_ARRAY, parser.nextToken());
294308

ion/src/test/java/tools/jackson/dataformat/ion/IonParserTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@ public void testUnknownSymbolExceptionForFieldNameIsWrapped() throws IOException
178178
Assert.assertEquals(JsonToken.START_OBJECT, parser.nextToken());
179179
Assert.assertEquals(JsonToken.PROPERTY_NAME, parser.nextToken());
180180
Assert.assertEquals("a", parser.currentName());
181+
Assert.assertEquals("a", parser.getString());
182+
Assert.assertEquals("a", parser.getValueAsString());
183+
Assert.assertEquals("a", parser.getValueAsString("b"));
181184
Assert.assertEquals(JsonToken.VALUE_NUMBER_INT, parser.nextValue());
182185
Assert.assertEquals(1, parser.getIntValue());
183186
parser.nextValue(); // Should encounter unknown symbol and fail

protobuf/src/main/java/tools/jackson/dataformat/protobuf/ProtobufParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1462,6 +1462,9 @@ public String getValueAsString() throws JacksonException
14621462
}
14631463
return _textBuffer.contentsAsString();
14641464
}
1465+
if (_currToken == JsonToken.PROPERTY_NAME) {
1466+
return currentName();
1467+
}
14651468
if (_currToken == null || _currToken == JsonToken.VALUE_NULL || !_currToken.isScalarValue()) {
14661469
return null;
14671470
}
@@ -1472,6 +1475,9 @@ public String getValueAsString() throws JacksonException
14721475
public String getValueAsString(String defaultValue) throws JacksonException
14731476
{
14741477
if (_currToken != JsonToken.VALUE_STRING) {
1478+
if (_currToken == JsonToken.PROPERTY_NAME) {
1479+
return currentName();
1480+
}
14751481
if (_currToken == null || _currToken == JsonToken.VALUE_NULL || !_currToken.isScalarValue()) {
14761482
return defaultValue;
14771483
}

protobuf/src/test/java/tools/jackson/dataformat/protobuf/ReadSimpleProtobufTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,18 @@ public void testReadPointLong() throws Exception
138138
assertNull(p.currentName());
139139
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
140140
assertEquals("x", p.currentName());
141+
assertEquals("x", p.getString());
142+
assertEquals("x", p.getValueAsString());
143+
assertEquals("x", p.getValueAsString("y"));
141144
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
142145
assertEquals(NumberType.LONG, p.getNumberType());
143146
assertEquals(NumberTypeFP.UNKNOWN, p.getNumberTypeFP());
144147
assertEquals(input.x, p.getIntValue());
145148
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
146149
assertEquals("y", p.currentName());
150+
assertEquals("y", p.getString());
151+
assertEquals("y", p.getValueAsString());
152+
assertEquals("y", p.getValueAsString("abc"));
147153
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
148154
assertEquals(input.y, p.getIntValue());
149155
assertToken(JsonToken.END_OBJECT, p.nextToken());

release-notes/CREDITS-2.x

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,11 @@ Yoann Vernageau (@yvrng)
330330
when source is an empty `InputStream`
331331
(2.17.1)
332332

333+
John Hudson (@johhud1)
334+
* Contributed fix for #541: (cbor, protobuf, smile) `SmileParser.getValueAsString()`
335+
FIELD_NAME bug
336+
(2.17.4)
337+
333338
Rafał Harabień (@rafalh)
334339
* Contributed fix for #167: (avro) Incompatibility with Avro >=1.9.0 (upgrade to Avro 1.11.3)
335340
(2.18.0)

release-notes/VERSION-2.x

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ Active maintainers:
1919
#536: (avro) Add Logical Type support for `java.util.UUID`
2020
(contributed by Michal F)
2121

22+
2.18.3 (not yet released)
23+
24+
#541: (cbor, protobuf, smile) `SmileParser.getValueAsString()` FIELD_NAME bug
25+
(fix contributed by John H)
26+
2227
2.18.2 (27-Nov-2024)
2328

2429
No changes since 2.18.1

smile/src/main/java/tools/jackson/dataformat/smile/SmileParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,6 +1425,9 @@ public String getValueAsString() throws JacksonException
14251425
if (_currToken == JsonToken.VALUE_STRING) {
14261426
return _textBuffer.contentsAsString();
14271427
}
1428+
if (_currToken == JsonToken.PROPERTY_NAME) {
1429+
return currentName();
1430+
}
14281431
if (_currToken == null || _currToken == JsonToken.VALUE_NULL || !_currToken.isScalarValue()) {
14291432
return null;
14301433
}
@@ -1435,6 +1438,9 @@ public String getValueAsString() throws JacksonException
14351438
public String getValueAsString(String defaultValue) throws JacksonException
14361439
{
14371440
if (_currToken != JsonToken.VALUE_STRING) {
1441+
if (_currToken == JsonToken.PROPERTY_NAME) {
1442+
return currentName();
1443+
}
14381444
if (_currToken == null || _currToken == JsonToken.VALUE_NULL || !_currToken.isScalarValue()) {
14391445
return defaultValue;
14401446
}

smile/src/test/java/tools/jackson/dataformat/smile/parse/BasicParserTest.java

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -213,30 +213,39 @@ public void testTrivialObject() throws IOException
213213
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
214214
assertEquals("abc", p.currentName());
215215
assertEquals("abc", p.getString());
216+
assertEquals("abc", p.getValueAsString());
217+
assertEquals("abc", p.getValueAsString("xyz"));
216218
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
217219
assertEquals(13, p.getIntValue());
218-
assertToken(JsonToken.END_OBJECT, p.nextToken());
219-
p.close();
220+
assertToken(JsonToken.END_OBJECT, p.nextToken());
221+
p.close();
220222
}
221223

222224
public void testSimpleObject() throws IOException
223225
{
224-
byte[] data = _smileDoc("{\"a\":8, \"b\" : [ true ], \"c\" : { }, \"d\":{\"e\":null}}");
225-
JsonParser p = _smileParser(data);
226-
assertNull(p.currentToken());
227-
assertToken(JsonToken.START_OBJECT, p.nextToken());
226+
byte[] data = _smileDoc("{\"a\":8, \"b\" : [ true ], \"c\" : { }, \"d\":{\"e\":null}}");
227+
JsonParser p = _smileParser(data);
228+
assertNull(p.currentToken());
229+
assertToken(JsonToken.START_OBJECT, p.nextToken());
228230

229-
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
230-
assertEquals("a", p.currentName());
231-
assertEquals("a", p.getString());
232-
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
233-
assertEquals(8, p.getIntValue());
231+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
232+
assertEquals("a", p.currentName());
233+
assertEquals("a", p.getString());
234+
assertEquals("a", p.getValueAsString());
235+
assertEquals("a", p.getValueAsString("x"));
234236

235-
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
236-
assertEquals("b", p.currentName());
237-
assertToken(JsonToken.START_ARRAY, p.nextToken());
238-
assertToken(JsonToken.VALUE_TRUE, p.nextToken());
239-
assertToken(JsonToken.END_ARRAY, p.nextToken());
237+
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
238+
assertEquals(8, p.getIntValue());
239+
240+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
241+
assertEquals("b", p.currentName());
242+
assertEquals("b", p.getString());
243+
assertEquals("b", p.getValueAsString());
244+
assertEquals("b", p.getValueAsString("y"));
245+
246+
assertToken(JsonToken.START_ARRAY, p.nextToken());
247+
assertToken(JsonToken.VALUE_TRUE, p.nextToken());
248+
assertToken(JsonToken.END_ARRAY, p.nextToken());
240249

241250
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
242251
assertEquals("c", p.currentName());
@@ -281,8 +290,8 @@ public void testNestedObject() throws IOException
281290

282291
public void testJsonSampleDoc() throws IOException
283292
{
284-
byte[] data = _smileDoc(SAMPLE_DOC_JSON_SPEC);
285-
verifyJsonSpecSampleDoc(_smileParser(data), true);
293+
byte[] data = _smileDoc(SAMPLE_DOC_JSON_SPEC);
294+
verifyJsonSpecSampleDoc(_smileParser(data), true);
286295
}
287296

288297
public void testUnicodeStringValues() throws IOException

0 commit comments

Comments
 (0)