[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