Repository: camel Updated Branches: refs/heads/master ab1842307 -> fbd8d65fd
Component docs - apt compiler plugin should support @Metadata enums for eip/data formats as well. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2213f719 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2213f719 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2213f719 Branch: refs/heads/master Commit: 2213f71944aec8020c1023b5a389aec84e685893 Parents: ab18423 Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Apr 11 20:18:47 2017 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Apr 11 20:18:47 2017 +0200 ---------------------------------------------------------------------- .../ProtobufDataFormatConfiguration.java | 1 + .../tools/apt/CoreEipAnnotationProcessor.java | 66 +++++++++++++------- 2 files changed, 44 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/2213f719/platforms/spring-boot/components-starter/camel-protobuf-starter/src/main/java/org/apache/camel/dataformat/protobuf/springboot/ProtobufDataFormatConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-protobuf-starter/src/main/java/org/apache/camel/dataformat/protobuf/springboot/ProtobufDataFormatConfiguration.java b/platforms/spring-boot/components-starter/camel-protobuf-starter/src/main/java/org/apache/camel/dataformat/protobuf/springboot/ProtobufDataFormatConfiguration.java index 7b693cc..85a6319 100644 --- a/platforms/spring-boot/components-starter/camel-protobuf-starter/src/main/java/org/apache/camel/dataformat/protobuf/springboot/ProtobufDataFormatConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-protobuf-starter/src/main/java/org/apache/camel/dataformat/protobuf/springboot/ProtobufDataFormatConfiguration.java @@ -16,6 +16,7 @@ */ package org.apache.camel.dataformat.protobuf.springboot; +import org.apache.camel.dataformat.protobuf.ProtobufDataFormat; import org.springframework.boot.context.properties.ConfigurationProperties; /** http://git-wip-us.apache.org/repos/asf/camel/blob/2213f719/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 73eb1bf..2a0b720 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 @@ -337,6 +337,8 @@ public class CoreEipAnnotationProcessor { } } + Metadata metadata = fieldElement.getAnnotation(Metadata.class); + name = prefix + name; TypeMirror fieldType = fieldElement.asType(); String fieldTypeName = fieldType.toString(); @@ -350,16 +352,25 @@ public class CoreEipAnnotationProcessor { // gather enums Set<String> enums = new TreeSet<String>(); - boolean isEnum = fieldTypeElement != null && fieldTypeElement.getKind() == ElementKind.ENUM; - if (isEnum) { - TypeElement enumClass = findTypeElement(processingEnv, roundEnv, fieldTypeElement.asType().toString()); - if (enumClass != null) { - // find all the enum constants which has the possible enum value that can be used - List<VariableElement> fields = ElementFilter.fieldsIn(enumClass.getEnclosedElements()); - for (VariableElement var : fields) { - if (var.getKind() == ElementKind.ENUM_CONSTANT) { - String val = var.toString(); - enums.add(val); + boolean isEnum; + if (metadata != null && !Strings.isNullOrEmpty(metadata.enums())) { + isEnum = true; + String[] values = metadata.enums().split(","); + for (String val : values) { + enums.add(val); + } + } else { + isEnum = fieldTypeElement != null && fieldTypeElement.getKind() == ElementKind.ENUM; + if (isEnum) { + TypeElement enumClass = findTypeElement(processingEnv, roundEnv, fieldTypeElement.asType().toString()); + if (enumClass != null) { + // find all the enum constants which has the possible enum value that can be used + List<VariableElement> fields = ElementFilter.fieldsIn(enumClass.getEnclosedElements()); + for (VariableElement var : fields) { + if (var.getKind() == ElementKind.ENUM_CONSTANT) { + String val = var.toString(); + enums.add(val); + } } } } @@ -367,7 +378,6 @@ 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(); } @@ -422,6 +432,8 @@ public class CoreEipAnnotationProcessor { fieldName = fieldElement.getSimpleName().toString(); if (element != null) { + Metadata metadata = fieldElement.getAnnotation(Metadata.class); + String kind = "element"; String name = element.name(); if (isNullOrEmpty(name) || "##default".equals(name)) { @@ -445,17 +457,26 @@ public class CoreEipAnnotationProcessor { } // gather enums - Set<String> enums = new LinkedHashSet<String>(); - boolean isEnum = fieldTypeElement != null && fieldTypeElement.getKind() == ElementKind.ENUM; - if (isEnum) { - TypeElement enumClass = findTypeElement(processingEnv, roundEnv, fieldTypeElement.asType().toString()); - if (enumClass != null) { - // find all the enum constants which has the possible enum value that can be used - List<VariableElement> fields = ElementFilter.fieldsIn(enumClass.getEnclosedElements()); - for (VariableElement var : fields) { - if (var.getKind() == ElementKind.ENUM_CONSTANT) { - String val = var.toString(); - enums.add(val); + Set<String> enums = new TreeSet<String>(); + boolean isEnum; + if (metadata != null && !Strings.isNullOrEmpty(metadata.enums())) { + isEnum = true; + String[] values = metadata.enums().split(","); + for (String val : values) { + enums.add(val); + } + } else { + isEnum = fieldTypeElement != null && fieldTypeElement.getKind() == ElementKind.ENUM; + if (isEnum) { + TypeElement enumClass = findTypeElement(processingEnv, roundEnv, fieldTypeElement.asType().toString()); + if (enumClass != null) { + // find all the enum constants which has the possible enum value that can be used + List<VariableElement> fields = ElementFilter.fieldsIn(enumClass.getEnclosedElements()); + for (VariableElement var : fields) { + if (var.getKind() == ElementKind.ENUM_CONSTANT) { + String val = var.toString(); + enums.add(val); + } } } } @@ -493,7 +514,6 @@ 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(); }