CAMEL-7185: Fixed apt compile processor to handle super classes that is generics based.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9b1e388f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9b1e388f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9b1e388f Branch: refs/heads/camel-2.12.x Commit: 9b1e388f2d9c5ca10101babe5d6aba4ef60b7d82 Parents: 7ec168b Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Feb 10 13:05:41 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Feb 10 13:06:34 2014 +0100 ---------------------------------------------------------------------- .../camel/tools/apt/EndpointAnnotationProcessor.java | 7 +++++-- .../java/org/apache/camel/tools/apt/util/Strings.java | 13 +++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/9b1e388f/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java ---------------------------------------------------------------------- diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java index b06930d..9879993 100644 --- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java +++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java @@ -54,6 +54,8 @@ import org.apache.camel.spi.UriParams; import org.apache.camel.tools.apt.util.Func1; import org.apache.camel.tools.apt.util.Strings; +import static org.apache.camel.tools.apt.util.Strings.canonicalClassName; + /** * Processes all Camel endpoints */ @@ -240,7 +242,8 @@ public class EndpointAnnotationProcessor extends AbstractProcessor { TypeElement baseTypeElement = null; TypeMirror superclass = classElement.getSuperclass(); if (superclass != null) { - baseTypeElement = findTypeElement(roundEnv, superclass.toString()); + String superClassName = canonicalClassName(superclass.toString()); + baseTypeElement = findTypeElement(roundEnv, superClassName); } if (baseTypeElement != null) { classElement = baseTypeElement; @@ -257,7 +260,7 @@ public class EndpointAnnotationProcessor extends AbstractProcessor { for (Element rootElement : rootElements) { if (rootElement instanceof TypeElement) { TypeElement typeElement = (TypeElement) rootElement; - String aRootName = typeElement.getQualifiedName().toString(); + String aRootName = canonicalClassName(typeElement.getQualifiedName().toString()); if (className.equals(aRootName)) { return typeElement; } http://git-wip-us.apache.org/repos/asf/camel/blob/9b1e388f/tooling/apt/src/main/java/org/apache/camel/tools/apt/util/Strings.java ---------------------------------------------------------------------- diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/util/Strings.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/util/Strings.java index 74df4dd..bfa8c6b 100644 --- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/util/Strings.java +++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/util/Strings.java @@ -36,4 +36,17 @@ public final class Strings { public static String getOrElse(String text, String defaultValue) { return (text != null) ? text : defaultValue; } + + /** + * Returns the canonical class name by removing any generic type information. + */ + public static String canonicalClassName(String className) { + // remove generics + int pos = className.indexOf('<'); + if (pos != -1) { + return className.substring(0, pos); + } else { + return className; + } + } }