Repository: camel
Updated Branches:
  refs/heads/master 2fc3f5489 -> fc39180dc


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/78634db1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/78634db1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/78634db1

Branch: refs/heads/master
Commit: 78634db19316716db9a957f66351c2d41e7d10a0
Parents: 2fc3f54
Author: Claus Ibsen <davscl...@apache.org>
Authored: Thu Feb 16 19:44:05 2017 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Thu Feb 16 19:44:05 2017 +0100

----------------------------------------------------------------------
 .../tools/apt/CoreEipAnnotationProcessor.java   | 106 ++++++++++++++-----
 .../tools/apt/EndpointAnnotationProcessor.java  |  15 +--
 .../tools/apt/SpringAnnotationProcessor.java    |  36 +++++--
 .../tools/apt/helper/JsonSchemaHelper.java      |   8 +-
 .../camel/tools/apt/model/ComponentOption.java  |   8 +-
 .../camel/tools/apt/model/EndpointOption.java   |   8 +-
 .../camel/tools/apt/model/EndpointPath.java     |   8 +-
 .../tools/apt/EndpointOptionComparatorTest.java |   8 +-
 .../java/org/apache/camel/spi/Metadata.java     |   7 ++
 .../java/org/apache/camel/spi/UriParam.java     |   7 ++
 .../main/java/org/apache/camel/spi/UriPath.java |   7 ++
 11 files changed, 168 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
index b1293b5..737df54 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessor.java
@@ -190,7 +190,7 @@ public class CoreEipAnnotationProcessor {
             // as its json we need to sanitize the docs
             String doc = entry.getDocumentation();
             doc = sanitizeDescription(doc, false);
-            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
entry.getKind(), entry.isRequired(), entry.getType(), entry.getDefaultValue(), 
doc,
+            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
entry.getDisplayName(), entry.getKind(), entry.isRequired(), entry.getType(), 
entry.getDefaultValue(), doc,
                     entry.isDeprecated(), false, null, null, 
entry.isEnumType(), entry.getEnums(), entry.isOneOf(), entry.getOneOfTypes(),
                     entry.isAsPredicate(), null, null, false));
         }
@@ -366,8 +366,13 @@ public class CoreEipAnnotationProcessor {
         }
 
         boolean deprecated = fieldElement.getAnnotation(Deprecated.class) != 
null;
+        String displayName = null;
+        Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+        if (metadata != null) {
+            displayName = metadata.displayName();
+        }
 
-        EipOption ep = new EipOption(name, "attribute", fieldTypeName, 
required, defaultValue, docComment, deprecated, isEnum, enums, false, null, 
false);
+        EipOption ep = new EipOption(name, displayName,"attribute", 
fieldTypeName, required, defaultValue, docComment, deprecated, isEnum, enums, 
false, null, false);
         eipOptions.add(ep);
 
         return false;
@@ -399,8 +404,13 @@ public class CoreEipAnnotationProcessor {
         required = findRequired(fieldElement, required);
 
         boolean deprecated = fieldElement.getAnnotation(Deprecated.class) != 
null;
+        String displayName = null;
+        Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+        if (metadata != null) {
+            displayName = metadata.displayName();
+        }
 
-        EipOption ep = new EipOption(name, "value", fieldTypeName, required, 
defaultValue, docComment, deprecated, false, null, false, null, false);
+        EipOption ep = new EipOption(name, displayName,"value", fieldTypeName, 
required, defaultValue, docComment, deprecated, false, null, false, null, 
false);
         eipOptions.add(ep);
     }
 
@@ -482,8 +492,13 @@ public class CoreEipAnnotationProcessor {
             }
 
             boolean deprecated = fieldElement.getAnnotation(Deprecated.class) 
!= null;
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, required, 
defaultValue, docComment, deprecated, isEnum, enums, isOneOf, oneOfTypes, 
asPredicate);
+            EipOption ep = new EipOption(name, displayName, kind, 
fieldTypeName, required, defaultValue, docComment, deprecated, isEnum, enums, 
isOneOf, oneOfTypes, asPredicate);
             eipOptions.add(ep);
         }
     }
