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:32 UTC

[4/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/a553aaa8
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a553aaa8
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a553aaa8

Branch: refs/heads/master
Commit: a553aaa8f91896b7e8e8e1fb56b3741150d6fe08
Parents: 3a85641
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:05:41 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/a553aaa8/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/a553aaa8/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;
+        }
+    }
 }