Skip to content

Commit 682d835

Browse files
committed
Fixed #493
1 parent 7cae999 commit 682d835

File tree

3 files changed

+46
-4
lines changed

3 files changed

+46
-4
lines changed

release-notes/VERSION-2.x

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Project: jackson-dataformat-xml
44
=== Releases ===
55
------------------------------------------------------------------------
66

7+
2.13.1 (not yet released)
8+
9+
#493: SequenceWriter returns NPE when trying XML serialization
10+
(reported by Moribund7@github)
11+
712
2.13.0 (30-Sep-2021)
813

914
#441: Add `ToXmlGenerator.Feature.UNWRAP_ROOT_OBJECT_NODE` (to avoid

src/main/java/com/fasterxml/jackson/dataformat/xml/ser/XmlSerializerProvider.java

+12-4
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,14 @@ public void serializeValue(JsonGenerator gen, Object value, JavaType rootType,
149149
}
150150
QName rootName = _rootNameFromConfig();
151151
if (rootName == null) {
152-
rootName = _rootNameLookup.findRootName(rootType, _config);
152+
rootName = (rootType == null)
153+
? _rootNameLookup.findRootName(value.getClass(), _config)
154+
: _rootNameLookup.findRootName(rootType, _config);
153155
}
154156
_initWithRootName(xgen, rootName);
155-
asArray = TypeUtil.isIndexedType(rootType);
157+
asArray = (rootType == null)
158+
? TypeUtil.isIndexedType(value.getClass())
159+
: TypeUtil.isIndexedType(rootType);
156160
if (asArray) {
157161
_startRootArray(xgen, rootName);
158162
}
@@ -194,10 +198,14 @@ public void serializePolymorphic(JsonGenerator gen, Object value, JavaType rootT
194198
} else {
195199
QName rootName = _rootNameFromConfig();
196200
if (rootName == null) {
197-
rootName = _rootNameLookup.findRootName(rootType, _config);
201+
rootName = (rootType == null)
202+
? _rootNameLookup.findRootName(value.getClass(), _config)
203+
: _rootNameLookup.findRootName(rootType, _config);
198204
}
199205
_initWithRootName(xgen, rootName);
200-
asArray = TypeUtil.isIndexedType(rootType);
206+
asArray = (rootType == null)
207+
? TypeUtil.isIndexedType(value.getClass())
208+
: TypeUtil.isIndexedType(rootType);
201209
if (asArray) {
202210
_startRootArray(xgen, rootName);
203211
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.fasterxml.jackson.dataformat.xml.misc;
2+
3+
import java.io.*;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
import com.fasterxml.jackson.databind.SequenceWriter;
8+
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
9+
import com.fasterxml.jackson.dataformat.xml.XmlTestBase;
10+
11+
public class SequenceWrite493Test extends XmlTestBase
12+
{
13+
private final XmlMapper MAPPER = newMapper();
14+
15+
public void testIssue493() throws Exception
16+
{
17+
try (Writer w = new StringWriter()) {
18+
SequenceWriter seqWriter = MAPPER.writer().writeValues(w);
19+
20+
Map<String, String> reportObject = new HashMap<>();
21+
reportObject.put("a", "b");
22+
seqWriter.write(reportObject);
23+
24+
seqWriter.close();
25+
26+
assertEquals("<HashMap><a>b</a></HashMap>", w.toString().trim());
27+
}
28+
}
29+
}

0 commit comments

Comments
 (0)