[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Michael Youngstrom
youngm at gmail.com
Fri Jul 13 12:17:16 EDT 2007
User: myoungstrom
Date: 07/07/13 12:17:16
Modified: src/main/org/jboss/seam/core SeamResourceBundle.java
Log:
JBSEAM-1658
Revision Changes Path
1.2 +60 -54 jboss-seam/src/main/org/jboss/seam/core/SeamResourceBundle.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamResourceBundle.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/SeamResourceBundle.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- SeamResourceBundle.java 10 Jul 2007 16:46:57 -0000 1.1
+++ SeamResourceBundle.java 13 Jul 2007 16:17:16 -0000 1.2
@@ -4,16 +4,19 @@
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
+import java.util.Locale;
+import java.util.Map;
import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.concurrent.ConcurrentHashMap;
-import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.navigation.Pages;
import org.jboss.seam.util.EnumerationEnumeration;
/**
- * The Seam resource bundle which searches for resources in delegate
- * resource bundles specified in pages.xml, and a configurable list of
- * delegate resource bundles specified in components.xml.
+ * The Seam resource bundle which searches for resources in delegate resource
+ * bundles specified in pages.xml, and a configurable list of delegate resource
+ * bundles specified in components.xml.
*
* @see ResourceLoader
* @author Gavin King
@@ -21,8 +24,7 @@
*/
public class SeamResourceBundle extends java.util.ResourceBundle
{
- private final List<java.util.ResourceBundle> bundles = new ArrayList<java.util.ResourceBundle>();
- private boolean initialized;
+ private Map<Locale, List<ResourceBundle>> bundleCache = new ConcurrentHashMap<Locale, List<ResourceBundle>>();
/**
* Get an instance for the current Seam Locale
@@ -33,46 +35,55 @@
*/
public static java.util.ResourceBundle getBundle()
{
- return java.util.ResourceBundle.getBundle( SeamResourceBundle.class.getName(), Locale.instance() );
+ return java.util.ResourceBundle.getBundle(SeamResourceBundle.class.getName(),
+ org.jboss.seam.core.Locale.instance());
}
- private void init()
+ private List<java.util.ResourceBundle> getBundlesForCurrentLocale()
{
- if ( !initialized && Contexts.isApplicationContextActive() )
+ Locale instance = org.jboss.seam.core.Locale.instance();
+ if (bundleCache.get(instance) == null)
{
- ResourceLoader instance = ResourceLoader.instance();
- if (instance.getBundleNames()!=null)
- {
- for ( String bundleName: instance.getBundleNames() )
- {
- java.util.ResourceBundle littleBundle = instance.loadBundle(bundleName);
- if (littleBundle!=null) bundles.add(littleBundle);
- }
+ bundleCache.put(instance, loadBundlesForCurrentLocale());
}
+ return bundleCache.get(instance);
- java.util.ResourceBundle validatorBundle = instance.loadBundle("ValidatorMessages");
- if (validatorBundle!=null) bundles.add(validatorBundle);
- java.util.ResourceBundle validatorDefaultBundle = instance.loadBundle("org/hibernate/validator/resources/DefaultValidatorMessages");
- if (validatorDefaultBundle!=null) bundles.add(validatorDefaultBundle);
- java.util.ResourceBundle facesBundle = instance.loadBundle("javax.faces.Messages"); //ie. FacesMessage.FACES_MESSAGES;
- if (facesBundle!=null) bundles.add(facesBundle);
+ }
- initialized = true;
+ private List<ResourceBundle> loadBundlesForCurrentLocale()
+ {
+ List<ResourceBundle> bundles = new ArrayList<ResourceBundle>();
+ ResourceLoader resourceLoader = ResourceLoader.instance();
+ for (String bundleName : resourceLoader.getBundleNames())
+ {
+ ResourceBundle bundle = resourceLoader.loadBundle(bundleName);
+ if (bundle != null) bundles.add(bundle);
}
+ ResourceBundle bundle = resourceLoader.loadBundle("ValidatorMessages");
+ if (bundle != null)
+ {
+ bundles.add(bundle);
+ }
+ bundle = resourceLoader
+ .loadBundle("org/hibernate/validator/resources/DefaultValidatorMessages");
+ if (bundle != null) bundles.add(bundle);
+ bundle = resourceLoader.loadBundle("javax.faces.Messages");
+ if (bundle != null) bundles.add(bundle);
+ return Collections.unmodifiableList(bundles);
}
@Override
public Enumeration<String> getKeys()
{
- init();
List<java.util.ResourceBundle> pageBundles = getPageResourceBundles();
- Enumeration<String>[] enumerations = new Enumeration[ bundles.size() + pageBundles.size() ];
- int i=0;
- for (; i<pageBundles.size(); i++)
+ List<ResourceBundle> bundles = getBundlesForCurrentLocale();
+ Enumeration<String>[] enumerations = new Enumeration[bundles.size() + pageBundles.size()];
+ int i = 0;
+ for (; i < pageBundles.size(); i++)
{
enumerations[i++] = pageBundles.get(i).getKeys();
}
- for (; i<bundles.size(); i++)
+ for (; i < bundles.size(); i++)
{
enumerations[i] = bundles.get(i).getKeys();
}
@@ -82,20 +93,17 @@
@Override
protected Object handleGetObject(String key)
{
- init();
List<java.util.ResourceBundle> pageBundles = getPageResourceBundles();
- for (java.util.ResourceBundle pageBundle: pageBundles)
+ for (java.util.ResourceBundle pageBundle : pageBundles)
{
try
{
- return interpolate( pageBundle.getObject(key) );
+ return interpolate(pageBundle.getObject(key));
}
catch (MissingResourceException mre) {}
}
- for (java.util.ResourceBundle littleBundle: bundles)
- {
- if (littleBundle!=null)
+ for (java.util.ResourceBundle littleBundle : getBundlesForCurrentLocale())
{
try
{
@@ -103,9 +111,8 @@
}
catch (MissingResourceException mre) {}
}
- }
- return null; //superclass is responsible for throwing MRE
+ return null; // superclass is responsible for throwing MRE
}
private Object interpolate(Object message)
@@ -117,12 +124,12 @@
private List<java.util.ResourceBundle> getPageResourceBundles()
{
- //TODO: oops! A hard dependency to JSF!
+ // TODO: oops! A hard dependency to JSF!
String viewId = Pages.getCurrentViewId();
- if (viewId!=null)
+ if (viewId != null)
{
- //we can't cache these bundles, since the viewId
- //may change in the middle of a request
+ // we can't cache these bundles, since the viewId
+ // may change in the middle of a request
return Pages.instance().getResourceBundles(viewId);
}
else
@@ -130,5 +137,4 @@
return Collections.EMPTY_LIST;
}
}
-
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list