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 <thomas....@ctp.com> Authored: Mon Apr 27 17:50:56 2015 +0200 Committer: Thomas Hug <thomas....@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);