From a8ab215010a11bf96394a116f76e7f755695ee60 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sun, 23 Jun 2024 19:21:49 +0200 Subject: [PATCH] Clarify namespace, version, pmdVersion --- .../java/net/sourceforge/pmd/cpd/XMLRenderer.java | 8 +++++--- pmd-core/src/main/resources/cpd-report_1_0_0.xsd | 13 +++++++++++-- .../net/sourceforge/pmd/cpd/XMLRendererTest.java | 13 +++++++------ 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/XMLRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/XMLRenderer.java index 8aa20956d7..4bd4524ed4 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/XMLRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/XMLRenderer.java @@ -36,8 +36,9 @@ import net.sourceforge.pmd.util.StringUtil; * */ public final class XMLRenderer implements CPDReportRenderer { - private static final String NAMESPACE_URI = "https://pmd-code.org/ns/cpd-report/1.0.0"; - private static final String NAMESPACE_LOCATION = "https://pmd-code.org/ns/cpd-report_1_0_0.xsd"; + private static final String NAMESPACE_URI = "https://pmd-code.org/schema/cpd-report"; + private static final String NAMESPACE_LOCATION = "https://pmd.github.io/schema/cpd-report_1_0_0.xsd"; + private static final String SCHEMA_VERSION = "1.0.0"; private String encoding; @@ -103,7 +104,8 @@ public final class XMLRenderer implements CPDReportRenderer { final Element root = doc.createElementNS(NAMESPACE_URI, "pmd-cpd"); root.setAttributeNS(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "xsi:schemaLocation", NAMESPACE_URI + " " + NAMESPACE_LOCATION); - root.setAttributeNS(NAMESPACE_URI, "version", PMDVersion.VERSION); + root.setAttributeNS(NAMESPACE_URI, "version", SCHEMA_VERSION); + root.setAttributeNS(NAMESPACE_URI, "pmdVersion", PMDVersion.VERSION); root.setAttributeNS(NAMESPACE_URI, "timestamp", OffsetDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)); final Map numberOfTokensPerFile = report.getNumberOfTokensPerFile(); doc.appendChild(root); diff --git a/pmd-core/src/main/resources/cpd-report_1_0_0.xsd b/pmd-core/src/main/resources/cpd-report_1_0_0.xsd index e159d04229..71745eda95 100644 --- a/pmd-core/src/main/resources/cpd-report_1_0_0.xsd +++ b/pmd-core/src/main/resources/cpd-report_1_0_0.xsd @@ -1,10 +1,18 @@ + + + + @@ -13,6 +21,7 @@ + diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/cpd/XMLRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/cpd/XMLRendererTest.java index fee4de49c6..b22dc67307 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/cpd/XMLRendererTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/cpd/XMLRendererTest.java @@ -57,14 +57,15 @@ class XMLRendererTest { assertReportIsValidSchema(report); assertEquals("\n" - + "\n", - report.replaceAll(" {4}timestamp=\".+?\"", " timestamp=\"XXX\"") - .replaceAll(" {4}version=\".+?\"", " version=\"XXX\""), - "namespace is missing"); + + " version=\"1.0.0\"\n" + + " xsi:schemaLocation=\"https://pmd-code.org/schema/cpd-report https://pmd.github.io/schema/cpd-report_1_0_0.xsd\"/>\n", + report.replaceAll("timestamp=\".+?\"", "timestamp=\"XXX\"") + .replaceAll("pmdVersion=\".+?\"", "pmdVersion=\"XXX\""), + "namespace is missing or wrong"); Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder() .parse(new ByteArrayInputStream(report.getBytes(ENCODING)));