CAMEL-10850: Autogenerate EIP options in documentation files.

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/68d371f0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/68d371f0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/68d371f0

Branch: refs/heads/master
Commit: 68d371f0bb2d803c59779834bde7177f941e22e2
Parents: 56a5864
Author: Claus Ibsen <davscl...@apache.org>
Authored: Fri Feb 17 14:24:07 2017 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Fri Feb 17 17:59:26 2017 +0100

----------------------------------------------------------------------
 .../camel/maven/packaging/UpdateReadmeMojo.java | 180 ++++++++++---------
 1 file changed, 95 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/68d371f0/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
index 59282ab..a7fd59a 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
@@ -44,7 +44,7 @@ import org.apache.maven.project.MavenProject;
 import org.mvel2.templates.TemplateRuntime;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
-import static org.apache.camel.maven.packaging.JSonSchemaHelper.getSafeValue;
+import static org.apache.camel.maven.packaging.JSonSchemaHelper.*;
 import static org.apache.camel.maven.packaging.PackageHelper.loadText;
 import static org.apache.camel.maven.packaging.PackageHelper.writeText;
 import static org.apache.camel.maven.packaging.StringHelper.isEmpty;
@@ -271,28 +271,34 @@ public class UpdateReadmeMojo extends AbstractMojo {
     }
 
     private void executeEips() throws MojoExecutionException, 
