Repository: camel Updated Branches: refs/heads/master c8b48821f -> 2acc97b5f
CAMEL-9842: Enrich camel-spring XSD with documentation for the non EIP nodes which was not documented before. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2acc97b5 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2acc97b5 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2acc97b5 Branch: refs/heads/master Commit: 2acc97b5fa6ecf373b276335592937c68a5e4229 Parents: c8b4882 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Aug 11 12:46:59 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Aug 11 12:46:59 2016 +0200 ---------------------------------------------------------------------- .../maven/EipDocumentationEnricherMojo.java | 40 ++++++++++++++------ .../integration/EIPDocumentationMojoTest.java | 2 + 2 files changed, 31 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/2acc97b5/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java ---------------------------------------------------------------------- diff --git a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java index d549a39..c2ab1bf 100644 --- a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java +++ b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java @@ -22,6 +22,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; import javax.xml.transform.Transformer; @@ -70,7 +72,13 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { public File camelCoreDir; /** - * Path to camel core project root directory. + * Path to camel core xml project root directory. + */ + @Parameter(defaultValue = "${project.build.directory}/../../../components/camel-core-xml") + public File camelCoreXmlDir; + + /** + * Path to camel spring project root directory. */ @Parameter(defaultValue = "${project.build.directory}/../../../components/camel-spring") public File camelSpringDir; @@ -82,6 +90,12 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { public String pathToModelDir; /** + * Sub path from camel core xml directory to model directory with generated json files for components. + */ + @Parameter(defaultValue = "target/classes/org/apache/camel/core/xml") + public String pathToCoreXmlModelDir; + + /** * Sub path from camel spring directory to model directory with generated json files for components. */ @Parameter(defaultValue = "target/classes/org/apache/camel/spring") @@ -95,8 +109,10 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { validateExists(inputCamelSchemaFile, "inputCamelSchemaFile"); validateIsFile(inputCamelSchemaFile, "inputCamelSchemaFile"); validateExists(camelCoreDir, "camelCoreDir"); + validateExists(camelCoreXmlDir, "camelCoreXmlDir"); validateExists(camelSpringDir, "camelSpringDir"); validateIsDirectory(camelCoreDir, "camelCoreDir"); + validateIsDirectory(camelCoreXmlDir, "camelCoreXmlDir"); validateIsDirectory(camelSpringDir, "camelSpringDir"); try { runPlugin(); @@ -111,28 +127,31 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { DomFinder domFinder = new DomFinder(document, xPath); DocumentationEnricher documentationEnricher = new DocumentationEnricher(document); - // include schema files from camel-core, and from camel-spring + // include schema files from camel-core, camel-corem-xml and from camel-spring File rootDir = new File(camelCoreDir, pathToModelDir); Map<String, File> jsonFiles = PackageHelper.findJsonFiles(rootDir); - File rootDir2 = new File(camelSpringDir, pathToSpringModelDir); + File rootDir2 = new File(camelCoreXmlDir, pathToCoreXmlModelDir); Map<String, File> jsonFiles2 = PackageHelper.findJsonFiles(rootDir2); + File rootDir3 = new File(camelSpringDir, pathToSpringModelDir); + Map<String, File> jsonFiles3 = PackageHelper.findJsonFiles(rootDir3); // merge the json files together jsonFiles.putAll(jsonFiles2); + jsonFiles.putAll(jsonFiles3); NodeList elementsAndTypes = domFinder.findElementsAndTypes(); documentationEnricher.enrichTopLevelElementsDocumentation(elementsAndTypes, jsonFiles); Map<String, String> typeToNameMap = buildTypeToNameMap(elementsAndTypes); - Set<String> injectedTypes = new HashSet<String>(); + Set<String> injectedTypes = new LinkedHashSet<String>(); + + getLog().info("Found " + typeToNameMap.size() + " models to use when enriching the XSD schema"); for (Map.Entry<String, String> entry : typeToNameMap.entrySet()) { String elementType = entry.getKey(); String elementName = entry.getValue(); if (jsonFileExistsForElement(jsonFiles, elementName)) { - injectAttributesDocumentation(domFinder, - documentationEnricher, - jsonFiles.get(elementName), - elementType, - injectedTypes); + getLog().debug("Enriching " + elementName); + File file = jsonFiles.get(elementName); + injectAttributesDocumentation(domFinder, documentationEnricher, file, elementType, injectedTypes); } } @@ -170,7 +189,7 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { } private Map<String, String> buildTypeToNameMap(NodeList elementsAndTypes) { - Map<String, String> typeToNameMap = new HashMap<String, String>(); + Map<String, String> typeToNameMap = new LinkedHashMap<String, String>(); for (int i = 0; i < elementsAndTypes.getLength(); i++) { Element item = (Element) elementsAndTypes.item(i); String name = item.getAttribute(Constants.NAME_ATTRIBUTE_NAME); @@ -190,7 +209,6 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { return baseType.replaceAll("tns:", ""); } - private void saveToFile(Document document, File outputFile, Transformer transformer) throws FileNotFoundException, TransformerException { StreamResult result = new StreamResult(new FileOutputStream(outputFile)); DOMSource source = new DOMSource(document); http://git-wip-us.apache.org/repos/asf/camel/blob/2acc97b5/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/test/java/org/apache/camel/maven/integration/EIPDocumentationMojoTest.java ---------------------------------------------------------------------- diff --git a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/test/java/org/apache/camel/maven/integration/EIPDocumentationMojoTest.java b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/test/java/org/apache/camel/maven/integration/EIPDocumentationMojoTest.java index ec837f7..0ec163d 100644 --- a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/test/java/org/apache/camel/maven/integration/EIPDocumentationMojoTest.java +++ b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/test/java/org/apache/camel/maven/integration/EIPDocumentationMojoTest.java @@ -49,9 +49,11 @@ public class EIPDocumentationMojoTest { @Before public void setUp() throws Exception { eipDocumentationEnricherMojo.camelCoreDir = ResourceUtils.getResourceAsFile("integration/camel-core-integration"); + eipDocumentationEnricherMojo.camelCoreXmlDir = ResourceUtils.getResourceAsFile("integration/camel-core-integration"); eipDocumentationEnricherMojo.camelSpringDir = ResourceUtils.getResourceAsFile("integration/camel-core-integration"); eipDocumentationEnricherMojo.inputCamelSchemaFile = ResourceUtils.getResourceAsFile("integration/camel-spring.xsd"); eipDocumentationEnricherMojo.pathToModelDir = "trgt/classes/org/apache/camel/model"; + eipDocumentationEnricherMojo.pathToCoreXmlModelDir = "trgt/classes/org/apache/camel/model"; eipDocumentationEnricherMojo.pathToSpringModelDir = "trgt/classes/org/apache/camel/model"; xPath.setNamespaceContext(new CamelSpringNamespace()); tempFile = File.createTempFile("outputXml", ".xml");