@@ -515,7 +530,13 @@ public class CoreEipAnnotationProcessor {
                 oneOfTypes.add(child);
             }
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, required, 
defaultValue, docComment, false, false, null, true, oneOfTypes, false);
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
+
+            EipOption ep = new EipOption(name, displayName, kind, 
fieldTypeName, required, defaultValue, docComment, false, false, null, true, 
oneOfTypes, false);
             eipOptions.add(ep);
         }
     }
@@ -527,52 +548,52 @@ public class CoreEipAnnotationProcessor {
 
         // group
         String docComment = findJavaDoc(elementUtils, null, "group", null, 
classElement, true);
-        EipOption ep = new EipOption("group", "attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
+        EipOption ep = new EipOption("group", "Group","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // group
         docComment = findJavaDoc(elementUtils, null, "streamCache", null, 
classElement, true);
-        ep = new EipOption("streamCache", "attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
+        ep = new EipOption("streamCache", "Stream Cache","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // trace
         docComment = findJavaDoc(elementUtils, null, "trace", null, 
classElement, true);
-        ep = new EipOption("trace", "attribute", "java.lang.String", false, 
"", docComment, false, false, null, false, null, false);
+        ep = new EipOption("trace", "Trace","attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
         eipOptions.add(ep);
 
         // trace
         docComment = findJavaDoc(elementUtils, null, "messageHistory", null, 
classElement, true);
-        ep = new EipOption("messageHistory", "attribute", "java.lang.String", 
false, "true", docComment, false, false, null, false, null, false);
+        ep = new EipOption("messageHistory", "Message History","attribute", 
"java.lang.String", false, "true", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // trace
         docComment = findJavaDoc(elementUtils, null, "handleFault", null, 
classElement, true);
-        ep = new EipOption("handleFault", "attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
+        ep = new EipOption("handleFault", "Handle Fault","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // delayer
         docComment = findJavaDoc(elementUtils, null, "delayer", null, 
classElement, true);
-        ep = new EipOption("delayer", "attribute", "java.lang.String", false, 
"", docComment, false, false, null, false, null, false);
+        ep = new EipOption("delayer", "Delayer","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // autoStartup
         docComment = findJavaDoc(elementUtils, null, "autoStartup", null, 
classElement, true);
-        ep = new EipOption("autoStartup", "attribute", "java.lang.String", 
false, "true", docComment, false, false, null, false, null, false);
+        ep = new EipOption("autoStartup", "Auto Startup","attribute", 
"java.lang.String", false, "true", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // startupOrder
         docComment = findJavaDoc(elementUtils, null, "startupOrder", null, 
classElement, true);
-        ep = new EipOption("startupOrder", "attribute", "java.lang.Integer", 
false, "", docComment, false, false, null, false, null, false);
+        ep = new EipOption("startupOrder", "Startup Order","attribute", 
"java.lang.Integer", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // errorHandlerRef
         docComment = findJavaDoc(elementUtils, null, "errorHandlerRef", null, 
classElement, true);
-        ep = new EipOption("errorHandlerRef", "attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
+        ep = new EipOption("errorHandlerRef", "Error Handler","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // routePolicyRef
         docComment = findJavaDoc(elementUtils, null, "routePolicyRef", null, 
classElement, true);
-        ep = new EipOption("routePolicyRef", "attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
+        ep = new EipOption("routePolicyRef", "Route Policy","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // shutdownRoute
@@ -580,7 +601,7 @@ public class CoreEipAnnotationProcessor {
         enums.add("Default");
         enums.add("Defer");
         docComment = findJavaDoc(elementUtils, null, "shutdownRoute", 
"Default", classElement, true);
-        ep = new EipOption("shutdownRoute", "attribute", 
"org.apache.camel.ShutdownRoute", false, "", docComment, false, true, enums, 
false, null, false);
+        ep = new EipOption("shutdownRoute", "Shutdown Route","attribute", 
"org.apache.camel.ShutdownRoute", false, "", docComment, false, true, enums, 
false, null, false);
         eipOptions.add(ep);
 
         // shutdownRunningTask
@@ -588,14 +609,14 @@ public class CoreEipAnnotationProcessor {
         enums.add("CompleteCurrentTaskOnly");
         enums.add("CompleteAllTasks");
         docComment = findJavaDoc(elementUtils, null, "shutdownRunningTask", 
"CompleteCurrentTaskOnly", classElement, true);
-        ep = new EipOption("shutdownRunningTask", "attribute", 
"org.apache.camel.ShutdownRunningTask", false, "", docComment, false, true, 
enums, false, null, false);
+        ep = new EipOption("shutdownRunningTask", "Shutdown Running Task", 
"attribute", "org.apache.camel.ShutdownRunningTask", false, "", docComment, 
false, true, enums, false, null, false);
         eipOptions.add(ep);
 
         // inputs
         Set<String> oneOfTypes = new TreeSet<String>();
         oneOfTypes.add("from");
         docComment = findJavaDoc(elementUtils, null, "inputs", null, 
classElement, true);
-        ep = new EipOption("inputs", "element", 
"java.util.List<org.apache.camel.model.FromDefinition>", true, "", docComment, 
false, false, null, true, oneOfTypes, false);
+        ep = new EipOption("inputs", "Inputs","element", 
"java.util.List<org.apache.camel.model.FromDefinition>", true, "", docComment, 
false, false, null, true, oneOfTypes, false);
         eipOptions.add(ep);
 
         // outputs
@@ -618,7 +639,7 @@ public class CoreEipAnnotationProcessor {
         oneOfTypes.remove("route");
 
         docComment = findJavaDoc(elementUtils, null, "outputs", null, 
classElement, true);
-        ep = new EipOption("outputs", "element", 
"java.util.List<org.apache.camel.model.ProcessorDefinition<?>>", true, "", 
docComment, false, false, null, true, oneOfTypes, false);
+        ep = new EipOption("outputs", "Outputs","element", 
"java.util.List<org.apache.camel.model.ProcessorDefinition<?>>", true, "", 
docComment, false, false, null, true, oneOfTypes, false);
         eipOptions.add(ep);
     }
 
@@ -632,19 +653,19 @@ public class CoreEipAnnotationProcessor {
 
         // id
         String docComment = findJavaDoc(elementUtils, null, "id", null, 
classElement, true);
-        EipOption ep = new EipOption("id", "attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
+        EipOption ep = new EipOption("id", "Id","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
         eipOptions.add(ep);
 
         // description
         docComment = findJavaDoc(elementUtils, null, "description", null, 
classElement, true);
-        ep = new EipOption("description", "element", 
"org.apache.camel.model.DescriptionDefinition", false, "", docComment, false, 
false, null, false, null, false);
+        ep = new EipOption("description", "Description","element", 
"org.apache.camel.model.DescriptionDefinition", false, "", docComment, false, 
false, null, false, null, false);
         eipOptions.add(ep);
 
         // lets skip custom id as it has no value for end users to configure
         if (!skipUnwanted) {
             // custom id
             docComment = findJavaDoc(elementUtils, null, "customId", null, 
classElement, true);
-            ep = new EipOption("customId", "attribute", "java.lang.String", 
false, "", docComment, false, false, null, false, null, false);
+            ep = new EipOption("customId", "Custom Id","attribute", 
"java.lang.String", false, "", docComment, false, false, null, false, null, 
false);
             eipOptions.add(ep);
         }
     }
@@ -662,7 +683,7 @@ public class CoreEipAnnotationProcessor {
             Set<String> oneOfTypes = new TreeSet<String>();
             oneOfTypes.add("route");
 
-            EipOption ep = new EipOption("routes", "element", fieldTypeName, 
false, "", "Contains the Camel routes", false, false, null, true, oneOfTypes, 
false);
+            EipOption ep = new EipOption("routes", "Routes","element", 
fieldTypeName, false, "", "Contains the Camel routes", false, false, null, 
true, oneOfTypes, false);
             eipOptions.add(ep);
         }
     }
@@ -680,7 +701,7 @@ public class CoreEipAnnotationProcessor {
             Set<String> oneOfTypes = new TreeSet<String>();
             oneOfTypes.add("rest");
 
-            EipOption ep = new EipOption("rests", "element", fieldTypeName, 
false, "", "Contains the rest services defined using the rest-dsl", false, 
false, null, true, oneOfTypes, false);
+            EipOption ep = new EipOption("rests", "Rests","element", 
fieldTypeName, false, "", "Contains the rest services defined using the 
rest-dsl", false, false, null, true, oneOfTypes, false);
             eipOptions.add(ep);
         }
     }
@@ -717,8 +738,13 @@ public class CoreEipAnnotationProcessor {
 
             // remove some types which are not intended as an output in eips
             oneOfTypes.remove("route");
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, true, "", 
"", false, false, null, true, oneOfTypes, false);
+            EipOption ep = new EipOption(name, displayName, kind, 
fieldTypeName, true, "", "", false, false, null, true, oneOfTypes, false);
             eipOptions.add(ep);
         }
     }
@@ -759,8 +785,13 @@ public class CoreEipAnnotationProcessor {
                     }
                 }
             }
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, true, "", 
docComment, false, false, null, true, oneOfTypes, false);
+            EipOption ep = new EipOption(name, displayName, kind, 
fieldTypeName, true, "", docComment, false, false, null, true, oneOfTypes, 
false);
             eipOptions.add(ep);
         }
     }
@@ -813,8 +844,13 @@ public class CoreEipAnnotationProcessor {
             }
 
             boolean deprecated = fieldElement.getAnnotation(Deprecated.class) 
!= null;
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, true, "", 
docComment, deprecated, false, null, true, oneOfTypes, asPredicate);
+            EipOption ep = new EipOption(name, displayName, kind, 
fieldTypeName, true, "", docComment, deprecated, false, null, true, oneOfTypes, 
asPredicate);
             eipOptions.add(ep);
         }
     }
@@ -847,7 +883,13 @@ public class CoreEipAnnotationProcessor {
             // when is predicate
             boolean asPredicate = true;
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, false, "", 
docComment, deprecated, false, null, true, oneOfTypes, asPredicate);
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
+
+            EipOption ep = new EipOption(name, displayName, kind, 
fieldTypeName, false, "", docComment, deprecated, false, null, true, 
oneOfTypes, asPredicate);
             eipOptions.add(ep);
         }
     }
@@ -1032,6 +1074,7 @@ public class CoreEipAnnotationProcessor {
     private static final class EipOption {
 
         private String name;
+        private String displayName;
         private String kind;
         private String type;
         private boolean required;
@@ -1044,9 +1087,10 @@ public class CoreEipAnnotationProcessor {
         private Set<String> oneOfTypes;
         private boolean asPredicate;
 
-        private EipOption(String name, String kind, String type, boolean 
required, String defaultValue, String documentation, boolean deprecated,
+        private EipOption(String name, String displayName, String kind, String 
type, boolean required, String defaultValue, String documentation, boolean 
deprecated,
                           boolean enumType, Set<String> enums, boolean oneOf, 
Set<String> oneOfTypes, boolean asPredicate) {
             this.name = name;
+            this.displayName = displayName;
             this.kind = kind;
             this.type = type;
             this.required = required;
@@ -1064,6 +1108,10 @@ public class CoreEipAnnotationProcessor {
             return name;
         }
 
+        public String getDisplayName() {
+            return displayName;
+        }
+
         public String getKind() {
             return kind;
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/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 e962ad4..72a25cb 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
@@ -224,7 +224,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
             boolean multiValue = false;
             boolean asPredicate = false;
 
-            buffer.append(JsonSchemaHelper.toJson(entry.getName(), "property", 
required, entry.getType(), defaultValue, doc,
+            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
entry.getDisplayName(),"property", required, entry.getType(), defaultValue, doc,
                 entry.isDeprecated(), entry.isSecret(), entry.getGroup(), 
entry.getLabel(), entry.isEnumType(), entry.getEnums(),
                 false, null, asPredicate, optionalPrefix, prefix, multiValue));
         }
@@ -276,7 +276,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
             boolean multiValue = false;
             boolean asPredicate = false;
 
-            buffer.append(JsonSchemaHelper.toJson(entry.getName(), "path", 
required, entry.getType(), defaultValue, doc,
+            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
entry.getDisplayName(),"path", required, entry.getType(), defaultValue, doc,
                 entry.isDeprecated(), entry.isSecret(), entry.getGroup(), 
entry.getLabel(), entry.isEnumType(), entry.getEnums(),
                 false, null, asPredicate, optionalPrefix, prefix, multiValue));
         }
@@ -322,7 +322,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
             boolean multiValue = entry.isMultiValue();
             boolean asPredicate = false;
 
-            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
"parameter", required, entry.getType(), defaultValue,
+            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
entry.getDisplayName(), "parameter", required, entry.getType(), defaultValue,
                 doc, entry.isDeprecated(), entry.isSecret(), entry.getGroup(), 
entry.getLabel(), entry.isEnumType(), entry.getEnums(),
                 false, null, asPredicate, optionalPrefix, prefix, multiValue));
         }
@@ -459,6 +459,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
                 String required = metadata != null ? metadata.required() : 
null;
                 String label = metadata != null ? metadata.label() : null;
                 boolean secret = metadata != null && metadata.secret();
+                String displayName = metadata != null ? metadata.displayName() 
: null;
 
                 // we do not yet have default values / notes / as no 
annotation support yet
                 // String defaultValueNote = param.defaultValueNote();
@@ -513,7 +514,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
                 }
 
                 String group = EndpointHelper.labelAsGroupName(label, 
componentModel.isConsumerOnly(), componentModel.isProducerOnly());
-                ComponentOption option = new ComponentOption(name, 
fieldTypeName, required, defaultValue, defaultValueNote,
+                ComponentOption option = new ComponentOption(name, 
displayName, fieldTypeName, required, defaultValue, defaultValueNote,
                         docComment.trim(), deprecated, secret, group, label, 
isEnum, enums);
                 componentOptions.add(option);
             }
@@ -569,6 +570,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
                     if (Strings.isNullOrEmpty(label) && metadata != null) {
                         label = metadata.label();
                     }
+                    String displayName = metadata != null ? 
metadata.displayName() : null;
 
                     TypeMirror fieldType = fieldElement.asType();
                     String fieldTypeName = fieldType.toString();
@@ -613,7 +615,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
 
                     String group = EndpointHelper.labelAsGroupName(label, 
componentModel.isConsumerOnly(), componentModel.isProducerOnly());
                     boolean isSecret = secret != null ? secret : false;
-                    EndpointPath ep = new EndpointPath(name, fieldTypeName, 
required, defaultValue, docComment, deprecated, isSecret, group, label, isEnum, 
enums);
+                    EndpointPath ep = new EndpointPath(name, displayName, 
fieldTypeName, required, defaultValue, docComment, deprecated, isSecret, group, 
label, isEnum, enums);
                     endpointPaths.add(ep);
                 }
 
@@ -644,6 +646,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
                     if (Strings.isNullOrEmpty(label) && metadata != null) {
                         label = metadata.label();
                     }
+                    String displayName = metadata != null ? 
metadata.displayName() : null;
 
                     // if the field type is a nested parameter then iterate 
through its fields
                     TypeMirror fieldType = fieldElement.asType();
@@ -703,7 +706,7 @@ public class EndpointAnnotationProcessor extends 
AbstractProcessor {
 
                         boolean isSecret = secret != null ? secret : 
param.secret();
                         String group = EndpointHelper.labelAsGroupName(label, 
componentModel.isConsumerOnly(), componentModel.isProducerOnly());
-                        EndpointOption option = new EndpointOption(name, 
fieldTypeName, required, defaultValue, defaultValueNote,
+                        EndpointOption option = new EndpointOption(name, 
displayName, fieldTypeName, required, defaultValue, defaultValueNote,
                                 docComment.trim(), paramOptionalPrefix, 
paramPrefix, multiValue, deprecated, isSecret, group, label, isEnum, enums);
                         endpointOptions.add(option);
                     }

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessor.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessor.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessor.java
index 108386b..f6def82 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessor.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/SpringAnnotationProcessor.java
@@ -148,7 +148,7 @@ public class SpringAnnotationProcessor {
             String doc = entry.getDocumentation();
             doc = sanitizeDescription(doc, false);
 
-            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
entry.getKind(), entry.isRequired(), entry.getType(), entry.getDefaultValue(), 
doc,
+            buffer.append(JsonSchemaHelper.toJson(entry.getName(), 
entry.getDisplayName(), entry.getKind(), entry.isRequired(), entry.getType(), 
entry.getDefaultValue(), doc,
                     entry.isDeprecated(), false, null, null, 
entry.isEnumType(), entry.getEnums(), entry.isOneOf(), entry.getOneOfTypes(), 
entry.isAsPredicate(),
                 null, null, false));
         }
@@ -287,6 +287,11 @@ public class SpringAnnotationProcessor {
         }
 
         boolean deprecated = fieldElement.getAnnotation(Deprecated.class) != 
null;
+        String displayName = null;
+        Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+        if (metadata != null) {
+            displayName = metadata.displayName();
+        }
 
         // special for id as its inherited from camel-core
         if ("id".equals(name) && isNullOrEmpty(docComment)) {
@@ -297,7 +302,7 @@ public class SpringAnnotationProcessor {
             }
         }
 
-        EipOption ep = new EipOption(name, "attribute", fieldTypeName, 
required, defaultValue, docComment, deprecated, isEnum, enums, false, null, 
false);
+        EipOption ep = new EipOption(name, displayName, "attribute", 
fieldTypeName, required, defaultValue, docComment, deprecated, isEnum, enums, 
false, null, false);
         eipOptions.add(ep);
 
         return false;
@@ -315,7 +320,7 @@ public class SpringAnnotationProcessor {
         Set<String> oneOfTypes = new TreeSet<String>();
         oneOfTypes.add("route");
 
-        EipOption ep = new EipOption("route", "element", fieldTypeName, false, 
"", "Contains the Camel routes", false, false, null, true, oneOfTypes, false);
+        EipOption ep = new EipOption("route", "Route","element", 
fieldTypeName, false, "", "Contains the Camel routes", false, false, null, 
true, oneOfTypes, false);
         eipOptions.add(ep);
     }
 
@@ -331,7 +336,7 @@ public class SpringAnnotationProcessor {
         Set<String> oneOfTypes = new TreeSet<String>();
         oneOfTypes.add("rest");
 
-        EipOption ep = new EipOption("rest", "element", fieldTypeName, false, 
"", "Contains the rest services defined using the rest-dsl", false, false, 
null, true, oneOfTypes, false);
+        EipOption ep = new EipOption("rest", "Rest","element", fieldTypeName, 
false, "", "Contains the rest services defined using the rest-dsl", false, 
false, null, true, oneOfTypes, false);
         eipOptions.add(ep);
     }
 
@@ -410,8 +415,13 @@ public class SpringAnnotationProcessor {
 
             boolean deprecated = fieldElement.getAnnotation(Deprecated.class) 
!= null;
             boolean asPredicate = false;
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, required, 
defaultValue, docComment, deprecated, isEnum, enums, oneOf, oneOfTypes, 
asPredicate);
+            EipOption ep = new EipOption(name, displayName, kind, 
fieldTypeName, required, defaultValue, docComment, deprecated, isEnum, enums, 
oneOf, oneOfTypes, asPredicate);
             eipOptions.add(ep);
         }
     }
@@ -446,7 +456,13 @@ public class SpringAnnotationProcessor {
                 String child = element.name();
                 oneOfTypes.add(child);
             }
-            EipOption ep = new EipOption(name, kind, fieldTypeName, required, 
defaultValue, docComment, false, false, null, true, oneOfTypes, false);
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
+
+            EipOption ep = new EipOption(name, kind, displayName, 
fieldTypeName, required, defaultValue, docComment, false, false, null, true, 
oneOfTypes, false);
             eipOptions.add(ep);
         }
     }
@@ -555,6 +571,7 @@ public class SpringAnnotationProcessor {
     private static final class EipOption {
 
         private String name;
+        private String displayName;
         private String kind;
         private String type;
         private boolean required;
@@ -567,9 +584,10 @@ public class SpringAnnotationProcessor {
         private Set<String> oneOfTypes;
         private boolean asPredicate;
 
-        private EipOption(String name, String kind, String type, boolean 
required, String defaultValue, String documentation, boolean deprecated,
+        private EipOption(String name, String displayName, String kind, String 
type, boolean required, String defaultValue, String documentation, boolean 
deprecated,
                           boolean enumType, Set<String> enums, boolean oneOf, 
Set<String> oneOfTypes, boolean asPredicate) {
             this.name = name;
+            this.displayName = displayName;
             this.kind = kind;
             this.type = type;
             this.required = required;
@@ -587,6 +605,10 @@ public class SpringAnnotationProcessor {
             return name;
         }
 
+        public String getDisplayName() {
+            return displayName;
+        }
+
         public String getKind() {
             return kind;
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/JsonSchemaHelper.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/JsonSchemaHelper.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/JsonSchemaHelper.java
index a8df312..b5c8264 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/JsonSchemaHelper.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/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 = JsonSchemaHelper.getType(type, enumType);
@@ -51,6 +51,12 @@ public final class JsonSchemaHelper {
         sb.append(": { \"kind\": ");
         sb.append(Strings.doubleQuote(kind));
 
+        // we want display name early so its easier to spot
+        if (!Strings.isNullOrEmpty(displayName)) {
+            sb.append(", \"displayName\": ");
+            sb.append(Strings.doubleQuote(label));
+        }
+
         // we want group early so its easier to spot
         if (!Strings.isNullOrEmpty(group)) {
             sb.append(", \"group\": ");

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentOption.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentOption.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentOption.java
index 51b72dc..eae23de 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentOption.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentOption.java
@@ -25,6 +25,7 @@ import static 
org.apache.camel.tools.apt.helper.Strings.isNullOrEmpty;
 public final class ComponentOption {
 
     private String name;
+    private String displayName;
     private String type;
     private String required;
     private String defaultValue;
@@ -37,10 +38,11 @@ public final class ComponentOption {
     private boolean enumType;
     private Set<String> enums;
 
-    public ComponentOption(String name, String type, String required, String 
defaultValue, String defaultValueNote,
+    public ComponentOption(String name, String displayName, String type, 
String required, String defaultValue, String defaultValueNote,
                            String documentation, boolean deprecated, boolean 
secret, String group, String label,
                            boolean enumType, Set<String> enums) {
         this.name = name;
+        this.displayName = displayName;
         this.type = type;
         this.required = required;
         this.defaultValue = defaultValue;
@@ -58,6 +60,10 @@ public final class ComponentOption {
         return name;
     }
 
+    public String getDisplayName() {
+        return displayName;
+    }
+
     public String getType() {
         return type;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointOption.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointOption.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointOption.java
index aaeb2bd..d20bdf4 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointOption.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointOption.java
@@ -25,6 +25,7 @@ import static 
org.apache.camel.tools.apt.helper.Strings.isNullOrEmpty;
 public final class EndpointOption {
 
     private String name;
+    private String displayName;
     private String type;
     private String required;
     private String defaultValue;
@@ -40,11 +41,12 @@ public final class EndpointOption {
     private boolean enumType;
     private Set<String> enums;
 
-    public EndpointOption(String name, String type, String required, String 
defaultValue, String defaultValueNote,
+    public EndpointOption(String name, String displayName, String type, String 
required, String defaultValue, String defaultValueNote,
                           String documentation, String optionalPrefix, String 
prefix, boolean multiValue,
                           boolean deprecated, boolean secret, String group, 
String label,
                           boolean enumType, Set<String> enums) {
         this.name = name;
+        this.displayName = displayName;
         this.type = type;
         this.required = required;
         this.defaultValue = defaultValue;
@@ -65,6 +67,10 @@ public final class EndpointOption {
         return name;
     }
 
+    public String getDisplayName() {
+        return displayName;
+    }
+
     public String getType() {
         return type;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointPath.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointPath.java 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointPath.java
index 0c5fdef..f422b85 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointPath.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/EndpointPath.java
@@ -23,6 +23,7 @@ import 
org.apache.camel.tools.apt.helper.CollectionStringBuffer;
 public final class EndpointPath {
 
     private String name;
+    private String displayName;
     private String type;
     private String required;
     private String defaultValue;
@@ -34,10 +35,11 @@ public final class EndpointPath {
     private boolean enumType;
     private Set<String> enums;
 
-    public EndpointPath(String name, String type, String required, String 
defaultValue, String documentation,
+    public EndpointPath(String name, String displayName, String type, String 
required, String defaultValue, String documentation,
                         boolean deprecated, boolean secret, String group, 
String label,
                         boolean enumType, Set<String> enums) {
         this.name = name;
+        this.displayName = displayName;
         this.type = type;
         this.required = required;
         this.defaultValue = defaultValue;
@@ -54,6 +56,10 @@ public final class EndpointPath {
         return name;
     }
 
+    public String getDisplayName() {
+        return displayName;
+    }
+
     public String getType() {
         return type;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/apt/src/test/java/org/apache/camel/tools/apt/EndpointOptionComparatorTest.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/test/java/org/apache/camel/tools/apt/EndpointOptionComparatorTest.java
 
b/tooling/apt/src/test/java/org/apache/camel/tools/apt/EndpointOptionComparatorTest.java
index 0fea0a3..cb63506 100644
--- 
a/tooling/apt/src/test/java/org/apache/camel/tools/apt/EndpointOptionComparatorTest.java
+++ 
b/tooling/apt/src/test/java/org/apache/camel/tools/apt/EndpointOptionComparatorTest.java
@@ -39,10 +39,10 @@ public class EndpointOptionComparatorTest {
         String group3 = EndpointHelper.labelAsGroupName(label3, false, false);
         String group4 = EndpointHelper.labelAsGroupName(label4, false, false);
 
-        EndpointOption op1 = new EndpointOption("first", "string", "true", "", 
"", "blah", null, null, false, false, false, group1, label1, false, null);
-        EndpointOption op2 = new EndpointOption("synchronous", "string", 
"true", "", "", "blah", null, null, false, false, false, group2, label2, false, 
null);
-        EndpointOption op3 = new EndpointOption("second", "string", "true", 
"", "", "blah", null, null, false, false, false, group3, label3, false, null);
-        EndpointOption op4 = new EndpointOption("country", "string", "true", 
"", "", "blah", null, null, false, false, false, group4, label4, false, null);
+        EndpointOption op1 = new EndpointOption("first", "First","string", 
"true", "", "", "blah", null, null, false, false, false, group1, label1, false, 
null);
+        EndpointOption op2 = new EndpointOption("synchronous", 
"Synchronous","string", "true", "", "", "blah", null, null, false, false, 
false, group2, label2, false, null);
+        EndpointOption op3 = new EndpointOption("second", "Second","string", 
"true", "", "", "blah", null, null, false, false, false, group3, label3, false, 
null);
+        EndpointOption op4 = new EndpointOption("country", "Country","string", 
"true", "", "", "blah", null, null, false, false, false, group4, label4, false, 
null);
 
         List<EndpointOption> list = new ArrayList<EndpointOption>();
         list.add(op1);

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
----------------------------------------------------------------------
diff --git 
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java 
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
index 3aa9382..b2c77bd 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
@@ -33,6 +33,13 @@ import java.lang.annotation.Target;
 public @interface Metadata {
 
     /**
+     * A human display name of the parameter.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String displayName() default "";
+
+    /**
      * To define one or more labels.
      * <p/>
      * Multiple labels can be defined as a comma separated value.

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java
----------------------------------------------------------------------
diff --git 
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java 
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java
index dc9a544..f2ebdeda 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriParam.java
@@ -38,6 +38,13 @@ public @interface UriParam {
     String name() default "";
 
     /**
+     * A human display name of the parameter.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String displayName() default "";
+
+    /**
      * The default value of the parameter.
      * <p/>
      * Note that this attribute is only for documentation purpose. The default 
value in use at runtime is the value the Java field was assigned.

http://git-wip-us.apache.org/repos/asf/camel/blob/78634db1/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriPath.java
----------------------------------------------------------------------
diff --git 
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriPath.java 
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriPath.java
index 23dac1f..2a3d014 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriPath.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriPath.java
@@ -40,6 +40,13 @@ public @interface UriPath {
     String name() default "";
 
     /**
+     * A human display name of the parameter.
+     * <p/>
+     * This is used for documentation and tooling only.
+     */
+    String displayName() default "";
+
+    /**
      * The default value of the parameter.
      * <p/>
      * Note that this attribute is only for documentation purpose. The default 
value in use at runtime is the value the Java field was assigned.

Reply via email to