Repository: camel
Updated Branches:
  refs/heads/master a4562daaa -> 8906357b9


CAMEL-7999: apt plugin should generate when clauses for CBR in the model.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8906357b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8906357b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8906357b

Branch: refs/heads/master
Commit: 8906357b951e8051c308a957b7d46d270e2473ac
Parents: a4562da
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue Feb 10 08:46:11 2015 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Feb 10 08:46:11 2015 +0100

----------------------------------------------------------------------
 .../apache/camel/model/ChoiceDefinition.java    |  3 +
 .../camel/tools/apt/EipAnnotationProcessor.java | 81 +++++++++++++-------
 2 files changed, 58 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8906357b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
index 498e614..b2160de 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
@@ -211,6 +211,9 @@ public class ChoiceDefinition extends 
ProcessorDefinition<ChoiceDefinition> {
         return whenClauses;
     }
 
+    /**
+     * Sets the when clauses
+     */
     public void setWhenClauses(List<WhenDefinition> whenClauses) {
         this.whenClauses = whenClauses;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/8906357b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EipAnnotationProcessor.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EipAnnotationProcessor.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EipAnnotationProcessor.java
index d3bda3b..cbcbdb9 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EipAnnotationProcessor.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EipAnnotationProcessor.java
@@ -268,6 +268,9 @@ public class EipAnnotationProcessor extends 
AbstractAnnotationProcessor {
 
                     // special for expression
                     processRefExpression(roundEnv, originalClassType, 
classElement, elementRef, fieldElement, fieldName, eipOptions, prefix);
+
+                    // special for when clauses
+                    processRefWhenClauses(roundEnv, originalClassType, 
elementRef, fieldElement, fieldName, eipOptions, prefix);
                 }
             }
 
@@ -601,9 +604,49 @@ public class EipAnnotationProcessor extends 
AbstractAnnotationProcessor {
     }
 
     /**
+     * Special for processing an @XmlElementRef outputs field
+     */
+    private void processOutputs(RoundEnvironment roundEnv, TypeElement 
originalClassType, XmlElementRef elementRef,
+                                VariableElement fieldElement, String 
fieldName, Set<EipOption> eipOptions, String prefix) {
+        if ("outputs".equals(fieldName) && supportOutputs(originalClassType)) {
+            String kind = "element";
+            String name = elementRef.name();
+            if (isNullOrEmpty(name) || "##default".equals(name)) {
+                name = fieldName;
+            }
+            name = prefix + name;
+            TypeMirror fieldType = fieldElement.asType();
+            String fieldTypeName = fieldType.toString();
+
+            // gather oneOf which extends any of the output base classes
+            Set<String> oneOfTypes = new TreeSet<String>();
+            // find all classes that has that superClassName
+            Set<TypeElement> children = new LinkedHashSet<TypeElement>();
+            for (String superclass : ONE_OF_OUTPUTS) {
+                findTypeElementChildren(roundEnv, children, superclass);
+            }
+            for (TypeElement child : children) {
+                XmlRootElement rootElement = 
child.getAnnotation(XmlRootElement.class);
+                if (rootElement != null) {
+                    String childName = rootElement.name();
+                    if (childName != null) {
+                        oneOfTypes.add(childName);
+                    }
+                }
+            }
+
+            // remove some types which are not intended as an output in eips
+            oneOfTypes.remove("route");
+
+            EipOption ep = new EipOption(name, kind, fieldTypeName, true, "", 
"", false, false, null, true, oneOfTypes);
+            eipOptions.add(ep);
+        }
+    }
+
+    /**
      * Special for processing an @XmlElementRef expression field
      */
-    private void processRefExpression(RoundEnvironment roundEnv, TypeElement 
originalClassElement, TypeElement classElement,
+    private void processRefExpression(RoundEnvironment roundEnv, TypeElement 
originalClassType, TypeElement classElement,
                                       XmlElementRef elementRef, 
VariableElement fieldElement,
                                       String fieldName, Set<EipOption> 
eipOptions, String prefix) {
         Elements elementUtils = processingEnv.getElementUtils();
@@ -619,7 +662,7 @@ public class EipAnnotationProcessor extends 
AbstractAnnotationProcessor {
             String fieldTypeName = fieldType.toString();
 
             // find javadoc from original class as it will override the 
setExpression method where we can provide the javadoc for the given EIP
-            String docComment = findJavaDoc(elementUtils, fieldElement, 
fieldName, name, originalClassElement, true);
+            String docComment = findJavaDoc(elementUtils, fieldElement, 
fieldName, name, originalClassType, true);
 
             // gather oneOf expression/predicates which uses language
             Set<String> oneOfTypes = new TreeSet<String>();
@@ -646,11 +689,13 @@ public class EipAnnotationProcessor extends 
AbstractAnnotationProcessor {
     }
 
     /**
-     * Special for processing an @XmlElementRef outputs field
+     * Special for processing an @XmlElementRef when field
      */
-    private void processOutputs(RoundEnvironment roundEnv, TypeElement 
originalClassType, XmlElementRef elementRef,
-                                VariableElement fieldElement, String 
fieldName, Set<EipOption> eipOptions, String prefix) {
-        if ("outputs".equals(fieldName) && supportOutputs(originalClassType)) {
+    private void processRefWhenClauses(RoundEnvironment roundEnv, TypeElement 
originalClassType, XmlElementRef elementRef,
+                                       VariableElement fieldElement, String 
fieldName, Set<EipOption> eipOptions, String prefix) {
+        Elements elementUtils = processingEnv.getElementUtils();
+
+        if ("whenClauses".equals(fieldName)) {
             String kind = "element";
             String name = elementRef.name();
             if (isNullOrEmpty(name) || "##default".equals(name)) {
@@ -660,27 +705,11 @@ public class EipAnnotationProcessor extends 
AbstractAnnotationProcessor {
             TypeMirror fieldType = fieldElement.asType();
             String fieldTypeName = fieldType.toString();
 
-            // gather oneOf which extends any of the output base classes
-            Set<String> oneOfTypes = new TreeSet<String>();
-            // find all classes that has that superClassName
-            Set<TypeElement> children = new LinkedHashSet<TypeElement>();
-            for (String superclass : ONE_OF_OUTPUTS) {
-                findTypeElementChildren(roundEnv, children, superclass);
-            }
-            for (TypeElement child : children) {
-                XmlRootElement rootElement = 
child.getAnnotation(XmlRootElement.class);
-                if (rootElement != null) {
-                    String childName = rootElement.name();
-                    if (childName != null) {
-                        oneOfTypes.add(childName);
-                    }
-                }
-            }
-
-            // remove some types which are not intended as an output in eips
-            oneOfTypes.remove("route");
+            // find javadoc from original class as it will override the 
setExpression method where we can provide the javadoc for the given EIP
+            String docComment = findJavaDoc(elementUtils, fieldElement, 
fieldName, name, originalClassType, true);
+            boolean deprecated = fieldElement.getAnnotation(Deprecated.class) 
!= null;
 
-            EipOption ep = new EipOption(name, kind, fieldTypeName, true, "", 
"", false, false, null, true, oneOfTypes);
+            EipOption ep = new EipOption(name, kind, fieldTypeName, false, "", 
docComment, deprecated, false, null, false, null);
             eipOptions.add(ep);
         }
     }

Reply via email to