[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...

Gavin King gavin.king at jboss.com
Tue Jun 19 15:41:44 EDT 2007


  User: gavin   
  Date: 07/06/19 15:41:44

  Modified:    src/main/org/jboss/seam/core   Validators.java
  Added:       src/main/org/jboss/seam/core   ResourceBundle.java
  Log:
  split ResourceBundle
  
  Revision  Changes    Path
  1.9       +1 -4      jboss-seam/src/main/org/jboss/seam/core/Validators.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Validators.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Validators.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -b -r1.8 -r1.9
  --- Validators.java	19 Jun 2007 19:02:31 -0000	1.8
  +++ Validators.java	19 Jun 2007 19:41:44 -0000	1.9
  @@ -6,7 +6,6 @@
   import java.util.HashMap;
   import java.util.Map;
   
  -
   import org.hibernate.validator.ClassValidator;
   import org.hibernate.validator.InvalidValue;
   import org.jboss.seam.Component;
  @@ -17,8 +16,6 @@
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.contexts.Contexts;
  -import org.jboss.seam.international.Locale;
  -import org.jboss.seam.international.ResourceBundle;
   
   /**
    * Caches instances of Hibernate Validator ClassValidator
  @@ -67,7 +64,7 @@
       */
      public <T> ClassValidator<T> getValidator(Class<T> modelClass, String name)
      {
  -      Key key = new Key(modelClass, Locale.instance());
  +      Key key = new Key( modelClass, ResourceBundle.instance().getLocale() );
         ClassValidator result = classValidators.get(key);
         if (result==null)
         {
  
  
  
  1.31      +85 -69    jboss-seam/src/main/org/jboss/seam/core/ResourceBundle.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ResourceBundle.java
  ===================================================================
  RCS file: ResourceBundle.java
  diff -N ResourceBundle.java
  --- /dev/null	1 Jan 1970 00:00:00 -0000
  +++ ResourceBundle.java	19 Jun 2007 19:41:44 -0000	1.31
  @@ -0,0 +1,212 @@
  +package org.jboss.seam.core;
  +
  +import static org.jboss.seam.InterceptionType.NEVER;
  +import static org.jboss.seam.annotations.Install.BUILT_IN;
  +
  +import java.io.Serializable;
  +import java.util.ArrayList;
  +import java.util.Collections;
  +import java.util.Enumeration;
  +import java.util.List;
  +import java.util.Locale;
  +import java.util.MissingResourceException;
  +
  +import org.jboss.seam.Component;
  +import org.jboss.seam.ScopeType;
  +import org.jboss.seam.annotations.Install;
  +import org.jboss.seam.annotations.Intercept;
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.annotations.Scope;
  +import org.jboss.seam.annotations.Unwrap;
  +import org.jboss.seam.log.LogProvider;
  +import org.jboss.seam.log.Logging;
  +import org.jboss.seam.navigation.Pages;
  +import org.jboss.seam.util.EnumerationEnumeration;
  +import org.jboss.seam.util.Strings;
  +
  +/**
  + * Support for an application-global resource bundle
  + * 
  + * @author Gavin King
  + */
  + at Scope(ScopeType.SESSION)
  + at Intercept(NEVER)
  + at Name("org.jboss.seam.core.resourceBundle")
  + at Install(precedence=BUILT_IN)
  +public class ResourceBundle implements Serializable 
  +{
  +   
  +   protected java.util.Locale getCurrentLocale()
  +   {
  +      //TODO:
  +      return Locale.getDefault();
  +   }
  +   
  +   public class UberResourceBundle extends java.util.ResourceBundle
  +   {
  +      private final List<java.util.ResourceBundle> bundles;
  +
  +      public UberResourceBundle(List<java.util.ResourceBundle> bundles)
  +      {
  +         this.bundles = bundles;
  +      }
  +
  +      @Override
  +      public java.util.Locale getLocale()
  +      {
  +         return getCurrentLocale();
  +      }
  +
  +      @Override
  +      public Enumeration<String> getKeys()
  +      {
  +         List<java.util.ResourceBundle> pageBundles = getPageResourceBundles();
  +         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++)
  +         {
  +            enumerations[i] = bundles.get(i).getKeys();
  +         }
  +         return new EnumerationEnumeration<String>(enumerations);
  +      }
  +
  +      @Override
  +      protected Object handleGetObject(String key)
  +      {
  +         List<java.util.ResourceBundle> pageBundles = getPageResourceBundles();
  +         for (java.util.ResourceBundle pageBundle: pageBundles)
  +         {
  +            try
  +            {
  +               return pageBundle.getObject(key);
  +            }
  +            catch (MissingResourceException mre) {}
  +         }
  +         
  +         for (java.util.ResourceBundle littleBundle: bundles)
  +         {
  +            if (littleBundle!=null)
  +            {
  +               try
  +               {
  +                  return littleBundle.getObject(key);
  +               }
  +               catch (MissingResourceException mre) {}
  +            }
  +         }
  +         
  +         return null; //superclass is responsible for throwing MRE
  +      }
  +
  +      private List<java.util.ResourceBundle> getPageResourceBundles()
  +      {
  +         String viewId = Pages.getCurrentViewId();
  +         if (viewId!=null)
  +         {
  +            return Pages.instance().getResourceBundles(viewId);
  +         }
  +         else
  +         {
  +            return Collections.EMPTY_LIST;
  +         }
  +      }
  +   }
  +
  +   private static final long serialVersionUID = -3236251335438092538L;
  +   private static final LogProvider log = Logging.getLogProvider(ResourceBundle.class);
  +
  +   private String[] bundleNames = {"messages"};
  +   private transient java.util.ResourceBundle bundle;
  +
  +   public String[] getBundleNames() 
  +   {
  +      return bundleNames;
  +   }
  +   
  +   public void setBundleNames(String[] bundleNames) 
  +   {
  +      this.bundleNames = bundleNames;
  +   }
  +   
  +   @Deprecated
  +   public void setBundleName(String bundleName)
  +   {
  +      bundleNames = bundleName==null ? null : new String[] { bundleName };
  +   }
  +   
  +   @Deprecated
  +   public String getBundleName()
  +   {
  +      return bundleNames==null || bundleNames.length==0 ? null : bundleNames[0];
  +   }
  +   
  +   /**
  +    * Load a resource bundle by name (may be overridden by subclasses
  +    * who want to use non-standard resource bundle types).
  +    * 
  +    * @param bundleName the name of the resource bundle
  +    * @return an instance of java.util.ResourceBundle
  +    */
  +   protected java.util.ResourceBundle loadBundle(String bundleName) 
  +   {
  +      try
  +      {
  +         java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle( 
  +               bundleName, 
  +               getCurrentLocale(), 
  +               Thread.currentThread().getContextClassLoader() 
  +            );
  +         log.debug("loaded resource bundle: " + bundleName);
  +         return bundle;
  +      }
  +      catch (MissingResourceException mre)
  +      {
  +         log.debug("resource bundle missing: " + bundleName);
  +         return null;
  +      }
  +   }
  +   
  +   private void createUberBundle()
  +   {
  +      final List<java.util.ResourceBundle> littleBundles = new ArrayList<java.util.ResourceBundle>();
  +      if (bundleNames!=null)
  +      {  
  +         for (String bundleName: bundleNames)
  +         {
  +            java.util.ResourceBundle littleBundle = loadBundle(bundleName);
  +            if (littleBundle!=null) littleBundles.add(littleBundle);
  +         }
  +      }
  +      
  +      java.util.ResourceBundle validatorBundle = loadBundle("ValidatorMessages");
  +      if (validatorBundle!=null) littleBundles.add(validatorBundle);
  +      java.util.ResourceBundle validatorDefaultBundle = loadBundle("org/hibernate/validator/resources/DefaultValidatorMessages");
  +      if (validatorDefaultBundle!=null) littleBundles.add(validatorDefaultBundle);
  +         
  +      bundle = new UberResourceBundle(littleBundles);
  +  
  +   }
  +
  +   @Unwrap
  +   public java.util.ResourceBundle getBundle()
  +   {
  +      if (bundle==null) createUberBundle();
  +      return bundle;
  +   }
  +   
  +   @Override
  +   public String toString()
  +   {
  +      String concat = bundleNames==null ? "" : Strings.toString( ", ", (Object[]) bundleNames );
  +      return "ResourceBundle(" + concat + ")";
  +   }
  +
  +   public static java.util.ResourceBundle instance()
  +   {
  +      return (java.util.ResourceBundle) Component.getInstance(ResourceBundle.class, true);
  +   }
  +}
  
  
  



More information about the jboss-cvs-commits mailing list