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 39 import java.util.Locale;
40 40  
41 41 import javax.enterprise.inject.spi.AnnotatedCallable;
42   -import javax.enterprise.inject.spi.Bean;
43 42 import javax.enterprise.inject.spi.BeanManager;
44 43  
45 44 import org.slf4j.Logger;
46 45  
47 46 import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
48 47 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
  48 +import br.gov.frameworkdemoiselle.util.Beans;
49 49 import br.gov.frameworkdemoiselle.util.ResourceBundle;
50 50  
51 51 /**
... ... @@ -92,13 +92,7 @@ public abstract class AbstractProcessor<T> implements Processor {
92 92 @SuppressWarnings("unchecked")
93 93 protected T getReferencedBean() {
94 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 98 protected ResourceBundle getBundle() {
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java
... ... @@ -76,33 +76,62 @@ public final class Beans {
76 76  
77 77 @SuppressWarnings("unchecked")
78 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 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 116 @SuppressWarnings("unchecked")
88 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 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 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 137 private static ResourceBundle getBundle() {
... ...
impl/core/src/main/resources/demoiselle-core-bundle.properties
... ... @@ -34,7 +34,7 @@
34 34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
35 35  
36 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 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 39 handling-exception=Tratando a exce\u00E7\u00E3o {0}
40 40 proxy-detected=Detectado o proxy {0} da classe {1}
... ...