You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by th...@apache.org on 2015/04/29 09:57:09 UTC

deltaspike git commit: DELTASPIKE-822 Collect all implemented types from repo class

Repository: deltaspike
Updated Branches:
  refs/heads/master ed94665ca -> 46ab26f8a


DELTASPIKE-822 Collect all implemented types from repo class


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/46ab26f8
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/46ab26f8
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/46ab26f8

Branch: refs/heads/master
Commit: 46ab26f8aa1f65ebcff7bdce56bffb3e54e1cc52
Parents: ed94665
Author: Thomas Hug <Th...@ctp.com>
Authored: Mon Apr 27 17:50:56 2015 +0200
Committer: Thomas Hug <Th...@ctp.com>
Committed: Mon Apr 27 17:50:56 2015 +0200

----------------------------------------------------------------------
 .../data/impl/meta/RepositoryComponent.java     | 27 +++++++++++---------
 1 file changed, 15 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/46ab26f8/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponent.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponent.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponent.java
index edbf009..3d74952 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponent.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponent.java
@@ -21,7 +21,6 @@ package org.apache.deltaspike.data.impl.meta;
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -204,21 +203,25 @@ public class RepositoryComponent
     private Set<Class<?>> collectClasses()
     {
         Set<Class<?>> result = new HashSet<Class<?>>();
-        Class<?> current = repoClass;
-        while (!Object.class.equals(current) && current != null)
-        {
-            result.add(current);
-            Class<?>[] interfaces = current.getInterfaces();
-            if (interfaces != null)
-            {
-                result.addAll(Arrays.asList(interfaces));
-            }
-            current = current.getSuperclass();
-        }
+        collectClasses(repoClass, result);
         log.log(Level.FINER, "collectClasses(): Found {0} for {1}", new Object[] { result, repoClass });
         return result;
     }
 
+    private void collectClasses(Class<?> cls, Set<Class<?>> result)
+    {
+        if (cls == null || cls == Object.class)
+        {
+            return;
+        }
+        result.add(cls);
+        for (Class<?> child : cls.getInterfaces())
+        {
+            collectClasses(child, result);
+        }
+        collectClasses(cls.getSuperclass(), result);
+    }
+
     private Class<? extends EntityManagerResolver> extractEntityManagerResolver(Class<?> clazz)
     {
         EntityManagerConfig config = extractEntityManagerConfig(clazz);