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)) {