CAMEL-10847: Component json schema - Include display name for options
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fc39180d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fc39180d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fc39180d Branch: refs/heads/master Commit: fc39180dcab0a089ac7f1528d6e8550a8be96efb Parents: 357093b Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Feb 16 21:43:59 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Feb 16 21:43:59 2017 +0100 ---------------------------------------------------------------------- .../salesforce/SalesforceEndpointConfig.java | 18 +++++++-------- .../camel/maven/connector/ConnectorMojo.java | 3 ++- .../camel/maven/connector/JSonSchemaHelper.java | 10 ++++++++- .../camel/maven/connector/StringHelper.java | 23 ++++++++++++++++++++ .../main/resources/camel-connector-schema.json | 6 ++--- .../main/resources/camel-connector-schema.json | 6 ++--- .../main/resources/camel-connector-schema.json | 12 +++++----- .../main/resources/camel-connector-schema.json | 8 +++---- .../main/resources/camel-connector-schema.json | 4 ++-- .../src/main/resources/camel-connector.json | 2 +- 10 files changed, 62 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java index 99c9098..5e9c255 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java @@ -97,23 +97,23 @@ public class SalesforceEndpointConfig implements Cloneable { // Rest API properties @UriParam private PayloadFormat format = PayloadFormat.JSON; - @UriParam + @UriParam(displayName = "SObject Name") private String sObjectName; - @UriParam + @UriParam(displayName = "SObject Id") private String sObjectId; - @UriParam + @UriParam(displayName = "SObject Fields") private String sObjectFields; - @UriParam + @UriParam(displayName = "SObject Id Name") private String sObjectIdName; - @UriParam + @UriParam(displayName = "SObject Id Value") private String sObjectIdValue; - @UriParam + @UriParam(displayName = "SObject Blob Field Name") private String sObjectBlobFieldName; - @UriParam + @UriParam(displayName = "SObject Class") private String sObjectClass; - @UriParam + @UriParam(displayName = "SObject Query") private String sObjectQuery; - @UriParam + @UriParam(displayName = "SObject Search") private String sObjectSearch; @UriParam private String apexMethod; http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/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 ff8a574..df192d9 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 @@ -454,6 +454,7 @@ public class ConnectorMojo extends AbstractJarMojo { */ private static String buildJSonLineFromRow(Map<String, String> row) { String name = row.get("name"); + String displayName = row.get("displayName"); String kind = row.get("kind"); boolean required = false; Object value = row.getOrDefault("required", "false"); @@ -502,7 +503,7 @@ public class ConnectorMojo extends AbstractJarMojo { multiValue = Boolean.valueOf(value.toString()); } - return JSonSchemaHelper.toJson(name, kind, required, javaType, defaultValue, description, deprecated, secret, group, label, + return JSonSchemaHelper.toJson(name, displayName, kind, required, javaType, defaultValue, description, deprecated, secret, group, label, enumType, enums, false, null, false, optionalPrefix, prefix, multiValue); } http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/JSonSchemaHelper.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/JSonSchemaHelper.java b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/JSonSchemaHelper.java index 4c968a7..4acdb25 100644 --- a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/JSonSchemaHelper.java +++ b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/JSonSchemaHelper.java @@ -41,7 +41,7 @@ public final class JSonSchemaHelper { private JSonSchemaHelper() { } - public static String toJson(String name, String kind, Boolean required, String type, String defaultValue, String description, + public static String toJson(String name, String displayName, String kind, Boolean required, String type, String defaultValue, String description, Boolean deprecated, Boolean secret, String group, String label, boolean enumType, Set<String> enums, boolean oneOfType, Set<String> oneOffTypes, boolean asPredicate, String optionalPrefix, String prefix, boolean multiValue) { String typeName = getType(type, enumType); @@ -51,6 +51,14 @@ public final class JSonSchemaHelper { sb.append(": { \"kind\": "); sb.append(StringHelper.doubleQuote(kind)); + // compute a display name if we don't have anything + if (StringHelper.isNullOrEmpty(displayName)) { + displayName = StringHelper.asTitle(name); + } + // we want display name early so its easier to spot + sb.append(", \"displayName\": "); + sb.append(StringHelper.doubleQuote(displayName)); + // we want group early so its easier to spot if (!StringHelper.isNullOrEmpty(group)) { sb.append(", \"group\": "); http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/StringHelper.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/StringHelper.java b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/StringHelper.java index b3822a5..b69de06 100644 --- a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/StringHelper.java +++ b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/StringHelper.java @@ -149,4 +149,27 @@ public final class StringHelper { return text; } + /** + * Capitalizes the name as a title + * + * @param name the name + * @return as a title + */ + public static String asTitle(String name) { + StringBuilder sb = new StringBuilder(); + for (char c : name.toCharArray()) { + boolean upper = Character.isUpperCase(c); + boolean first = sb.length() == 0; + if (first) { + sb.append(Character.toUpperCase(c)); + } else if (upper) { + sb.append(' '); + sb.append(c); + } else { + sb.append(Character.toLowerCase(c)); + } + } + return sb.toString().trim(); + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/connectors/examples/bar-connector/src/main/resources/camel-connector-schema.json ---------------------------------------------------------------------- diff --git a/connectors/examples/bar-connector/src/main/resources/camel-connector-schema.json b/connectors/examples/bar-connector/src/main/resources/camel-connector-schema.json index 18032b5..734c9f5 100644 --- a/connectors/examples/bar-connector/src/main/resources/camel-connector-schema.json +++ b/connectors/examples/bar-connector/src/main/resources/camel-connector-schema.json @@ -19,8 +19,8 @@ "componentProperties": { }, "properties": { - "drink": { "kind": "path", "group": "producer", "required": true, "type": "object", "javaType": "org.beverage.Beverages", "enum": [ "Wine", "GinTonic", "Beer" ], "deprecated": false, "secret": false, "description": "What drink to order" }, - "amount": { "kind": "parameter", "group": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "secret": false, "defaultValue": 2, "description": "Number of drinks in the order" }, - "celebrity": { "kind": "parameter", "group": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Is this a famous person ordering" } + "drink": { "kind": "path", "displayName": "Drink", "group": "producer", "required": true, "type": "object", "javaType": "org.beverage.Beverages", "enum": [ "Wine", "GinTonic", "Beer" ], "deprecated": false, "secret": false, "description": "What drink to order" }, + "amount": { "kind": "parameter", "displayName": "Amount", "group": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "secret": false, "defaultValue": 2, "description": "Number of drinks in the order" }, + "celebrity": { "kind": "parameter", "displayName": "Celebrity", "group": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Is this a famous person ordering" } } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/connectors/examples/foo-connector/src/main/resources/camel-connector-schema.json ---------------------------------------------------------------------- diff --git a/connectors/examples/foo-connector/src/main/resources/camel-connector-schema.json b/connectors/examples/foo-connector/src/main/resources/camel-connector-schema.json index 303f978..6e877bd 100644 --- a/connectors/examples/foo-connector/src/main/resources/camel-connector-schema.json +++ b/connectors/examples/foo-connector/src/main/resources/camel-connector-schema.json @@ -19,8 +19,8 @@ "componentProperties": { }, "properties": { - "timerName": { "kind": "path", "group": "consumer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The name of the timer" }, - "period": { "kind": "parameter", "group": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "secret": false, "defaultValue": 5000, "description": "If greater than 0 generate periodic events every period milliseconds. The default value is 1000. You can also specify time values using units such as 60s (60 seconds) 5m30s (5 minutes and 30 seconds) and 1h (1 hour)." }, - "repeatCount": { "kind": "parameter", "group": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1 the timer will only fire once. If you set it to 5 it will only fire five times. A value of zero or negative means fire forever." } + "timerName": { "kind": "path", "displayName": "Timer Name", "group": "consumer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The name of the timer" }, + "period": { "kind": "parameter", "displayName": "Period", "group": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "secret": false, "defaultValue": 5000, "description": "If greater than 0 generate periodic events every period milliseconds. The default value is 1000. You can also specify time values using units such as 60s (60 seconds) 5m30s (5 minutes and 30 seconds) and 1h (1 hour)." }, + "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1 the timer will only fire once. If you set it to 5 it will only fire five times. A value of zero or negative means fire forever." } } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/connectors/examples/salesforce-upsert-contact-connector/src/main/resources/camel-connector-schema.json ---------------------------------------------------------------------- diff --git a/connectors/examples/salesforce-upsert-contact-connector/src/main/resources/camel-connector-schema.json b/connectors/examples/salesforce-upsert-contact-connector/src/main/resources/camel-connector-schema.json index 8030697..7fbb5dd 100644 --- a/connectors/examples/salesforce-upsert-contact-connector/src/main/resources/camel-connector-schema.json +++ b/connectors/examples/salesforce-upsert-contact-connector/src/main/resources/camel-connector-schema.json @@ -17,13 +17,13 @@ "version": "2.19.0-SNAPSHOT" }, "componentProperties": { - "loginUrl": { "kind": "property", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": "https://login.salesforce.com", "description": "Salesforce login URL defaults to https://login.salesforce.com" }, - "clientId": { "kind": "property", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "Salesforce connected application Consumer Key" }, - "clientSecret": { "kind": "property", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "Salesforce connected application Consumer Secret" }, - "refreshToken": { "kind": "property", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "Salesforce connected application Consumer token" } + "loginUrl": { "kind": "property", "displayName": "Login Url", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": "https://login.salesforce.com", "description": "Salesforce login URL defaults to https://login.salesforce.com" }, + "clientId": { "kind": "property", "displayName": "Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "Salesforce connected application Consumer Key" }, + "clientSecret": { "kind": "property", "displayName": "Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "Salesforce connected application Consumer Secret" }, + "refreshToken": { "kind": "property", "displayName": "Refresh Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "Salesforce connected application Consumer token" } }, "properties": { - "sObjectIdName": { "kind": "parameter", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "SObject external ID field name" }, - "sObjectIdValue": { "kind": "parameter", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "SObject external ID field value" } + "sObjectIdName": { "kind": "parameter", "displayName": "SObject Id Name", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "SObject external ID field name" }, + "sObjectIdValue": { "kind": "parameter", "displayName": "SObject Id Value", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "SObject external ID field value" } } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/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 f139cac..113f006 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 @@ -17,10 +17,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" } + "accessToken": { "kind": "property", "displayName": "Access Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "The access token" }, + "accessTokenSecret": { "kind": "property", "displayName": "Access Token Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "The access token secret" }, + "consumerKey": { "kind": "property", "displayName": "Consumer Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "The consumer key" }, + "consumerSecret": { "kind": "property", "displayName": "Consumer Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "description": "The consumer secret" } }, "properties": { } http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/connectors/examples/wine-connector/src/main/resources/camel-connector-schema.json ---------------------------------------------------------------------- diff --git a/connectors/examples/wine-connector/src/main/resources/camel-connector-schema.json b/connectors/examples/wine-connector/src/main/resources/camel-connector-schema.json index 859f2ed..8fc2009 100644 --- a/connectors/examples/wine-connector/src/main/resources/camel-connector-schema.json +++ b/connectors/examples/wine-connector/src/main/resources/camel-connector-schema.json @@ -19,7 +19,7 @@ "componentProperties": { }, "properties": { - "drink": { "kind": "path", "group": "producer", "required": true, "type": "object", "javaType": "org.beverage.Beverages", "enum": [ "Wine" ], "deprecated": false, "secret": false, "defaultValue": "Wine", "description": "You can only order wine" }, - "amount": { "kind": "parameter", "group": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "secret": false, "defaultValue": 1, "description": "Number of drinks in the order" } + "drink": { "kind": "path", "displayName": "Wine Bottle", "group": "producer", "required": true, "type": "object", "javaType": "org.beverage.Beverages", "enum": [ "Wine" ], "deprecated": false, "secret": false, "defaultValue": "Wine", "description": "You can only order wine" }, + "amount": { "kind": "parameter", "displayName": "Amount", "group": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "secret": false, "defaultValue": 1, "description": "Number of drinks in the order" } } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc39180d/connectors/examples/wine-connector/src/main/resources/camel-connector.json ---------------------------------------------------------------------- diff --git a/connectors/examples/wine-connector/src/main/resources/camel-connector.json b/connectors/examples/wine-connector/src/main/resources/camel-connector.json index 7122db7..6c14a9f 100644 --- a/connectors/examples/wine-connector/src/main/resources/camel-connector.json +++ b/connectors/examples/wine-connector/src/main/resources/camel-connector.json @@ -18,6 +18,6 @@ "drink": "Wine" }, "endpointOverrides": { - "drink": { "enum": [ "Wine" ], "description": "You can only order wine" } + "drink": { "displayName": "Wine Bottle", "enum": [ "Wine" ], "description": "You can only order wine" } } } \ No newline at end of file