Commit 2841e89f95143a9859e0c5bda50c6439aa19bf1b

Authored by Thiago Soares
1 parent a866e222
Exists in master

Correcao do problema descrito no Mantis "0000745: O Método

getReference() da classe "br.gov.frameworkdemoiselle.util.Beans" dá erro
quando o bean é do tipo Producer Method".

O problema foi corrigido para os seguintes metodos:
 - public static <T> T getReference(final Class<T> beanClass,
Annotation... qualifiers) 
 - public static <T> T getReference(final Class<T> beanClass)

Vale ressaltar que este problema ainda pode ocorrer para o metodo:
 - "public static <T> T getReference(String beanName)".
 
Pois este contina a utilizar o bean.getBeanClass(). Uma solucao
definitiva deve utilizar um dos beansTypes retornados pelo metodo
bean.getTypes().
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java
... ... @@ -65,26 +65,24 @@ public class Beans {
65 65 return manager;
66 66 }
67 67  
68   - @SuppressWarnings("unchecked")
69 68 public static <T> T getReference(final Class<T> beanClass, Annotation... qualifiers) {
70 69 Bean<?> bean = manager.getBeans(beanClass, qualifiers).iterator().next();
71   - return (T) getReference(bean);
  70 + return (T) getReference(bean, beanClass);
72 71 }
73 72  
74   - @SuppressWarnings("unchecked")
75 73 public static <T> T getReference(final Class<T> beanClass) {
76 74 Bean<?> bean = manager.getBeans(beanClass).iterator().next();
77   - return (T) getReference(bean);
  75 + return (T) getReference(bean, beanClass);
78 76 }
79 77  
80 78 @SuppressWarnings("unchecked")
81 79 public static <T> T getReference(String beanName) {
82 80 Bean<?> bean = manager.getBeans(beanName).iterator().next();
83   - return (T) getReference(bean);
  81 + return (T) getReference(bean, bean.getBeanClass());
84 82 }
85 83  
86 84 @SuppressWarnings("unchecked")
87   - private static <T> T getReference(Bean<?> bean) {
88   - return (T) manager.getReference(bean, bean.getBeanClass(), manager.createCreationalContext(bean));
  85 + private static <T> T getReference(Bean<?> bean, final Class<T> beanClass) {
  86 + return (T) manager.getReference(bean, beanClass, manager.createCreationalContext(bean));
89 87 }
90 88 }
... ...