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,14 +51,12 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle;
51 51
52 public abstract class AbstractBootstrap implements Extension { 52 public abstract class AbstractBootstrap implements Extension {
53 53
54 - private static ResourceBundleProducer bundleFactory = new ResourceBundleProducer();  
55 -  
56 protected static ResourceBundle getBundle() { 54 protected static ResourceBundle getBundle() {
57 return getBundle("demoiselle-core-bundle"); 55 return getBundle("demoiselle-core-bundle");
58 } 56 }
59 57
60 protected static ResourceBundle getBundle(String baseName) { 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 protected static Logger getLogger() { 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,7 +63,7 @@ public class ResourceBundleProducer implements Serializable {
63 * @param String 63 * @param String
64 * baseName 64 * baseName
65 */ 65 */
66 - public ResourceBundle create(String baseName, Locale locale) { 66 + public static ResourceBundle create(String baseName, Locale locale) {
67 ResourceBundle bundle = null; 67 ResourceBundle bundle = null;
68 68
69 try { 69 try {
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java
@@ -49,10 +49,16 @@ @@ -49,10 +49,16 @@
49 package br.gov.frameworkdemoiselle.util; 49 package br.gov.frameworkdemoiselle.util;
50 50
51 import java.lang.annotation.Annotation; 51 import java.lang.annotation.Annotation;
  52 +import java.util.Locale;
  53 +import java.util.NoSuchElementException;
  54 +import java.util.Set;
52 55
53 import javax.enterprise.inject.spi.Bean; 56 import javax.enterprise.inject.spi.Bean;
54 import javax.enterprise.inject.spi.BeanManager; 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 public class Beans { 62 public class Beans {
57 63
58 private static BeanManager manager; 64 private static BeanManager manager;
@@ -65,24 +71,38 @@ public class Beans { @@ -65,24 +71,38 @@ public class Beans {
65 return manager; 71 return manager;
66 } 72 }
67 73
  74 + @SuppressWarnings("unchecked")
68 public static <T> T getReference(final Class<T> beanClass, Annotation... qualifiers) { 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 public static <T> T getReference(final Class<T> beanClass) { 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 @SuppressWarnings("unchecked") 84 @SuppressWarnings("unchecked")
79 public static <T> T getReference(String beanName) { 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 @SuppressWarnings("unchecked") 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,6 +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 tantando obter um objeto n\u00E3o reconhecido pelo CDI via Beans.getReference(...)
37 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}
38 handling-exception=Tratando a exce\u00E7\u00E3o {0} 39 handling-exception=Tratando a exce\u00E7\u00E3o {0}
39 proxy-detected=Detectado o proxy {0} da classe {1} 40 proxy-detected=Detectado o proxy {0} da classe {1}