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,26 +65,24 @@ public class Beans {
65 return manager; 65 return manager;
66 } 66 }
67 67
68 - @SuppressWarnings("unchecked")  
69 public static <T> T getReference(final Class<T> beanClass, Annotation... qualifiers) { 68 public static <T> T getReference(final Class<T> beanClass, Annotation... qualifiers) {
70 Bean<?> bean = manager.getBeans(beanClass, qualifiers).iterator().next(); 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 public static <T> T getReference(final Class<T> beanClass) { 73 public static <T> T getReference(final Class<T> beanClass) {
76 Bean<?> bean = manager.getBeans(beanClass).iterator().next(); 74 Bean<?> bean = manager.getBeans(beanClass).iterator().next();
77 - return (T) getReference(bean); 75 + return (T) getReference(bean, beanClass);
78 } 76 }
79 77
80 @SuppressWarnings("unchecked") 78 @SuppressWarnings("unchecked")
81 public static <T> T getReference(String beanName) { 79 public static <T> T getReference(String beanName) {
82 Bean<?> bean = manager.getBeans(beanName).iterator().next(); 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 @SuppressWarnings("unchecked") 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 }