You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/01/12 11:02:06 UTC

[2/2] camel git commit: Apt compiler plugin to output @AsPredicate information

Apt compiler plugin to output @AsPredicate information


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

Branch: refs/heads/master
Commit: 0d02e9e3c7ad6c0d3280a252f893f266f33aedd7
Parents: a9d0d9b
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Jan 12 12:00:56 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jan 12 12:00:56 2017 +0100

----------------------------------------------------------------------
 .../tools/apt/CoreEipAnnotationProcessor.java   | 22 ++++++++++++++------
 .../tools/apt/helper/JsonSchemaHelper.java      | 10 +++++++--
 2 files changed, 24 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0d02e9e3/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 2ae503c..fee000c 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
@@ -40,6 +40,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.tools.apt.helper.JsonSchemaHelper;
 import org.apache.camel.tools.apt.helper.Strings;
@@ -421,6 +422,12 @@ public class CoreEipAnnotationProcessor {
             // metadata may overrule element required
             required = findRequired(fieldElement, required);
 
+            // is it used as predicate (check field first and then fallback to its class)
+            boolean asPredicate = fieldElement.getAnnotation(AsPredicate.class) != null;
+            if (!asPredicate) {
+                asPredicate = classElement.getAnnotation(AsPredicate.class) != null;
+            }
+
             // gather enums
             Set<String> enums = new LinkedHashSet<String>();
             boolean isEnum = fieldTypeElement != null && fieldTypeElement.getKind() == ElementKind.ENUM;
@@ -438,8 +445,6 @@ public class CoreEipAnnotationProcessor {
                 }
             }
 
-            boolean asPredicate = false;
-
             // gather oneOf expression/predicates which uses language
             Set<String> oneOfTypes = new TreeSet<String>();
             boolean isOneOf = ONE_OF_TYPE_NAME.equals(fieldTypeName);
@@ -775,7 +780,14 @@ public class CoreEipAnnotationProcessor {
             // 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 asPredicate = false;
+            // is it used as predicate (check field first and then fallback to its class / original class)
+            boolean asPredicate = fieldElement.getAnnotation(AsPredicate.class) != null;
+            if (!asPredicate) {
+                asPredicate = classElement.getAnnotation(AsPredicate.class) != null;
+            }
+            if (!asPredicate) {
+                asPredicate = originalClassType.getAnnotation(AsPredicate.class) != null;
+            }
 
             // gather oneOf expression/predicates which uses language
             Set<String> oneOfTypes = new TreeSet<String>();
@@ -789,9 +801,7 @@ public class CoreEipAnnotationProcessor {
                     XmlRootElement rootElement = child.getAnnotation(XmlRootElement.class);
                     if (rootElement != null) {
                         String childName = rootElement.name();
-                        if (childName != null) {
-                            oneOfTypes.add(childName);
-                        }
+                        oneOfTypes.add(childName);
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/0d02e9e3/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 c595b0e..3cea5a0 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
@@ -129,9 +129,15 @@ public final class JsonSchemaHelper {
             sb.append(Strings.doubleQuote(text));
         }
 
-        if (asPredicate) {
+        // for expressions we want to know if it must be used as predicate or not
+        boolean predicate = "expression".equals(kind) || asPredicate;
+        if (predicate) {
             sb.append(", \"asPredicate\": ");
-            sb.append(Strings.doubleQuote("true"));
+            if (asPredicate) {
+                sb.append(Strings.doubleQuote("true"));
+            } else {
+                sb.append(Strings.doubleQuote("false"));
+            }
         }
 
         if (!Strings.isNullOrEmpty(description)) {