Skip to content

Commit afc3109

Browse files
authored
Fix #657: track nesting depth (#658)
1 parent d05688e commit afc3109

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

release-notes/VERSION-2.x

+6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ Project: jackson-dataformat-xml
88

99
No changes since 2.17
1010

11+
2.17.2 (not yet released)
12+
13+
#657: Nesting depth in `XmlReadContext` is not incremented/decremented on
14+
JsonToken.START_OBJECT/JsonToken.END_OBJECT
15+
(reported by @AlexUg)
16+
1117
2.17.1 (04-May-2024)
1218

1319
#646: Deserializing fails when using builder classes with `Iterable` Collection setters

src/main/java/com/fasterxml/jackson/dataformat/xml/deser/XmlReadContext.java

+2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public XmlReadContext(XmlReadContext parent, int type, int lineNr, int colNr)
6666
_lineNr = lineNr;
6767
_columnNr = colNr;
6868
_index = -1;
69+
_nestingDepth = parent == null ? 0 : parent._nestingDepth + 1;
6970
}
7071

7172
protected final void reset(int type, int lineNr, int colNr)
@@ -77,6 +78,7 @@ protected final void reset(int type, int lineNr, int colNr)
7778
_currentName = null;
7879
_currentValue = null;
7980
_namesToWrap = null;
81+
// _nestingDepth fine as is, same level for reuse
8082
}
8183

8284
@Override

src/test/java/com/fasterxml/jackson/dataformat/xml/stream/XmlParserTest.java

+6
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,19 @@ public void testSimplest() throws Exception
3030
// -> "{\"leaf\":\"abc\"}"
3131

3232
try (JsonParser p = _xmlMapper.createParser(XML)) {
33+
assertEquals(0, p.getParsingContext().getNestingDepth());
3334
assertToken(JsonToken.START_OBJECT, p.nextToken());
35+
assertEquals(1, p.getParsingContext().getNestingDepth());
3436
assertToken(JsonToken.FIELD_NAME, p.nextToken());
3537
assertEquals("leaf", p.currentName());
38+
assertEquals(1, p.getParsingContext().getNestingDepth());
3639
assertToken(JsonToken.VALUE_STRING, p.nextToken());
3740
assertEquals("abc", p.getText());
41+
assertEquals(1, p.getParsingContext().getNestingDepth());
3842
assertToken(JsonToken.END_OBJECT, p.nextToken());
43+
assertEquals(0, p.getParsingContext().getNestingDepth());
3944
assertNull(p.nextToken());
45+
assertEquals(0, p.getParsingContext().getNestingDepth());
4046
}
4147
}
4248

0 commit comments

Comments
 (0)