Repository: camel Updated Branches: refs/heads/master ad44b7211 -> 814b6f713
CAMEL-9541: Camel catalog reports missing adoc Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/99b08a05 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/99b08a05 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/99b08a05 Branch: refs/heads/master Commit: 99b08a05439c4236608a373a530714e0cc3b1485 Parents: ad44b72 Author: Claus Ibsen <davscl...@apache.org> Authored: Wed Aug 17 11:06:12 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Aug 17 11:06:12 2016 +0200 ---------------------------------------------------------------------- .../maven/packaging/PrepareCatalogMojo.java | 110 ++++++++++++++++--- 1 file changed, 97 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/99b08a05/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java ---------------------------------------------------------------------- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java index d37ef51..4e357df 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.nio.channels.FileChannel; import java.util.ArrayList; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -184,10 +185,10 @@ public class PrepareCatalogMojo extends AbstractMojo { */ public void execute() throws MojoExecutionException, MojoFailureException { executeModel(); - executeComponents(); - executeDataFormats(); - executeLanguages(); - executeDocuments(); + Set<String> components = executeComponents(); + Set<String> dataformats = executeDataFormats(); + Set<String> languages = executeLanguages(); + executeDocuments(components, dataformats, languages); executeArchetypes(); executeXmlSchemas(); } @@ -308,7 +309,7 @@ public class PrepareCatalogMojo extends AbstractMojo { printModelsReport(jsonFiles, duplicateJsonFiles, missingLabels, usedLabels, missingJavaDoc); } - protected void executeComponents() throws MojoExecutionException, MojoFailureException { + protected Set<String> executeComponents() throws MojoExecutionException, MojoFailureException { getLog().info("Copying all Camel component json descriptors"); // lets use sorted set/maps @@ -444,6 +445,8 @@ public class PrepareCatalogMojo extends AbstractMojo { } } + Set<String> answer = new LinkedHashSet<>(); + File all = new File(componentsOutDir, "../components.properties"); try { FileOutputStream fos = new FileOutputStream(all, false); @@ -463,6 +466,9 @@ public class PrepareCatalogMojo extends AbstractMojo { for (String name : components) { fos.write(name.getBytes()); fos.write("\n".getBytes()); + + // remember component name + answer.add(name); } fos.close(); @@ -472,9 +478,11 @@ public class PrepareCatalogMojo extends AbstractMojo { } printComponentsReport(jsonFiles, duplicateJsonFiles, missingComponents, usedComponentLabels, usedOptionLabels, unlabeledOptions); + + return answer; } - protected void executeDataFormats() throws MojoExecutionException, MojoFailureException { + protected Set<String> executeDataFormats() throws MojoExecutionException, MojoFailureException { getLog().info("Copying all Camel dataformat json descriptors"); // lets use sorted set/maps @@ -541,6 +549,8 @@ public class PrepareCatalogMojo extends AbstractMojo { } } + Set<String> answer = new LinkedHashSet<>(); + File all = new File(dataFormatsOutDir, "../dataformats.properties"); try { FileOutputStream fos = new FileOutputStream(all, false); @@ -560,6 +570,9 @@ public class PrepareCatalogMojo extends AbstractMojo { for (String name : dataFormats) { fos.write(name.getBytes()); fos.write("\n".getBytes()); + + // remember dataformat name + answer.add(name); } fos.close(); @@ -569,9 +582,11 @@ public class PrepareCatalogMojo extends AbstractMojo { } printDataFormatsReport(jsonFiles, duplicateJsonFiles, usedLabels); + + return answer; } - protected void executeLanguages() throws MojoExecutionException, MojoFailureException { + protected Set<String> executeLanguages() throws MojoExecutionException, MojoFailureException { getLog().info("Copying all Camel language json descriptors"); // lets use sorted set/maps @@ -642,6 +657,8 @@ public class PrepareCatalogMojo extends AbstractMojo { } } + Set<String> answer = new LinkedHashSet<>(); + File all = new File(languagesOutDir, "../languages.properties"); try { FileOutputStream fos = new FileOutputStream(all, false); @@ -661,6 +678,9 @@ public class PrepareCatalogMojo extends AbstractMojo { for (String name : languages) { fos.write(name.getBytes()); fos.write("\n".getBytes()); + + // remember language name + answer.add(name); } fos.close(); @@ -670,6 +690,8 @@ public class PrepareCatalogMojo extends AbstractMojo { } printLanguagesReport(jsonFiles, duplicateJsonFiles, usedLabels); + + return answer; } protected void executeArchetypes() throws MojoExecutionException, MojoFailureException { @@ -716,7 +738,7 @@ public class PrepareCatalogMojo extends AbstractMojo { } } - protected void executeDocuments() throws MojoExecutionException, MojoFailureException { + protected void executeDocuments(Set<String> components, Set<String> dataformats, Set<String> languages) throws MojoExecutionException, MojoFailureException { getLog().info("Copying all Camel documents (ascii docs)"); // lets use sorted set/maps @@ -724,11 +746,11 @@ public class PrepareCatalogMojo extends AbstractMojo { Set<File> missingAdocFiles = new TreeSet<File>(); Set<File> duplicateAdocFiles = new TreeSet<File>(); - // find all languages from the components directory + // find all camel maven modules if (componentsDir != null && componentsDir.isDirectory()) { - File[] components = componentsDir.listFiles(); - if (components != null) { - for (File dir : components) { + File[] componentFiles = componentsDir.listFiles(); + if (componentFiles != null) { + for (File dir : componentFiles) { if (dir.isDirectory() && !"target".equals(dir.getName()) && !dir.getName().startsWith(".") && !excludeDocumentDir(dir.getName())) { File target = new File(dir, "src/main/docs"); @@ -766,6 +788,8 @@ public class PrepareCatalogMojo extends AbstractMojo { } } + Set<String> docs = new LinkedHashSet<>(); + File all = new File(documentsOutDir, "../docs.properties"); try { FileOutputStream fos = new FileOutputStream(all, false); @@ -775,7 +799,7 @@ public class PrepareCatalogMojo extends AbstractMojo { // sort the names for (String name : names) { if (name.endsWith(".adoc")) { - // strip out .json from the name + // strip out .adoc from the name String documentName = name.substring(0, name.length() - 5); documents.add(documentName); } @@ -785,6 +809,8 @@ public class PrepareCatalogMojo extends AbstractMojo { for (String name : documents) { fos.write(name.getBytes()); fos.write("\n".getBytes()); + + docs.add(name); } fos.close(); @@ -794,6 +820,64 @@ public class PrepareCatalogMojo extends AbstractMojo { } printDocumentsReport(adocFiles, duplicateAdocFiles, missingAdocFiles); + + // find out if we have documents for each component / dataformat / languages + printMissingDocumentsReport(docs, components, dataformats, languages); + } + + private void printMissingDocumentsReport(Set<String> docs, Set<String> components, Set<String> dataformats, Set<String> languages) { + getLog().info(""); + getLog().info("Camel missing documents report"); + getLog().info(""); + + List<String> missing = new ArrayList<>(); + for (String component : components) { + String name = component + "-component"; + if (!docs.contains(name)) { + missing.add(name); + } + } + if (!missing.isEmpty()) { + getLog().info(""); + getLog().warn("\tMissing .adoc component documentation : " + missing.size()); + for (String name : missing) { + getLog().warn("\t\t" + name); + } + } + missing.clear(); + + for (String dataformat : dataformats) { + String name = dataformat + "-dataformat"; + if (!docs.contains(name)) { + missing.add(name); + } + } + if (!missing.isEmpty()) { + getLog().info(""); + getLog().warn("\tMissing .adoc dataformat documentation : " + missing.size()); + for (String name : missing) { + getLog().warn("\t\t" + name); + } + } + missing.clear(); + + for (String language : languages) { + String name = language + "-language"; + if (!docs.contains(name)) { + missing.add(name); + } + } + if (!missing.isEmpty()) { + getLog().info(""); + getLog().warn("\tMissing .adoc language documentation : " + missing.size()); + for (String name : missing) { + getLog().warn("\t\t" + name); + } + } + missing.clear(); + + getLog().info(""); + getLog().info("================================================================================"); } private void printModelsReport(Set<File> json, Set<File> duplicate, Set<File> missingLabels, Map<String, Set<String>> usedLabels, Set<File> missingJavaDoc) {