[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