You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/08/17 09:56:53 UTC

[1/2] camel git commit: CAMEL-9541: Camel catalog reports missing adoc

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 <da...@apache.org>
Authored: Wed Aug 17 11:06:12 2016 +0200
Committer: Claus Ibsen <da...@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) {


[2/2] camel git commit: CAMEL-9541: Component docs. Output if an endpoint has alternative schemes. Readme file for components should not report missing if its alternative scheme as its documented in the main readme file.

Posted by da...@apache.org.
CAMEL-9541: Component docs. Output if an endpoint has alternative schemes. Readme file for components should not report missing if its alternative scheme as its documented in the main readme file.


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

Branch: refs/heads/master
Commit: 814b6f713ea95812e19e12bd240c1df7ca8f77f7
Parents: 99b08a0
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Aug 17 11:56:45 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Aug 17 11:56:45 2016 +0200

----------------------------------------------------------------------
 .../tools/apt/EndpointAnnotationProcessor.java  | 29 +++++++++++++++----
 .../maven/packaging/PrepareCatalogMojo.java     | 30 ++++++++++++++++++--
 .../maven/packaging/ReadmeComponentMojo.java    | 10 +++++++
 .../maven/packaging/model/ComponentModel.java   |  9 ++++++
 4 files changed, 69 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/814b6f71/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
----------------------------------------------------------------------
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
index ffeb73b..990c2aa 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
@@ -45,6 +45,7 @@ import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.tools.apt.helper.CollectionStringBuffer;
 import org.apache.camel.tools.apt.helper.EndpointHelper;
 import org.apache.camel.tools.apt.helper.JsonSchemaHelper;
 import org.apache.camel.tools.apt.helper.Strings;
@@ -119,7 +120,7 @@ public class EndpointAnnotationProcessor extends AbstractProcessor {
                     Func1<PrintWriter, Void> handler = new Func1<PrintWriter, Void>() {
                         @Override
                         public Void call(PrintWriter writer) {
-                            writeHtmlDocumentation(writer, roundEnv, classElement, uriEndpoint, aliasTitle, alias, extendsAlias, label);
+                            writeHtmlDocumentation(writer, roundEnv, classElement, uriEndpoint, aliasTitle, alias, extendsAlias, label, schemes);
                             return null;
                         }
                     };
@@ -130,7 +131,7 @@ public class EndpointAnnotationProcessor extends AbstractProcessor {
                     handler = new Func1<PrintWriter, Void>() {
                         @Override
                         public Void call(PrintWriter writer) {
-                            writeJSonSchemeDocumentation(writer, roundEnv, classElement, uriEndpoint, aliasTitle, alias, extendsAlias, label);
+                            writeJSonSchemeDocumentation(writer, roundEnv, classElement, uriEndpoint, aliasTitle, alias, extendsAlias, label, schemes);
                             return null;
                         }
                     };
@@ -141,7 +142,7 @@ public class EndpointAnnotationProcessor extends AbstractProcessor {
     }
 
     protected void writeHtmlDocumentation(PrintWriter writer, RoundEnvironment roundEnv, TypeElement classElement, UriEndpoint uriEndpoint,
-                                          String title, String scheme, String extendsScheme, String label) {
+                                          String title, String scheme, String extendsScheme, String label, String[] schemes) {
         // gather component information
         ComponentModel componentModel = findComponentProperties(roundEnv, uriEndpoint, classElement, title, scheme, extendsScheme, label);
 
@@ -160,6 +161,14 @@ public class EndpointAnnotationProcessor extends AbstractProcessor {
         if (alternativeSyntax != null) {
             writer.println("<b>Alternative Syntax:</b> " + alternativeSyntax + "<br/>");
         }
+        // the first scheme is the regular so only output if there is alternatives
+        if (schemes != null && schemes.length > 1) {
+            CollectionStringBuffer csb = new CollectionStringBuffer(",");
+            for (String altScheme : schemes) {
+                csb.append(altScheme);
+            }
+            writer.println("<b>Alternative Schemes:</b> " + csb.toString() + "<br/>");
+        }
         writer.println("<b>Description:</b> " + description + "<br/>");
         writer.println("<b>Deprecated:</b>" + componentModel.isDeprecated() + "<br/>");
         if (componentModel.isConsumerOnly()) {
@@ -201,7 +210,7 @@ public class EndpointAnnotationProcessor extends AbstractProcessor {
     }
 
     protected void writeJSonSchemeDocumentation(PrintWriter writer, RoundEnvironment roundEnv, TypeElement classElement, UriEndpoint uriEndpoint,
-                                                String title, String scheme, String extendsScheme, String label) {
+                                                String title, String scheme, String extendsScheme, String label, String[] schemes) {
         // gather component information
         ComponentModel componentModel = findComponentProperties(roundEnv, uriEndpoint, classElement, title, scheme, extendsScheme, label);
 
@@ -217,12 +226,12 @@ public class EndpointAnnotationProcessor extends AbstractProcessor {
 
         findClassProperties(writer, roundEnv, componentModel, endpointPaths, endpointOptions, classElement, "", uriEndpoint.excludeProperties());
 
-        String json = createParameterJsonSchema(componentModel, componentOptions, endpointPaths, endpointOptions);
+        String json = createParameterJsonSchema(componentModel, componentOptions, endpointPaths, endpointOptions, schemes);
         writer.println(json);
     }
 
     public String createParameterJsonSchema(ComponentModel componentModel, Set<ComponentOption> componentOptions,
-                                            Set<EndpointPath> endpointPaths, Set<EndpointOption> endpointOptions) {
+                                            Set<EndpointPath> endpointPaths, Set<EndpointOption> endpointOptions, String[] schemes) {
         StringBuilder buffer = new StringBuilder("{");
         // component model
         buffer.append("\n \"component\": {");
@@ -231,6 +240,14 @@ public class EndpointAnnotationProcessor extends AbstractProcessor {
         if (!Strings.isNullOrEmpty(componentModel.getExtendsScheme())) {
             buffer.append("\n    \"extendsScheme\": \"").append(componentModel.getExtendsScheme()).append("\",");
         }
+        // the first scheme is the regular so only output if there is alternatives
+        if (schemes != null && schemes.length > 1) {
+            CollectionStringBuffer csb = new CollectionStringBuffer(",");
+            for (String altScheme : schemes) {
+                csb.append(altScheme);
+            }
+            buffer.append("\n    \"alternativeSchemes\": \"").append(csb.toString()).append("\",");
+        }
         buffer.append("\n    \"syntax\": \"").append(componentModel.getSyntax()).append("\",");
         if (componentModel.getAlternativeSyntax() != null) {
             buffer.append("\n    \"alternativeSyntax\": \"").append(componentModel.getAlternativeSyntax()).append("\",");

http://git-wip-us.apache.org/repos/asf/camel/blob/814b6f71/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 4e357df..9dcea24 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.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -376,6 +377,8 @@ public class PrepareCatalogMojo extends AbstractMojo {
         // make sure to create out dir
         componentsOutDir.mkdirs();
 
+        Set<String> alternativeSchemes = new HashSet<>();
+
         for (File file : jsonFiles) {
             File to = new File(componentsOutDir, file.getName());
             if (to.exists()) {
@@ -425,7 +428,6 @@ public class PrepareCatalogMojo extends AbstractMojo {
                 rows = JSonSchemaHelper.parseJsonSchema("properties", text, true);
                 for (Map<String, String> row : rows) {
                     String label = row.get("label");
-
                     if (label != null && !label.isEmpty()) {
                         String[] parts = label.split(",");
                         for (String part : parts) {
@@ -440,12 +442,26 @@ public class PrepareCatalogMojo extends AbstractMojo {
                     unlabeledOptions.add(name);
                 }
 
+                // remember alternative schemes
+                rows = JSonSchemaHelper.parseJsonSchema("component", text, false);
+                for (Map<String, String> row : rows) {
+                    String alternativeScheme = row.get("alternativeSchemes");
+                    if (alternativeScheme != null && !alternativeScheme.isEmpty()) {
+                        String[] parts = alternativeScheme.split(",");
+                        for (int i = 1; i < parts.length; i++) {
+                            // skip first as that is the regular scheme
+                            String part = parts[i];
+                            alternativeSchemes.add(part);
+                        }
+                    }
+                }
+
             } catch (IOException e) {
                 // ignore
             }
         }
 
-        Set<String> answer = new LinkedHashSet<>();
+        Set<String> componentNames = new LinkedHashSet<>();
 
         File all = new File(componentsOutDir, "../components.properties");
         try {
@@ -468,7 +484,7 @@ public class PrepareCatalogMojo extends AbstractMojo {
                 fos.write("\n".getBytes());
 
                 // remember component name
-                answer.add(name);
+                componentNames.add(name);
             }
 
             fos.close();
@@ -479,6 +495,14 @@ public class PrepareCatalogMojo extends AbstractMojo {
 
         printComponentsReport(jsonFiles, duplicateJsonFiles, missingComponents, usedComponentLabels, usedOptionLabels, unlabeledOptions);
 
+        // filter out duplicate component names that are alternative scheme names
+        Set<String> answer = new LinkedHashSet<>();
+        for (String componentName : componentNames) {
+            if (!alternativeSchemes.contains(componentName)) {
+                answer.add(componentName);
+            }
+        }
+
         return answer;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/814b6f71/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
index 73f1d82..b94ba77 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
@@ -43,6 +43,7 @@ import org.sonatype.plexus.build.incremental.BuildContext;
 import static org.apache.camel.maven.packaging.JSonSchemaHelper.getSafeValue;
 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;
 
 /**
  * Generate or updates the component/dataformat/language readme.md file in the project root directory.
@@ -106,6 +107,14 @@ public class ReadmeComponentMojo extends AbstractMojo {
                     File file = new File(docDir, componentName + "-component.adoc");
                     ComponentModel model = generateComponentModel(componentName, json);
 
+                    // we only want the first scheme as the alternatives do not have their own readme file
+                    if (!isEmpty(model.getAlternativeSchemes())) {
+                        String first = model.getAlternativeSchemes().split(",")[0];
+                        if (!model.getScheme().equals(first)) {
+                            continue;
+                        }
+                    }
+
                     boolean exists = file.exists();
                     boolean updated = false;
                     if (model.getComponentOptions() != null) {
@@ -395,6 +404,7 @@ public class ReadmeComponentMojo extends AbstractMojo {
         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.setLabel(JSonSchemaHelper.getSafeValue("label", rows));

http://git-wip-us.apache.org/repos/asf/camel/blob/814b6f71/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentModel.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentModel.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentModel.java
index 38c5a8e..9e50801 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentModel.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentModel.java
@@ -25,6 +25,7 @@ public class ComponentModel {
     private String scheme;
     private String syntax;
     private String alternativeSyntax;
+    private String alternativeSchemes;
     private String title;
     private String description;
     private String label;
@@ -70,6 +71,14 @@ public class ComponentModel {
         this.alternativeSyntax = alternativeSyntax;
     }
 
+    public String getAlternativeSchemes() {
+        return alternativeSchemes;
+    }
+
+    public void setAlternativeSchemes(String alternativeSchemes) {
+        this.alternativeSchemes = alternativeSchemes;
+    }
+
     public String getTitle() {
         return title;
     }