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.