Skip to content

Add test for issue #315 using GeneratorInitializer to write custom XML declaration encoding#842

Closed
Copilot wants to merge 1 commit into3.xfrom
copilot/test-generator-initializer-use-case
Closed

Add test for issue #315 using GeneratorInitializer to write custom XML declaration encoding#842
Copilot wants to merge 1 commit into3.xfrom
copilot/test-generator-initializer-use-case

Conversation

Copy link
Copy Markdown

Copilot AI commented Apr 1, 2026

Issue #315 reports that the XML declaration encoding is hard-coded to UTF-8, with no supported mechanism to emit a different encoding (e.g. ISO-8859-1). The GeneratorInitializer extension point added in jackson-databind 3.2 (databind#5860) provides a clean solution: the initializer receives the freshly-created ToXmlGenerator before any content is written, allowing direct access to the underlying XMLStreamWriter to write a custom <?xml?> declaration.

Changes

  • New test GeneratorInitializer315Test in src/test/java/…/xml/ser/ demonstrating the workaround:
    • Registers a GeneratorInitializer via XmlMapper.builder().generatorInitializer(...)
    • Casts JsonGeneratorToXmlGenerator, retrieves XMLStreamWriter via getStaxWriter()
    • Calls sw.writeStartDocument("ISO-8859-1", "1.0") before Jackson writes any content
    • Asserts the serialized output contains the custom encoding in the XML declaration
GeneratorInitializer initializer = (config, gen) -> {
    XMLStreamWriter sw = ((ToXmlGenerator) gen).getStaxWriter();
    sw.writeStartDocument("ISO-8859-1", "1.0");
};
XmlMapper mapper = XmlMapper.builder()
        .generatorInitializer(initializer)
        .build();
String xml = mapper.writeValueAsString(new StringBean("test"));
assertTrue(xml.contains("encoding='ISO-8859-1'"));

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • central.sonatype.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.14/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/jackson-dataformat-xml/jackson-dataformat-xml org.codehaus.plexus.classworlds.launcher.Launcher dependency:resolve -q (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.14/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/jackson-dataformat-xml/jackson-dataformat-xml org.codehaus.plexus.classworlds.launcher.Launcher help:effective-pom -q (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.14/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/jackson-dataformat-xml/jackson-dataformat-xml org.codehaus.plexus.classworlds.launcher.Launcher dependency:list -q (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI changed the title [WIP] Add test for generator initializer in issue #315 Add test for issue #315 using GeneratorInitializer to write custom XML declaration encoding Apr 1, 2026
Copilot AI requested a review from pjfanning April 1, 2026 08:53
@pjfanning
Copy link
Copy Markdown
Member

added a test with ae7e650

@pjfanning pjfanning closed this Apr 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants