This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit d1d8f4034c298914630ad3dba77bdfdc744e5ceb Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Jun 18 21:21:02 2019 +0200 CAMEL-13658: Using OutputNode instead of isOutputSupported method to mark if a node/definition supports outputs or not. --- .../java/org/apache/camel/model/ThrottleDefinition.java | 2 +- .../camel/tools/apt/CoreEipAnnotationProcessorHelper.java | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java index a1436ee..c8a8d43 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java @@ -37,7 +37,7 @@ import org.apache.camel.spi.Metadata; @Metadata(label = "eip,routing") @XmlRootElement(name = "throttle") @XmlAccessorType(XmlAccessType.FIELD) -@XmlType(propOrder = {"expression", "correlationExpression", "outputs"}) +@XmlType(propOrder = {"expression", "correlationExpression"}) public class ThrottleDefinition extends ExpressionNode implements ExecutorServiceAwareDefinition<ThrottleDefinition> { @XmlElement(name = "correlationExpression") diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java index 554fc96..396dda5 100644 --- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java +++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CoreEipAnnotationProcessorHelper.java @@ -51,6 +51,7 @@ import static org.apache.camel.tools.apt.AnnotationProcessorHelper.findJavaDoc; import static org.apache.camel.tools.apt.AnnotationProcessorHelper.findTypeElement; import static org.apache.camel.tools.apt.AnnotationProcessorHelper.findTypeElementChildren; import static org.apache.camel.tools.apt.AnnotationProcessorHelper.hasSuperClass; +import static org.apache.camel.tools.apt.AnnotationProcessorHelper.implementsInterface; import static org.apache.camel.tools.apt.AnnotationProcessorHelper.processFile; import static org.apache.camel.tools.apt.helper.JsonSchemaHelper.sanitizeDescription; import static org.apache.camel.tools.apt.helper.Strings.canonicalClassName; @@ -71,9 +72,9 @@ public class CoreEipAnnotationProcessorHelper { // find all classes) private static final String[] ONE_OF_INPUTS = new String[] {"org.apache.camel.model.ProcessorDefinition", "org.apache.camel.model.VerbDefinition"}; // special for outputs (these classes have sub classes, so we use this to - // find all classes) + // find all classes - and not in particular if they support outputs or not) private static final String[] ONE_OF_OUTPUTS = new String[] {"org.apache.camel.model.ProcessorDefinition", "org.apache.camel.model.NoOutputDefinition", - "org.apache.camel.model.OutputDefinition", "org.apache.camel.model.ExpressionNode", + "org.apache.camel.model.OutputDefinition", "org.apache.camel.model.OutputExpressionNode", "org.apache.camel.model.NoOutputExpressionNode", "org.apache.camel.model.SendDefinition", "org.apache.camel.model.InterceptDefinition", "org.apache.camel.model.WhenDefinition", "org.apache.camel.model.ToDynamicDefinition"}; @@ -767,7 +768,7 @@ public class CoreEipAnnotationProcessorHelper { */ private void processOutputs(ProcessingEnvironment processingEnv, RoundEnvironment roundEnv, TypeElement originalClassType, XmlElementRef elementRef, VariableElement fieldElement, String fieldName, Set<EipOption> eipOptions, String prefix) { - if ("outputs".equals(fieldName) && supportOutputs(originalClassType)) { + if ("outputs".equals(fieldName) && supportOutputs(processingEnv, roundEnv, originalClassType)) { String kind = "element"; String name = elementRef.name(); if (isNullOrEmpty(name) || "##default".equals(name)) { @@ -818,7 +819,7 @@ public class CoreEipAnnotationProcessorHelper { Elements elementUtils = processingEnv.getElementUtils(); - if ("verbs".equals(fieldName) && supportOutputs(originalClassType)) { + if ("verbs".equals(fieldName) && supportOutputs(processingEnv, roundEnv, originalClassType)) { String kind = "element"; String name = elementRef.name(); if (isNullOrEmpty(name) || "##default".equals(name)) { @@ -978,9 +979,8 @@ public class CoreEipAnnotationProcessorHelper { * There are some classes which does not support outputs, even though they * have a outputs element. */ - private boolean supportOutputs(TypeElement classElement) { - String superclass = canonicalClassName(classElement.getSuperclass().toString()); - return !"org.apache.camel.model.NoOutputExpressionNode".equals(superclass); + private boolean supportOutputs(ProcessingEnvironment processingEnv, RoundEnvironment roundEnv, TypeElement classElement) { + return implementsInterface(processingEnv, roundEnv, classElement, "org.apache.camel.model.OutputNode"); } private String findDefaultValue(VariableElement fieldElement, String fieldTypeName) {