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();
             }

Reply via email to