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

Reply via email to