From 26aeb858c520ab44a3c018745414d5275148d18d Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Wed, 4 Jul 2012 08:51:19 -0300 Subject: [PATCH] Injeção de ResourceBundle utilizando o ClassLoader correto. Não é necessário fazer cache do ResourceBundle, pois a implementação padrão já se encarrega disto. --- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractBootstrap.java | 4 +++- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/processor/AbstractProcessor.java | 8 ++++++-- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ResourceBundleProducer.java | 64 +++++++++++++--------------------------------------------------- 3 files changed, 22 insertions(+), 54 deletions(-) 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 7d48a00..72ab777 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 @@ -36,6 +36,8 @@ */ package br.gov.frameworkdemoiselle.internal.bootstrap; +import java.util.Locale; + import javax.enterprise.inject.spi.AfterBeanDiscovery; import javax.enterprise.inject.spi.Extension; @@ -56,7 +58,7 @@ public class AbstractBootstrap implements Extension { } protected static ResourceBundle getBundle(String baseName) { - return bundleFactory.create(baseName); + return bundleFactory.create(baseName, Locale.getDefault()); } protected static Logger getLogger() { diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/processor/AbstractProcessor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/processor/AbstractProcessor.java index 62a73e8..8a45f26 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/processor/AbstractProcessor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/processor/AbstractProcessor.java @@ -36,6 +36,8 @@ */ package br.gov.frameworkdemoiselle.internal.processor; +import java.util.Locale; + import javax.enterprise.inject.spi.AnnotatedCallable; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; @@ -106,8 +108,10 @@ public abstract class AbstractProcessor implements Processor { } protected ResourceBundle getBundle(String baseName) { - if (bundle == null) - bundle = bundleFactory.create(baseName); + if (bundle == null) { + bundle = bundleFactory.create(baseName, Locale.getDefault()); + } + return bundle; } 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 c77bf7b..a2cba42 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 @@ -37,16 +37,12 @@ package br.gov.frameworkdemoiselle.internal.producer; import java.io.Serializable; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; import java.util.MissingResourceException; -import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.InjectionPoint; -import javax.inject.Inject; import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.annotation.Name; @@ -57,38 +53,28 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle; * * @author SERPRO */ -@ApplicationScoped public class ResourceBundleProducer implements Serializable { private static final long serialVersionUID = 1L; - @Inject - protected Locale locale; - - private final Map map = new HashMap(); - - public ResourceBundleProducer() { - this.locale = Locale.getDefault(); - } - - /** - * This constructor should be used by classes that can not inject ResourceBundle. - * - * @param Locale - * locale - */ - public ResourceBundleProducer(Locale locale) { - this.locale = locale; - } - /** * This method should be used by classes that can not inject ResourceBundle, to create the ResourceBundle. * * @param String * baseName */ - public ResourceBundle create(String baseName) { - return getResourceBundle(baseName); + public ResourceBundle create(String baseName, Locale locale) { + ResourceBundle bundle = null; + + try { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + bundle = new ResourceBundle(ResourceBundle.getBundle(baseName, locale, classLoader)); + + } catch (MissingResourceException e) { + throw new DemoiselleException("File " + baseName + " not found!"); + } + + return bundle; } /** @@ -98,7 +84,6 @@ public class ResourceBundleProducer implements Serializable { @Produces @Default public ResourceBundle create(InjectionPoint ip, Locale locale) { - this.locale = locale; String baseName; if (ip != null && ip.getAnnotated().isAnnotationPresent(Name.class)) { @@ -107,29 +92,6 @@ public class ResourceBundleProducer implements Serializable { baseName = "messages"; } - return create(baseName); + return create(baseName, locale); } - - /** - * This method checks if the bundle was created already. If the bundle has not been created, it creates and saves - * the bundle on a Map. - */ - private ResourceBundle getResourceBundle(String baseName) { - ResourceBundle bundle = null; - - if (map.containsKey(baseName + "-" + this.locale)) { - bundle = map.get(baseName + "-" + this.locale); - - } else { - try { - bundle = new ResourceBundle(ResourceBundle.getBundle(baseName, this.locale)); - } catch (MissingResourceException e) { - throw new DemoiselleException("File " + baseName + " not found!"); - } - map.put(baseName + "-" + this.locale, bundle); - } - - return bundle; - } - } -- libgit2 0.21.2