Skip to content

Commit

Permalink
Fix #399 resolve() shouldn't check for superclasses after all
Browse files Browse the repository at this point in the history
  • Loading branch information
BalusC committed Sep 17, 2017
1 parent 383094a commit 794a9cc
Showing 1 changed file with 7 additions and 11 deletions.
18 changes: 7 additions & 11 deletions src/main/java/org/omnifaces/util/BeansLocal.java
Expand Up @@ -74,14 +74,7 @@ public static <T> Bean<T> resolve(BeanManager beanManager, Class<T> beanClass, A
}
}

Bean<T> bean = (Bean<T>) beanManager.resolve(beans);

if (bean == null && beanClass.getSuperclass() != Object.class) {
return (Bean<T>) resolve(beanManager, beanClass.getSuperclass(), qualifiers);
}
else {
return bean;
}
return (Bean<T>) beanManager.resolve(beans);
}

/**
Expand Down Expand Up @@ -201,12 +194,15 @@ public static <T> void destroy(BeanManager beanManager, Bean<T> bean) {
public static <T> void destroy(BeanManager beanManager, T instance) {
if (instance instanceof Class) { // Java prefers T over Class<T> when varargs is not specified :(
destroy(beanManager, (Class<T>) instance, new Annotation[0]);
return;
}
else {
Bean<T> bean = (Bean<T>) resolve(beanManager, instance.getClass());

if (bean != null) {
for (Class<?> beanClass = instance.getClass(); beanClass != Object.class; beanClass = beanClass.getSuperclass()) {
Bean<T> bean = (Bean<T>) resolve(beanManager, beanClass);

if (bean != null && instance.equals(getInstance(beanManager, bean, false))) {
destroy(beanManager, bean, instance);
return;
}
}
}
Expand Down

0 comments on commit 794a9cc

Please sign in to comment.