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/01/26 19:46:41 UTC
[5/5] camel git commit: First cut of mvn goal to generate/update
component readme.md file. Switch to mvel which is easier to use than
freemarker.
First cut of mvn goal to generate/update component readme.md file. Switch to mvel which is easier to use than freemarker.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b3c02c4c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b3c02c4c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b3c02c4c
Branch: refs/heads/master
Commit: b3c02c4cc914b487181609fad6242f76f66c6377
Parents: 4b335a1
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jan 26 19:44:09 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jan 26 19:45:44 2016 +0100
----------------------------------------------------------------------
.../camel/maven/packaging/JSonSchemaHelper.java | 14 +-
.../maven/packaging/ReadmeComponentMojo.java | 87 +++++++++----
.../maven/packaging/model/ComponentModel.java | 25 ++--
.../packaging/model/ComponentOptionModel.java | 16 +--
.../packaging/model/EndpointOptionModel.java | 129 +++++++++++++++++++
.../src/main/resources/component-options.mvel | 4 +-
.../src/main/resources/endpoint-options.mvel | 8 ++
7 files changed, 234 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/b3c02c4c/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/JSonSchemaHelper.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/JSonSchemaHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/JSonSchemaHelper.java
index ea17772..1ac0e33 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/JSonSchemaHelper.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/JSonSchemaHelper.java
@@ -112,22 +112,28 @@ public final class JSonSchemaHelper {
return value;
}
- public static String getValue(String key, List<Map<String, String>> rows) {
+ /**
+ * Gets the value with the key in a safe way, eg returning an empty string if there was no value for the key.
+ */
+ public static String getSafeValue(String key, List<Map<String, String>> rows) {
for (Map<String, String> row : rows) {
String value = row.get(key);
if (value != null) {
return value;
}
}
- return null;
+ return "";
}
- public static String getValue(String key, Map<String, String> rows) {
+ /**
+ * Gets the value with the key in a safe way, eg returning an empty string if there was no value for the key.
+ */
+ public static String getSafeValue(String key, Map<String, String> rows) {
String value = rows.get(key);
if (value != null) {
return value;
}
- return null;
+ return "";
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b3c02c4c/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 f6032b3..ddc512b 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
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -28,19 +28,21 @@ import java.util.TreeSet;
import org.apache.camel.maven.packaging.model.ComponentModel;
import org.apache.camel.maven.packaging.model.ComponentOptionModel;
+import org.apache.camel.maven.packaging.model.EndpointOptionModel;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
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.getValue;
+import static org.apache.camel.maven.packaging.JSonSchemaHelper.getSafeValue;
import static org.apache.camel.maven.packaging.PackageHelper.loadText;
/**
- * Generate or updates the component readme.md file in the project root directort.
+ * Generate or updates the component readme.md file in the project root directory.
*
* @goal update-readme
*/
@@ -90,8 +92,10 @@ public class ReadmeComponentMojo extends AbstractMojo {
ComponentModel model = generateComponentModel(componentName, json);
String header = templateComponentHeader(model);
String options = templateComponentOptions(model);
+ String options2 = templateEndpointOptions(model);
getLog().info(header);
getLog().info(options);
+ getLog().info(options2);
}
}
}
@@ -118,33 +122,52 @@ public class ReadmeComponentMojo extends AbstractMojo {
List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
ComponentModel component = new ComponentModel();
- component.setScheme(getValue("scheme", rows));
- component.setSyntax(getValue("syntax", rows));
- component.setTitle(getValue("title", rows));
- component.setDescription(getValue("description", rows));
- component.setLabel(getValue("label", rows));
- component.setDeprecated(getValue("deprecated", rows));
- component.setConsumerOnly(getValue("consumerOnly", rows));
- component.setProducerOnly(getValue("producerOnly", rows));
- component.setJavaType(getValue("javaType", rows));
- component.setGroupId(getValue("groupId", rows));
- component.setArtifactId(getValue("artifactId", rows));
- component.setVersion(getValue("version", rows));
+ component.setScheme(JSonSchemaHelper.getSafeValue("scheme", rows));
+ component.setSyntax(JSonSchemaHelper.getSafeValue("syntax", rows));
+ component.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
+ component.setDescription(JSonSchemaHelper.getSafeValue("description", 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);
-
- List<ComponentOptionModel> options = new ArrayList<ComponentOptionModel>();
+ List<ComponentOptionModel> componentOptions = new ArrayList<ComponentOptionModel>();
for (Map<String, String> row : rows) {
ComponentOptionModel option = new ComponentOptionModel();
- option.setKey(getValue("name", row));
- option.setKind(getValue("kind", row));
- option.setType(getValue("type", row));
- option.setJavaType(getValue("javaType", row));
- option.setDeprecated(getValue("javaType", row));
- option.setDescription(getValue("description", row));
- options.add(option);
+ option.setName(getSafeValue("name", row));
+ option.setKind(getSafeValue("kind", row));
+ option.setType(getSafeValue("type", row));
+ option.setJavaType(getSafeValue("javaType", row));
+ option.setDeprecated(getSafeValue("deprecated", row));
+ option.setDescription(getSafeValue("description", row));
+ componentOptions.add(option);
}
- component.setOptions(options);
+ component.setComponentOptions(componentOptions);
+
+ rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
+ List<EndpointOptionModel> endpointOptions = new ArrayList<EndpointOptionModel>();
+ for (Map<String, String> row : rows) {
+ EndpointOptionModel option = new EndpointOptionModel();
+ option.setName(getSafeValue("name", row));
+ option.setKind(getSafeValue("kind", row));
+ option.setGroup(getSafeValue("group", row));
+ option.setRequired(getSafeValue("required", row));
+ option.setType(getSafeValue("type", row));
+ option.setJavaType(getSafeValue("javaType", row));
+ option.setEnums(getSafeValue("enum", row));
+ option.setPrefix(getSafeValue("prefix", row));
+ option.setMultiValue(getSafeValue("multiValue", row));
+ option.setDeprecated(getSafeValue("deprecated", row));
+ option.setDefaultValue(getSafeValue("defaultValue", row));
+ option.setDescription(getSafeValue("description", row));
+ endpointOptions.add(option);
+ }
+ component.setEndpointOptions(endpointOptions);
return component;
}
@@ -169,6 +192,16 @@ public class ReadmeComponentMojo extends AbstractMojo {
}
}
+ private String templateEndpointOptions(ComponentModel model) throws MojoExecutionException {
+ try {
+ String template = loadText(ReadmeComponentMojo.class.getClassLoader().getResourceAsStream("endpoint-options.mvel"));
+ String out = (String) TemplateRuntime.eval(template, model);
+ return out;
+ } catch (Exception e) {
+ throw new MojoExecutionException("Error processing mvel template. Reason: " + e, e);
+ }
+ }
+
private List<String> findComponentNames() {
List<String> componentNames = new ArrayList<String>();
for (Resource r : project.getBuild().getResources()) {
http://git-wip-us.apache.org/repos/asf/camel/blob/b3c02c4c/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 7e689dd..280f77d 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
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -33,7 +33,8 @@ public class ComponentModel {
private String groupId;
private String artifactId;
private String version;
- private List<ComponentOptionModel> options;
+ private List<ComponentOptionModel> componentOptions;
+ private List<EndpointOptionModel> endpointOptions;
public String getKind() {
return kind;
@@ -139,11 +140,19 @@ public class ComponentModel {
this.version = version;
}
- public List<ComponentOptionModel> getOptions() {
- return options;
+ public List<ComponentOptionModel> getComponentOptions() {
+ return componentOptions;
}
- public void setOptions(List<ComponentOptionModel> options) {
- this.options = options;
+ public void setComponentOptions(List<ComponentOptionModel> componentOptions) {
+ this.componentOptions = componentOptions;
+ }
+
+ public List<EndpointOptionModel> getEndpointOptions() {
+ return endpointOptions;
+ }
+
+ public void setEndpointOptions(List<EndpointOptionModel> endpointOptions) {
+ this.endpointOptions = endpointOptions;
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b3c02c4c/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentOptionModel.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentOptionModel.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentOptionModel.java
index 31df0dd..978b166 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentOptionModel.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/ComponentOptionModel.java
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -18,19 +18,19 @@ package org.apache.camel.maven.packaging.model;
public class ComponentOptionModel {
- private String key;
+ private String name;
private String kind;
private String type;
private String javaType;
private String deprecated;
private String description;
- public String getKey() {
- return key;
+ public String getName() {
+ return name;
}
- public void setKey(String key) {
- this.key = key;
+ public void setName(String name) {
+ this.name = name;
}
public String getKind() {
http://git-wip-us.apache.org/repos/asf/camel/blob/b3c02c4c/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/EndpointOptionModel.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/EndpointOptionModel.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/EndpointOptionModel.java
new file mode 100644
index 0000000..bec4bd5
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/model/EndpointOptionModel.java
@@ -0,0 +1,129 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.maven.packaging.model;
+
+public class EndpointOptionModel {
+
+ private String name;
+ private String kind;
+ private String group;
+ private String required;
+ private String type;
+ private String javaType;
+ private String enums;
+ private String prefix;
+ private String multiValue;
+ private String deprecated;
+ private String defaultValue;
+ private String description;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getKind() {
+ return kind;
+ }
+
+ public void setKind(String kind) {
+ this.kind = kind;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public void setGroup(String group) {
+ this.group = group;
+ }
+
+ public String getRequired() {
+ return required;
+ }
+
+ public void setRequired(String required) {
+ this.required = required;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getJavaType() {
+ return javaType;
+ }
+
+ public void setJavaType(String javaType) {
+ this.javaType = javaType;
+ }
+
+ public String getEnums() {
+ return enums;
+ }
+
+ public void setEnums(String enums) {
+ this.enums = enums;
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public String getMultiValue() {
+ return multiValue;
+ }
+
+ public void setMultiValue(String multiValue) {
+ this.multiValue = multiValue;
+ }
+
+ public String getDeprecated() {
+ return deprecated;
+ }
+
+ public void setDeprecated(String deprecated) {
+ this.deprecated = deprecated;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/b3c02c4c/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel b/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
index cd895c5..0ad31a6 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
+++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
@@ -1,8 +1,8 @@
### Component options
-The @{title} component supports @{options.size()} options which are listed below:
+The @{title} component supports @{componentOptions.size()} options which are listed below.
| Key | Description |
| --- | ----------- |
-@foreach{row : options}| @{row.key} | @{row.description} |
+@foreach{row : componentOptions}| @{row.name} | @{row.description} |
@end{}
http://git-wip-us.apache.org/repos/asf/camel/blob/b3c02c4c/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
new file mode 100644
index 0000000..98f7be4
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
@@ -0,0 +1,8 @@
+### Endpoint options
+
+The @{title} component supports @{endpointOptions.size()} endpoint options which are listed below:
+
+| Key | Group | Required | Default | Description |
+| --- | ----- | -------- | ------- | ----------- |
+@foreach{row : endpointOptions}| @{row.name} | @{row.group} | @{row.required} | @{row.defaultValue} | @{row.description} |
+@end{}