diff --git a/src/main/java/tools/jackson/dataformat/xml/ser/ToXmlGenerator.java b/src/main/java/tools/jackson/dataformat/xml/ser/ToXmlGenerator.java index c6952d3e..ed21a45b 100644 --- a/src/main/java/tools/jackson/dataformat/xml/ser/ToXmlGenerator.java +++ b/src/main/java/tools/jackson/dataformat/xml/ser/ToXmlGenerator.java @@ -292,6 +292,11 @@ public boolean inRoot() { return _streamWriteContext.inRoot(); } + @Override // @since 3.0 + public XmlPrettyPrinter getPrettyPrinter() { + return _xmlPrettyPrinter; + } + /* /********************************************************************** /* Extended API, access to some internal components diff --git a/src/test/java/tools/jackson/dataformat/xml/ser/XmlPrettyPrinterTest.java b/src/test/java/tools/jackson/dataformat/xml/ser/XmlPrettyPrinterTest.java index b553d5e7..a3d69566 100644 --- a/src/test/java/tools/jackson/dataformat/xml/ser/XmlPrettyPrinterTest.java +++ b/src/test/java/tools/jackson/dataformat/xml/ser/XmlPrettyPrinterTest.java @@ -1,15 +1,19 @@ package tools.jackson.dataformat.xml.ser; +import java.io.StringWriter; import java.util.*; +import javax.xml.namespace.QName; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import tools.jackson.databind.SerializationFeature; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationFeature; import tools.jackson.dataformat.xml.XmlMapper; import tools.jackson.dataformat.xml.XmlTestUtil; import tools.jackson.dataformat.xml.XmlWriteFeature; @@ -147,7 +151,7 @@ public void testSimpleIntBean() throws Exception @Test public void testSimpleMap() throws Exception { - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("a", "b"); String xml = _xmlMapper.writeValueAsString(map); @@ -285,4 +289,31 @@ public void testNewLine_UseSystemDefaultLineSeperatorOnNullCustomNewLine() throw + "" + DEFAULT_NEW_LINE, xml); } + + // [core#1480] + @Test + void accessToPrettyPrinter() { + // By default, no indenting: + XmlMapper noIndentMapper = newMapper(); + try (JsonGenerator g = noIndentMapper.createGenerator(new StringWriter())) { + assertNull(g.getPrettyPrinter()); + _writeDoc(g); + } + + // But can enable + XmlMapper indentingMapper = mapperBuilder() + .enable(SerializationFeature.INDENT_OUTPUT) + .build(); + try (JsonGenerator g = indentingMapper.createGenerator(new StringWriter())) { + assertTrue(g.getPrettyPrinter() instanceof DefaultXmlPrettyPrinter); + _writeDoc(g); + } + } + + private void _writeDoc(JsonGenerator g) { + ((ToXmlGenerator) g).setNextName(new QName("abc")); + g.writeStartObject(); + g.writeNumberProperty("value", 42); + g.writeEndObject(); + } }