Commit 50a0b8e277d5186e62d02ea2a0ebf96bf83951aa

Authored by Ednara Oliveira
1 parent 457d0ee2
Exists in master

Ajustes na obtenção de objeto via Beans.getReference

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/processor/AbstractProcessor.java
@@ -39,13 +39,13 @@ package br.gov.frameworkdemoiselle.internal.processor; @@ -39,13 +39,13 @@ package br.gov.frameworkdemoiselle.internal.processor;
39 import java.util.Locale; 39 import java.util.Locale;
40 40
41 import javax.enterprise.inject.spi.AnnotatedCallable; 41 import javax.enterprise.inject.spi.AnnotatedCallable;
42 -import javax.enterprise.inject.spi.Bean;  
43 import javax.enterprise.inject.spi.BeanManager; 42 import javax.enterprise.inject.spi.BeanManager;
44 43
45 import org.slf4j.Logger; 44 import org.slf4j.Logger;
46 45
47 import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer; 46 import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
48 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer; 47 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
  48 +import br.gov.frameworkdemoiselle.util.Beans;
49 import br.gov.frameworkdemoiselle.util.ResourceBundle; 49 import br.gov.frameworkdemoiselle.util.ResourceBundle;
50 50
51 /** 51 /**
@@ -92,13 +92,7 @@ public abstract class AbstractProcessor<T> implements Processor { @@ -92,13 +92,7 @@ public abstract class AbstractProcessor<T> implements Processor {
92 @SuppressWarnings("unchecked") 92 @SuppressWarnings("unchecked")
93 protected T getReferencedBean() { 93 protected T getReferencedBean() {
94 Class<T> classType = (Class<T>) getAnnotatedCallable().getJavaMember().getDeclaringClass(); 94 Class<T> classType = (Class<T>) getAnnotatedCallable().getJavaMember().getDeclaringClass();
95 - return getReferencedBean(classType);  
96 - }  
97 -  
98 - @SuppressWarnings("unchecked")  
99 - protected T getReferencedBean(final Class<T> type) {  
100 - Bean<T> bean = (Bean<T>) beanManager.getBeans(type).iterator().next();  
101 - return (T) beanManager.getReference(bean, type, beanManager.createCreationalContext(bean)); 95 + return Beans.getReference(classType);
102 } 96 }
103 97
104 protected ResourceBundle getBundle() { 98 protected ResourceBundle getBundle() {
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java
@@ -76,33 +76,62 @@ public final class Beans { @@ -76,33 +76,62 @@ public final class Beans {
76 76
77 @SuppressWarnings("unchecked") 77 @SuppressWarnings("unchecked")
78 public static <T> T getReference(final Class<T> beanClass, Annotation... qualifiers) { 78 public static <T> T getReference(final Class<T> beanClass, Annotation... qualifiers) {
79 - return (T) getReference(manager.getBeans(beanClass, qualifiers)); 79 + T instance;
  80 +
  81 + try {
  82 + instance = (T) getReference(manager.getBeans(beanClass, qualifiers));
  83 +
  84 + } catch (NoSuchElementException cause) {
  85 + StringBuffer buffer = new StringBuffer();
  86 + buffer.append(beanClass.getCanonicalName());
  87 +
  88 + for (Annotation qualifier : qualifiers) {
  89 + buffer.append(", ");
  90 + buffer.append(qualifier.getClass().getCanonicalName());
  91 + }
  92 +
  93 + String message = getBundle()
  94 + .getString("bean-not-found", buffer.toString());
  95 + throw new DemoiselleException(message, cause);
  96 + }
  97 +
  98 + return instance;
80 } 99 }
81 100
82 - @SuppressWarnings("unchecked")  
83 public static <T> T getReference(final Class<T> beanClass) { 101 public static <T> T getReference(final Class<T> beanClass) {
84 - return (T) getReference(manager.getBeans(beanClass)); 102 +
  103 + T instance;
  104 +
  105 + try {
  106 + instance = (T) getReference(manager.getBeans(beanClass));
  107 + }catch (NoSuchElementException cause) {
  108 + String message = getBundle()
  109 + .getString("bean-not-found", beanClass.getCanonicalName());
  110 + throw new DemoiselleException(message, cause);
  111 + }
  112 +
  113 + return instance;
85 } 114 }
86 115
87 @SuppressWarnings("unchecked") 116 @SuppressWarnings("unchecked")
88 public static <T> T getReference(String beanName) { 117 public static <T> T getReference(String beanName) {
89 - return (T) getReference(manager.getBeans(beanName));  
90 - }  
91 -  
92 - @SuppressWarnings("unchecked")  
93 - private static <T> T getReference(Set<Bean<?>> beans) {  
94 - T result = null;  
95 - 118 + T instance;
  119 +
96 try { 120 try {
97 - Bean<?> bean = beans.iterator().next();  
98 - result = (T) manager.getReference(bean, bean.getBeanClass(), manager.createCreationalContext(bean));  
99 -  
100 - } catch (NoSuchElementException cause) {  
101 - String message = getBundle().getString("bean-not-found"); 121 + instance = (T) getReference(manager.getBeans(beanName));
  122 + }catch (NoSuchElementException cause) {
  123 + String message = getBundle()
  124 + .getString("bean-not-found", beanName);
102 throw new DemoiselleException(message, cause); 125 throw new DemoiselleException(message, cause);
103 } 126 }
  127 +
  128 + return instance;
  129 + }
104 130
105 - return result; 131 + @SuppressWarnings("unchecked")
  132 + private static <T> T getReference(Set<Bean<?>> beans) {
  133 + Bean<?> bean = beans.iterator().next();
  134 + return (T) manager.getReference(bean, bean.getBeanClass(), manager.createCreationalContext(bean));
106 } 135 }
107 136
108 private static ResourceBundle getBundle() { 137 private static ResourceBundle getBundle() {
impl/core/src/main/resources/demoiselle-core-bundle.properties
@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. 34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
35 35
36 engine-on=Ligando os motores do Demoiselle ${project.version} 36 engine-on=Ligando os motores do Demoiselle ${project.version}
37 -bean-not-found=Voc\u00EA est\u00E1 tentando obter um objeto n\u00E3o reconhecido pelo CDI via Beans.getReference(...) 37 +bean-not-found=Voc\u00EA est\u00E1 tentando obter um objeto n\u00E3o reconhecido pelo CDI via Beans.getReference({0})
38 more-than-one-exceptionhandler-defined-for-same-class=Foi definido mais de um m\u00E9todo na classe {0} para tratar a exce\u00E7\u00E3o {1} 38 more-than-one-exceptionhandler-defined-for-same-class=Foi definido mais de um m\u00E9todo na classe {0} para tratar a exce\u00E7\u00E3o {1}
39 handling-exception=Tratando a exce\u00E7\u00E3o {0} 39 handling-exception=Tratando a exce\u00E7\u00E3o {0}
40 proxy-detected=Detectado o proxy {0} da classe {1} 40 proxy-detected=Detectado o proxy {0} da classe {1}