Skip to content

Commit 8ce56fc

Browse files
committed
Add release notes wrt #3174
1 parent 5e82b9e commit 8ce56fc

File tree

3 files changed

+26
-18
lines changed

3 files changed

+26
-18
lines changed

release-notes/CREDITS-2.x

+5
Original file line numberDiff line numberDiff line change
@@ -1343,3 +1343,8 @@ Eric Sirianni (sirianni@github)
13431343
Tarekk Mohamed Abdalla (TarekkMA@github)
13441344
* Contributed #3154: Add ArrayNode#set(int index, primitive_type value)
13451345
(2.13.0)
1346+
1347+
Morten Andersen-Gott (magott@github)
1348+
* Contributed #3174: DOM `Node` serialization omits the default namespace declaration
1349+
(2.13.0)
1350+

release-notes/VERSION-2.x

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ Project: jackson-databind
4444
serialization of ClassLoader)
4545
#3154: Add ArrayNode#set(int index, primitive_type value)
4646
(contributed by Tarekk Mohamed A)
47+
#3174: DOM `Node` serialization omits the default namespace declaration
48+
(contributed by Morten A-G)
4749
- Fix to avoid problem with `BigDecimalNode`, scale of `Integer.MIN_VALUE` (see
4850
[dataformats-binary#264] for details)
4951
- Extend handling of `FAIL_ON_NULL_FOR_PRIMITIVES` to cover coercion from (Empty) String

src/main/java/com/fasterxml/jackson/databind/ext/DOMSerializer.java

+19-18
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,57 @@
11
package com.fasterxml.jackson.databind.ext;
22

3+
import java.io.IOException;
4+
import java.io.StringWriter;
5+
6+
import javax.xml.XMLConstants;
7+
import javax.xml.transform.*;
8+
import javax.xml.transform.dom.DOMSource;
9+
import javax.xml.transform.stream.StreamResult;
10+
11+
import org.w3c.dom.Node;
12+
313
import com.fasterxml.jackson.core.JsonGenerator;
414
import com.fasterxml.jackson.databind.JavaType;
515
import com.fasterxml.jackson.databind.JsonMappingException;
616
import com.fasterxml.jackson.databind.JsonNode;
717
import com.fasterxml.jackson.databind.SerializerProvider;
818
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
919
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
10-
import org.w3c.dom.Node;
1120

12-
import javax.xml.XMLConstants;
13-
import javax.xml.transform.*;
14-
import javax.xml.transform.dom.DOMSource;
15-
import javax.xml.transform.stream.StreamResult;
16-
import java.io.IOException;
17-
import java.io.StringWriter;
1821
@SuppressWarnings("serial")
1922
public class DOMSerializer extends StdSerializer<Node>
2023
{
21-
22-
private final TransformerFactory transformerFactory;
24+
protected final TransformerFactory transformerFactory;
2325

2426
public DOMSerializer() {
2527
super(Node.class);
2628
try {
2729
transformerFactory = TransformerFactory.newInstance();
2830
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
2931
} catch (Exception e) {
30-
throw new IllegalStateException("Could not instantiate TransformerFactory: "+e.getMessage(), e);
32+
throw new IllegalStateException("Could not instantiate `TransformerFactory`: "+e.getMessage(), e);
3133
}
3234
}
33-
35+
3436
@Override
35-
public void serialize(Node value, JsonGenerator jgen, SerializerProvider provider)
37+
public void serialize(Node value, JsonGenerator g, SerializerProvider provider)
3638
throws IOException
3739
{
3840
try {
3941
Transformer transformer = transformerFactory.newTransformer();
4042
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
4143
transformer.setOutputProperty(OutputKeys.INDENT, "no");
4244
StreamResult result = new StreamResult(new StringWriter());
43-
DOMSource source = new DOMSource(value);
44-
transformer.transform(source, result);
45-
jgen.writeString(result.getWriter().toString());
45+
transformer.transform(new DOMSource(value), result);
46+
g.writeString(result.getWriter().toString());
4647
} catch (TransformerConfigurationException e) {
47-
throw new IllegalStateException("Could not create XML Transformer: "+e.getMessage(), e);
48+
throw new IllegalStateException("Could not create XML Transformer for writing DOM `Node` value: "+e.getMessage(), e);
4849
} catch (TransformerException e) {
49-
provider.reportMappingProblem(e,"XML Transformation failed: %s", e.getMessage());
50+
provider.reportMappingProblem(e, "DOM `Node` value serialization failed: %s", e.getMessage());
5051
}
5152
}
5253

53-
@Override
54+
@Override
5455
public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type typeHint) {
5556
// Well... it is serialized as String
5657
return createSchemaNode("string", true);

0 commit comments

Comments
 (0)