Commit 1b9db5469a08cff42a536cba25b91eb5c27e6940
1 parent
882867ad
Exists in
master
FWK-214: Correção do erro java.lang.NoSuchMethodError:
br.gov.frameworkdemoiselle.util.Beans.getReference Task-Url: https://demoiselle.atlassian.net/browse/FWK-214
Showing
1 changed file
with
24 additions
and
5 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java
| @@ -77,6 +77,10 @@ public final class Beans { | @@ -77,6 +77,10 @@ public final class Beans { | ||
| 77 | return beanManager; | 77 | return beanManager; |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | + public static <T> T getReference(final Class<T> beanClass) { | ||
| 81 | + return getReference(beanClass, (Annotation[]) null); | ||
| 82 | + } | ||
| 83 | + | ||
| 80 | /** | 84 | /** |
| 81 | * Obtains a injectble instance of a bean, which have the given required type and qualifiers, and are available for | 85 | * Obtains a injectble instance of a bean, which have the given required type and qualifiers, and are available for |
| 82 | * injection in the point where this method was call. | 86 | * injection in the point where this method was call. |
| @@ -93,15 +97,24 @@ public final class Beans { | @@ -93,15 +97,24 @@ public final class Beans { | ||
| 93 | T instance; | 97 | T instance; |
| 94 | 98 | ||
| 95 | try { | 99 | try { |
| 96 | - instance = (T) getReference(getBeanManager().getBeans(beanClass, qualifiers), beanClass, qualifiers); | 100 | + Set<Bean<?>> beans; |
| 101 | + if (qualifiers == null) { | ||
| 102 | + beans = getBeanManager().getBeans(beanClass); | ||
| 103 | + } else { | ||
| 104 | + beans = getBeanManager().getBeans(beanClass, qualifiers); | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + instance = (T) getReference(beans, beanClass, qualifiers); | ||
| 97 | 108 | ||
| 98 | } catch (NoSuchElementException cause) { | 109 | } catch (NoSuchElementException cause) { |
| 99 | StringBuffer buffer = new StringBuffer(); | 110 | StringBuffer buffer = new StringBuffer(); |
| 100 | buffer.append(beanClass.getCanonicalName()); | 111 | buffer.append(beanClass.getCanonicalName()); |
| 101 | 112 | ||
| 102 | - for (Annotation qualifier : qualifiers) { | ||
| 103 | - buffer.append(", "); | ||
| 104 | - buffer.append(qualifier.getClass().getCanonicalName()); | 113 | + if (qualifiers != null) { |
| 114 | + for (Annotation qualifier : qualifiers) { | ||
| 115 | + buffer.append(", "); | ||
| 116 | + buffer.append(qualifier.getClass().getCanonicalName()); | ||
| 117 | + } | ||
| 105 | } | 118 | } |
| 106 | 119 | ||
| 107 | String message = getBundle().getString("bean-not-found", buffer.toString()); | 120 | String message = getBundle().getString("bean-not-found", buffer.toString()); |
| @@ -146,7 +159,13 @@ public final class Beans { | @@ -146,7 +159,13 @@ public final class Beans { | ||
| 146 | Bean<?> bean = beans.iterator().next(); | 159 | Bean<?> bean = beans.iterator().next(); |
| 147 | CreationalContext<?> context = getBeanManager().createCreationalContext(bean); | 160 | CreationalContext<?> context = getBeanManager().createCreationalContext(bean); |
| 148 | Type beanType = beanClass == null ? bean.getBeanClass() : beanClass; | 161 | Type beanType = beanClass == null ? bean.getBeanClass() : beanClass; |
| 149 | - InjectionPoint injectionPoint = new CustomInjectionPoint(bean, beanType, qualifiers); | 162 | + InjectionPoint injectionPoint; |
| 163 | + | ||
| 164 | + if (qualifiers == null) { | ||
| 165 | + injectionPoint = new CustomInjectionPoint(bean, beanType); | ||
| 166 | + } else { | ||
| 167 | + injectionPoint = new CustomInjectionPoint(bean, beanType, qualifiers); | ||
| 168 | + } | ||
| 150 | 169 | ||
| 151 | return (T) getBeanManager().getInjectableReference(injectionPoint, context); | 170 | return (T) getBeanManager().getInjectableReference(injectionPoint, context); |
| 152 | } | 171 | } |