diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractBootstrap.java index 8dab1c1..ef4c160 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractBootstrap.java @@ -51,14 +51,12 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle; public abstract class AbstractBootstrap implements Extension { - private static ResourceBundleProducer bundleFactory = new ResourceBundleProducer(); - protected static ResourceBundle getBundle() { return getBundle("demoiselle-core-bundle"); } protected static ResourceBundle getBundle(String baseName) { - return bundleFactory.create(baseName, Locale.getDefault()); + return ResourceBundleProducer.create(baseName, Locale.getDefault()); } protected static Logger getLogger() { diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java index a2cba42..5ac3c90 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java @@ -63,7 +63,7 @@ public class ResourceBundleProducer implements Serializable { * @param String * baseName */ - public ResourceBundle create(String baseName, Locale locale) { + public static ResourceBundle create(String baseName, Locale locale) { ResourceBundle bundle = null; try { diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java index 960c6c4..2c1aecb 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java @@ -49,10 +49,16 @@ package br.gov.frameworkdemoiselle.util; import java.lang.annotation.Annotation; +import java.util.Locale; +import java.util.NoSuchElementException; +import java.util.Set; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; +import br.gov.frameworkdemoiselle.DemoiselleException; +import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer; + public class Beans { private static BeanManager manager; @@ -65,24 +71,38 @@ public class Beans { return manager; } + @SuppressWarnings("unchecked") public static T getReference(final Class beanClass, Annotation... qualifiers) { - Bean bean = manager.getBeans(beanClass, qualifiers).iterator().next(); - return (T) getReference(bean, beanClass); + return (T) getReference(manager.getBeans(beanClass, qualifiers)); } + @SuppressWarnings("unchecked") public static T getReference(final Class beanClass) { - Bean bean = manager.getBeans(beanClass).iterator().next(); - return (T) getReference(bean, beanClass); + return (T) getReference(manager.getBeans(beanClass)); } @SuppressWarnings("unchecked") public static T getReference(String beanName) { - Bean bean = manager.getBeans(beanName).iterator().next(); - return (T) getReference(bean, bean.getBeanClass()); + return (T) getReference(manager.getBeans(beanName)); } @SuppressWarnings("unchecked") - private static T getReference(Bean bean, final Class beanClass) { - return (T) manager.getReference(bean, beanClass, manager.createCreationalContext(bean)); + private static T getReference(Set> beans) { + T result = null; + + try { + Bean bean = beans.iterator().next(); + result = (T) manager.getReference(bean, bean.getBeanClass(), manager.createCreationalContext(bean)); + + } catch (NoSuchElementException cause) { + String message = getBundle().getString("bean-not-found"); + throw new DemoiselleException(message, cause); + } + + return result; + } + + private static ResourceBundle getBundle() { + return ResourceBundleProducer.create("demoiselle-core-bundle", Locale.getDefault()); } } diff --git a/impl/core/src/main/resources/demoiselle-core-bundle.properties b/impl/core/src/main/resources/demoiselle-core-bundle.properties index c09df58..fc122e5 100644 --- a/impl/core/src/main/resources/demoiselle-core-bundle.properties +++ b/impl/core/src/main/resources/demoiselle-core-bundle.properties @@ -34,6 +34,7 @@ # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. engine-on=Ligando os motores do Demoiselle ${project.version} +bean-not-found=Voc\u00EA est\u00E1 tantando obter um objeto n\u00E3o reconhecido pelo CDI via Beans.getReference(...) 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} handling-exception=Tratando a exce\u00E7\u00E3o {0} proxy-detected=Detectado o proxy {0} da classe {1} -- libgit2 0.21.2