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) {

Reply via email to