Fixed camel-connector to support componentOptions as well.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8c9d459d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8c9d459d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8c9d459d Branch: refs/heads/mention Commit: 8c9d459d36de054e9fae2e901ad38a9bb18173cd Parents: 55e92a4 Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Feb 7 17:02:10 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Feb 7 17:02:10 2017 +0100 ---------------------------------------------------------------------- .../camel/maven/connector/ConnectorMojo.java | 44 ++++++++++++++++---- .../main/resources/camel-connector-schema.json | 4 ++ 2 files changed, 41 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/8c9d459d/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java index 94df1e6..b98e478 100644 --- a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java +++ b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java @@ -130,8 +130,6 @@ public class ConnectorMojo extends AbstractJarMojo { getLog().debug(header); rows = JSonSchemaHelper.parseJsonSchema("componentProperties", json, true); - // we do not offer editing component properties (yet) so clear the rows - rows.clear(); String componentOptions = buildComponentOptionsSchema(rows, dto); getLog().debug(componentOptions); @@ -208,24 +206,56 @@ public class ConnectorMojo extends AbstractJarMojo { } private String buildComponentOptionsSchema(List<Map<String, String>> rows, Map dto) throws JsonProcessingException { + // find the endpoint options + List options = (List) dto.get("componentOptions"); + Map values = (Map) dto.get("componentValues"); + Map overrides = (Map) dto.get("componentOverrides"); + ObjectMapper mapper = new ObjectMapper(); StringBuilder sb = new StringBuilder(); sb.append(" \"componentProperties\": {\n"); + boolean first = true; for (int i = 0; i < rows.size(); i++) { Map<String, String> row = rows.get(i); String key = row.get("name"); row.remove("name"); + + if (options == null || !options.contains(key)) { + continue; + } + + // do we have a new default value for this row? + if (values != null && values.containsKey(key)) { + String newDefaultValue = (String) values.get(key); + if (newDefaultValue != null) { + row.put("defaultValue", newDefaultValue); + } + } + + // is there any overrides for this row? + if (overrides != null && overrides.containsKey(key)) { + Map over = (Map) overrides.get(key); + if (over != null) { + row.putAll(over); + } + } + + // we should build the json as one-line which is how Camel does it today + // which makes its internal json parser support loading our generated schema file String line = mapper.writeValueAsString(row); - sb.append(" \"" + key + "\": "); - sb.append(line); - if (i < rows.size() - 1) { + if (!first) { sb.append(",\n"); - } else { - sb.append("\n"); } + sb.append(" \"" + key + "\": "); + sb.append(line); + + first = false; + } + if (!first) { + sb.append("\n"); } sb.append(" },\n"); http://git-wip-us.apache.org/repos/asf/camel/blob/8c9d459d/connectors/examples/twitter-mention-connector/src/main/resources/camel-connector-schema.json ---------------------------------------------------------------------- diff --git a/connectors/examples/twitter-mention-connector/src/main/resources/camel-connector-schema.json b/connectors/examples/twitter-mention-connector/src/main/resources/camel-connector-schema.json index a2228a0..0cd1639 100644 --- a/connectors/examples/twitter-mention-connector/src/main/resources/camel-connector-schema.json +++ b/connectors/examples/twitter-mention-connector/src/main/resources/camel-connector-schema.json @@ -16,6 +16,10 @@ "version": "2.19.0-SNAPSHOT" }, "componentProperties": { + "accessToken": {"kind":"property","group":"security","label":"security","required":"false","type":"string","javaType":"java.lang.String","deprecated":"false","secret":"true","description":"The access token"}, + "accessTokenSecret": {"kind":"property","group":"security","label":"security","required":"false","type":"string","javaType":"java.lang.String","deprecated":"false","secret":"true","description":"The access token secret"}, + "consumerKey": {"kind":"property","group":"security","label":"security","required":"false","type":"string","javaType":"java.lang.String","deprecated":"false","secret":"true","description":"The consumer key"}, + "consumerSecret": {"kind":"property","group":"security","label":"security","required":"false","type":"string","javaType":"java.lang.String","deprecated":"false","secret":"true","description":"The consumer secret"} }, "properties": { }