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 2014/02/10 13:05:36 UTC

[8/8] git commit: CAMEL-7185: Fixed apt compile processor to handle super classes that is generics based.

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 <da...@apache.org>
Authored: Mon Feb 10 13:05:41 2014 +0100
Committer: Claus Ibsen <da...@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;
+        }
+    }
 }