diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/XmlParserVisitor.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/XmlParserVisitor.java index f12be7615e7..7cf518756c9 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/XmlParserVisitor.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/XmlParserVisitor.java @@ -335,7 +335,7 @@ public Xml.DocTypeDecl visitDoctypedecl(XMLParser.DoctypedeclContext ctx) { Markers.EMPTY, name, externalId, - internalSubset, + internalSubset == null ? Collections.emptyList() : internalSubset, externalSubsets, beforeTagDelimiterPrefix); }); diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/tree/Xml.java b/rewrite-xml/src/main/java/org/openrewrite/xml/tree/Xml.java index 63f45d29e7f..901ff50e765 100755 --- a/rewrite-xml/src/main/java/org/openrewrite/xml/tree/Xml.java +++ b/rewrite-xml/src/main/java/org/openrewrite/xml/tree/Xml.java @@ -618,6 +618,7 @@ public String getPrefix() { Markers markers; Ident name; + @Nullable Ident externalId; List internalSubset; diff --git a/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java b/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java index 6290e883677..1c2b030de79 100755 --- a/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java +++ b/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java @@ -16,14 +16,35 @@ package org.openrewrite.xml; import org.junit.jupiter.api.Test; +import org.openrewrite.ExecutionContext; import org.openrewrite.Issue; +import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; +import org.openrewrite.xml.tree.Xml; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.openrewrite.test.RewriteTest.toRecipe; import static org.openrewrite.xml.Assertions.xml; @SuppressWarnings({"CheckDtdRefs", "CheckTagEmptyBody"}) class XmlParserTest implements RewriteTest { + @Override + public void defaults(RecipeSpec spec) { + spec.recipe(toRecipe( + () -> new XmlVisitor<>() { + @Override + public Xml visitDocTypeDecl(Xml.DocTypeDecl docTypeDecl, ExecutionContext executionContext) { + assertNotNull(docTypeDecl.getPrefixUnsafe(), "prefix should not be null"); + assertNotNull(docTypeDecl.getName(), "name should not be null"); + assertNotNull(docTypeDecl.getInternalSubset(), "internalSubset should not be null"); + assertNotNull(docTypeDecl.getBeforeTagDelimiterPrefix(), "beforeTagDelimiterPrefix should not be null"); + return super.visitDocTypeDecl(docTypeDecl, executionContext); + } + } + )); + } + @Issue("https://github.com/openrewrite/rewrite/issues/2189") @Test void specialCharacters() {