MojoFailureException {
-        // find the eips names
-        List<String> eipNames = findEipNames();
+        // only run if in camel-core
+        File coreDir = new File(".");
+        if (!coreDir.getName().equals("camel-core")) {
+            return;
+        }
 
-        // TODO: how to find model json files
         final Set<File> jsonFiles = new TreeSet<File>();
-        PackageHelper.findJsonFiles(buildDir, jsonFiles, new 
PackageHelper.CamelComponentsModelFilter());
+
+        // find all json files in camel-core
+        if (coreDir.isDirectory()) {
+            File target = new File(coreDir, 
"target/classes/org/apache/camel/model");
+            PackageHelper.findJsonFiles(target, jsonFiles, new 
PackageHelper.CamelComponentsModelFilter());
+        }
 
         // only if there is dataformat we should update the documentation files
-        if (!eipNames.isEmpty()) {
-            getLog().debug("Found " + eipNames.size() + " eips");
-            for (String eipName : eipNames) {
-                String json = loadEipJson(jsonFiles, eipName);
+        if (!jsonFiles.isEmpty()) {
+            getLog().debug("Found " + jsonFiles.size() + " eips");
+            for (File jsonFile : jsonFiles) {
+                String json = loadEipJson(jsonFile);
                 if (json != null) {
-                    // special for some data formats
-                    eipName = asEipName(eipName);
-
-                    File file = new File(docDir, eipName + "-eip.adoc");
 
                     EipModel model = generateEipModel(json);
                     String title = asEipTitle(model.getName(), 
model.getTitle());
                     model.setTitle(title);
 
+                    String eipName = model.getName();
+                    File file = new File(docDir, eipName + "-eip.adoc");
+
                     boolean exists = file.exists();
                     boolean updated;
 
@@ -308,7 +314,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
                     } else if (exists) {
                         getLog().debug("No changes to doc file: " + file);
                     } else {
-                        getLog().warn("No dataformat doc file: " + file);
+                        getLog().warn("No eip doc file: " + file);
                         if (isFailFast()) {
                             throw new MojoExecutionException("Failed build due 
failFast=true");
                         }
@@ -712,16 +718,12 @@ public class UpdateReadmeMojo extends AbstractMojo {
         return null;
     }
 
-    private String loadEipJson(Set<File> jsonFiles, String eipName) {
+    private String loadEipJson(File file) {
         try {
-            for (File file : jsonFiles) {
-                if (file.getName().equals(eipName + ".json")) {
-                    String json = loadText(new FileInputStream(file));
-                    boolean isEip = json.contains("\"kind\": \"model\"");
-                    if (isEip) {
-                        return json;
-                    }
-                }
+            String json = loadText(new FileInputStream(file));
+            boolean isEip = json.contains("\"kind\": \"model\"");
+            if (isEip) {
+                return json;
             }
         } catch (IOException e) {
             // ignore
@@ -730,26 +732,26 @@ public class UpdateReadmeMojo extends AbstractMojo {
     }
 
     private ComponentModel generateComponentModel(String componentName, String 
json) {
-        List<Map<String, String>> rows = 
JSonSchemaHelper.parseJsonSchema("component", json, false);
+        List<Map<String, String>> rows = parseJsonSchema("component", json, 
false);
 
         ComponentModel component = new ComponentModel(true);
-        component.setScheme(JSonSchemaHelper.getSafeValue("scheme", rows));
-        component.setSyntax(JSonSchemaHelper.getSafeValue("syntax", rows));
-        
component.setAlternativeSyntax(JSonSchemaHelper.getSafeValue("alternativeSyntax",
 rows));
-        
component.setAlternativeSchemes(JSonSchemaHelper.getSafeValue("alternativeSchemes",
 rows));
-        component.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        component.setDescription(JSonSchemaHelper.getSafeValue("description", 
rows));
-        
component.setFirstVersion(JSonSchemaHelper.getSafeValue("firstVersion", rows));
-        component.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        component.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", 
rows));
-        
component.setConsumerOnly(JSonSchemaHelper.getSafeValue("consumerOnly", rows));
-        
component.setProducerOnly(JSonSchemaHelper.getSafeValue("producerOnly", rows));
-        component.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
-        component.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
-        component.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", 
rows));
-        component.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
-
-        rows = JSonSchemaHelper.parseJsonSchema("componentProperties", json, 
true);
+        component.setScheme(getSafeValue("scheme", rows));
+        component.setSyntax(getSafeValue("syntax", rows));
+        component.setAlternativeSyntax(getSafeValue("alternativeSyntax", 
rows));
+        component.setAlternativeSchemes(getSafeValue("alternativeSchemes", 
rows));
+        component.setTitle(getSafeValue("title", rows));
+        component.setDescription(getSafeValue("description", rows));
+        component.setFirstVersion(getSafeValue("firstVersion", rows));
+        component.setLabel(getSafeValue("label", rows));
+        component.setDeprecated(getSafeValue("deprecated", rows));
+        component.setConsumerOnly(getSafeValue("consumerOnly", rows));
+        component.setProducerOnly(getSafeValue("producerOnly", rows));
+        component.setJavaType(getSafeValue("javaType", rows));
+        component.setGroupId(getSafeValue("groupId", rows));
+        component.setArtifactId(getSafeValue("artifactId", rows));
+        component.setVersion(getSafeValue("version", rows));
+
+        rows = parseJsonSchema("componentProperties", json, true);
         for (Map<String, String> row : rows) {
             ComponentOptionModel option = new ComponentOptionModel();
             option.setName(getSafeValue("name", row));
@@ -772,7 +774,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
             component.addComponentOption(option);
         }
 
-        rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
+        rows = parseJsonSchema("properties", json, true);
         for (Map<String, String> row : rows) {
             EndpointOptionModel option = new EndpointOptionModel();
             option.setName(getSafeValue("name", row));
@@ -801,22 +803,22 @@ public class UpdateReadmeMojo extends AbstractMojo {
     }
 
     private DataFormatModel generateDataFormatModel(String dataFormatName, 
String json) {
-        List<Map<String, String>> rows = 
JSonSchemaHelper.parseJsonSchema("dataformat", json, false);
+        List<Map<String, String>> rows = parseJsonSchema("dataformat", json, 
false);
 
         DataFormatModel dataFormat = new DataFormatModel();
-        dataFormat.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        dataFormat.setModelName(JSonSchemaHelper.getSafeValue("modelName", 
rows));
-        dataFormat.setName(JSonSchemaHelper.getSafeValue("name", rows));
-        dataFormat.setDescription(JSonSchemaHelper.getSafeValue("description", 
rows));
-        
dataFormat.setFirstVersion(JSonSchemaHelper.getSafeValue("firstVersion", rows));
-        dataFormat.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        dataFormat.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", 
rows));
-        dataFormat.setJavaType(JSonSchemaHelper.getSafeValue("javaType", 
rows));
-        dataFormat.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
-        dataFormat.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", 
rows));
-        dataFormat.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
-
-        rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
+        dataFormat.setTitle(getSafeValue("title", rows));
+        dataFormat.setModelName(getSafeValue("modelName", rows));
+        dataFormat.setName(getSafeValue("name", rows));
+        dataFormat.setDescription(getSafeValue("description", rows));
+        dataFormat.setFirstVersion(getSafeValue("firstVersion", rows));
+        dataFormat.setLabel(getSafeValue("label", rows));
+        dataFormat.setDeprecated(getSafeValue("deprecated", rows));
+        dataFormat.setJavaType(getSafeValue("javaType", rows));
+        dataFormat.setGroupId(getSafeValue("groupId", rows));
+        dataFormat.setArtifactId(getSafeValue("artifactId", rows));
+        dataFormat.setVersion(getSafeValue("version", rows));
+
+        rows = parseJsonSchema("properties", json, true);
         for (Map<String, String> row : rows) {
             DataFormatOptionModel option = new DataFormatOptionModel();
             option.setName(getSafeValue("name", row));
@@ -848,22 +850,22 @@ public class UpdateReadmeMojo extends AbstractMojo {
     }
 
     private LanguageModel generateLanguageModel(String languageName, String 
json) {
-        List<Map<String, String>> rows = 
JSonSchemaHelper.parseJsonSchema("language", json, false);
+        List<Map<String, String>> rows = parseJsonSchema("language", json, 
false);
 
         LanguageModel language = new LanguageModel();
-        language.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        language.setModelName(JSonSchemaHelper.getSafeValue("modelName", 
rows));
-        language.setName(JSonSchemaHelper.getSafeValue("name", rows));
-        language.setDescription(JSonSchemaHelper.getSafeValue("description", 
rows));
-        language.setFirstVersion(JSonSchemaHelper.getSafeValue("firstVersion", 
rows));
-        language.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        language.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", 
rows));
-        language.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
-        language.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
-        language.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", 
rows));
-        language.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
-
-        rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
+        language.setTitle(getSafeValue("title", rows));
+        language.setModelName(getSafeValue("modelName", rows));
+        language.setName(getSafeValue("name", rows));
+        language.setDescription(getSafeValue("description", rows));
+        language.setFirstVersion(getSafeValue("firstVersion", rows));
+        language.setLabel(getSafeValue("label", rows));
+        language.setDeprecated(getSafeValue("deprecated", rows));
+        language.setJavaType(getSafeValue("javaType", rows));
+        language.setGroupId(getSafeValue("groupId", rows));
+        language.setArtifactId(getSafeValue("artifactId", rows));
+        language.setVersion(getSafeValue("version", rows));
+
+        rows = parseJsonSchema("properties", json, true);
         for (Map<String, String> row : rows) {
             LanguageOptionModel option = new LanguageOptionModel();
             option.setName(getSafeValue("name", row));
@@ -888,17 +890,31 @@ public class UpdateReadmeMojo extends AbstractMojo {
     }
 
     private EipModel generateEipModel(String json) {
-        List<Map<String, String>> rows = 
JSonSchemaHelper.parseJsonSchema("model", json, false);
+        List<Map<String, String>> rows = parseJsonSchema("model", json, false);
 
         EipModel eip = new EipModel();
-        eip.setName(JSonSchemaHelper.getSafeValue("name", rows));
-        eip.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        eip.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
-        eip.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
-        eip.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        
eip.setDeprecated("true".equals(JSonSchemaHelper.getSafeValue("deprecated", 
rows)));
-        eip.setInput("true".equals(JSonSchemaHelper.getSafeValue("input", 
rows)));
-        eip.setOutput("true".equals(JSonSchemaHelper.getSafeValue("output", 
rows)));
+        eip.setName(getSafeValue("name", rows));
+        eip.setTitle(getSafeValue("title", rows));
+        eip.setDescription(getSafeValue("description", rows));
+        eip.setJavaType(getSafeValue("javaType", rows));
+        eip.setLabel(getSafeValue("label", rows));
+        eip.setDeprecated("true".equals(getSafeValue("deprecated", rows)));
+        eip.setInput("true".equals(getSafeValue("input", rows)));
+        eip.setOutput("true".equals(getSafeValue("output", rows)));
+
+        rows = parseJsonSchema("properties", json, true);
+        for (Map<String, String> row : rows) {
+            EipOptionModel option = new EipOptionModel();
+            option.setName(getSafeValue("name", row));
+            option.setDisplayName(getSafeValue("displayName", row));
+            option.setJavaType(getSafeValue("javaType", row));
+            option.setDeprecated("true".equals(getSafeValue("deprecated", 
row)));
+            option.setDescription(getSafeValue("description", row));
+            option.setInput("true".equals(getSafeValue("input", row)));
+            option.setOutput("true".equals(getSafeValue("output", row)));
+
+            eip.addEipOptionModel(option);
+        }
 
         return eip;
     }
@@ -1046,12 +1062,6 @@ public class UpdateReadmeMojo extends AbstractMojo {
         return languageNames;
     }
 
-    private List<String> findEipNames() {
-        List<String> eipNames = new ArrayList<String>();
-        // TODO: find by scanning model (prepare catalog does something)
-        return eipNames;
-    }
-
     private boolean isFailFast() {
         return failFast != null && failFast;
     }

Reply via email to