Commit dfaff468fe248ada2bd7fb6a4ab64fd01b4f64ad

Authored by Cleverson Sacramento
1 parent 6ab6848a
Exists in master

Correção do erro NoSuchElementException ao usar o Beans.getReference()

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractBootstrap.java
... ... @@ -51,14 +51,12 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle;
51 51  
52 52 public abstract class AbstractBootstrap implements Extension {
53 53  
54   - private static ResourceBundleProducer bundleFactory = new ResourceBundleProducer();
55   -
56 54 protected static ResourceBundle getBundle() {
57 55 return getBundle("demoiselle-core-bundle");
58 56 }
59 57  
60 58 protected static ResourceBundle getBundle(String baseName) {
61   - return bundleFactory.create(baseName, Locale.getDefault());
  59 + return ResourceBundleProducer.create(baseName, Locale.getDefault());
62 60 }
63 61  
64 62 protected static Logger getLogger() {
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java
... ... @@ -63,7 +63,7 @@ public class ResourceBundleProducer implements Serializable {
63 63 * @param String
64 64 * baseName
65 65 */
66   - public ResourceBundle create(String baseName, Locale locale) {
  66 + public static ResourceBundle create(String baseName, Locale locale) {
67 67 ResourceBundle bundle = null;
68 68  
69 69 try {
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java
... ... @@ -49,10 +49,16 @@
49 49 package br.gov.frameworkdemoiselle.util;
50 50  
51 51 import java.lang.annotation.Annotation;
  52 +import java.util.Locale;
  53 +import java.util.NoSuchElementException;
  54 +import java.util.Set;
52 55  
53 56 import javax.enterprise.inject.spi.Bean;
54 57 import javax.enterprise.inject.spi.BeanManager;
55 58  
  59 +import br.gov.frameworkdemoiselle.DemoiselleException;
  60 +import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
  61 +
56 62 public class Beans {
57 63  
58 64 private static BeanManager manager;
... ... @@ -65,24 +71,38 @@ public class Beans {
65 71 return manager;
66 72 }
67 73  
  74 + @SuppressWarnings("unchecked")
68 75 public static <T> T getReference(final Class<T> beanClass, Annotation... qualifiers) {
69   - Bean<?> bean = manager.getBeans(beanClass, qualifiers).iterator().next();
70   - return (T) getReference(bean, beanClass);
  76 + return (T) getReference(manager.getBeans(beanClass, qualifiers));
71 77 }
72 78  
  79 + @SuppressWarnings("unchecked")
73 80 public static <T> T getReference(final Class<T> beanClass) {
74   - Bean<?> bean = manager.getBeans(beanClass).iterator().next();
75   - return (T) getReference(bean, beanClass);
  81 + return (T) getReference(manager.getBeans(beanClass));
76 82 }
77 83  
78 84 @SuppressWarnings("unchecked")
79 85 public static <T> T getReference(String beanName) {
80   - Bean<?> bean = manager.getBeans(beanName).iterator().next();
81   - return (T) getReference(bean, bean.getBeanClass());
  86 + return (T) getReference(manager.getBeans(beanName));
82 87 }
83 88  
84 89 @SuppressWarnings("unchecked")
85   - private static <T> T getReference(Bean<?> bean, final Class<T> beanClass) {
86   - return (T) manager.getReference(bean, beanClass, manager.createCreationalContext(bean));
  90 + private static <T> T getReference(Set<Bean<?>> beans) {
  91 + T result = null;
  92 +
  93 + try {
  94 + Bean<?> bean = beans.iterator().next();
  95 + result = (T) manager.getReference(bean, bean.getBeanClass(), manager.createCreationalContext(bean));
  96 +
  97 + } catch (NoSuchElementException cause) {
  98 + String message = getBundle().getString("bean-not-found");
  99 + throw new DemoiselleException(message, cause);
  100 + }
  101 +
  102 + return result;
  103 + }
  104 +
  105 + private static ResourceBundle getBundle() {
  106 + return ResourceBundleProducer.create("demoiselle-core-bundle", Locale.getDefault());
87 107 }
88 108 }
... ...
impl/core/src/main/resources/demoiselle-core-bundle.properties
... ... @@ -34,6 +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 tantando obter um objeto n\u00E3o reconhecido pelo CDI via Beans.getReference(...)
37 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 39 handling-exception=Tratando a exce\u00E7\u00E3o {0}
39 40 proxy-detected=Detectado o proxy {0} da classe {1}
... ...