[jboss-cvs] jboss-seam/src/main/org/jboss/seam/international ...
Gavin King
gavin.king at jboss.com
Sun Jul 8 17:13:37 EDT 2007
User: gavin
Date: 07/07/08 17:13:37
Modified: src/main/org/jboss/seam/international LocaleSelector.java
Messages.java ResourceBundle.java
Log:
use @Factory instead of @Unwrap where that makes more sense
Revision Changes Path
1.4 +2 -2 jboss-seam/src/main/org/jboss/seam/international/LocaleSelector.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: LocaleSelector.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/international/LocaleSelector.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- LocaleSelector.java 20 Jun 2007 17:45:56 -0000 1.3
+++ LocaleSelector.java 8 Jul 2007 21:13:37 -0000 1.4
@@ -65,8 +65,8 @@
public void select()
{
FacesContext.getCurrentInstance().getViewRoot().setLocale( getLocale() );
- Contexts.removeFromAllContexts( Seam.getComponentName(ResourceBundle.class) );
- Contexts.removeFromAllContexts( Seam.getComponentName(Messages.class) );
+ Contexts.removeFromAllContexts("org.jboss.seam.core.resourcebundle");
+ Contexts.removeFromAllContexts("org.jboss.seam.international.messages");
setCookieValueIfEnabled( getLocaleString() );
1.6 +29 -17 jboss-seam/src/main/org/jboss/seam/international/Messages.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Messages.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/international/Messages.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- Messages.java 8 Jul 2007 11:23:08 -0000 1.5
+++ Messages.java 8 Jul 2007 21:13:37 -0000 1.6
@@ -1,8 +1,8 @@
package org.jboss.seam.international;
+import static org.jboss.seam.ScopeType.EVENT;
import static org.jboss.seam.annotations.Install.BUILT_IN;
-import java.io.Serializable;
import java.util.AbstractMap;
import java.util.Enumeration;
import java.util.HashMap;
@@ -12,33 +12,33 @@
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
-import org.jboss.seam.annotations.Unwrap;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
+import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.Interpolator;
/**
- * Access to interpolated messages via a Map
+ * Factory for a Map that interpolates messages defined in the
+ * Seam ResourceBundle.
+ *
+ * @see org.jboss.seam.core.ResourceBundle
*
* @author Gavin King
*/
- at Scope(ScopeType.EVENT)
+ at Scope(ScopeType.STATELESS)
@BypassInterceptors
- at Name("org.jboss.seam.international.messages")
+ at Name("org.jboss.seam.international.messagesFactory")
@Install(precedence=BUILT_IN)
-public class Messages implements Serializable
+public class Messages
{
//TODO: now we have ELResolver, it doesn't *have* to be a Map...
- private static final long serialVersionUID = 1292464253307553295L;
-
- private transient Map<String, String> messages;
-
- private void init()
+ protected Map createMap()
{
- messages = new AbstractMap<String, String>()
+ return new AbstractMap<String, String>()
{
private java.util.ResourceBundle bundle = ResourceBundle.instance();
@@ -86,15 +86,27 @@
};
}
- @Unwrap
+ /**
+ * Create the Map and cache it in the EVENT scope. No need to cache
+ * it in the SESSION scope, since it is inexpensive to create.
+ *
+ * @return a Map that interpolates messages in the Seam ResourceBundle
+ */
+ @Factory(value="org.jboss.seam.international.messages", autoCreate=true, scope=EVENT)
public Map<String, String> getMessages()
{
- if (messages==null) init();
- return messages;
+ return createMap();
}
+ /**
+ * @return the message Map instance
+ */
public static Map<String, String> instance()
{
- return (Map<String, String>) Component.getInstance(Messages.class, true );
+ if ( !Contexts.isSessionContextActive() )
+ {
+ throw new IllegalStateException("no event context active");
+ }
+ return (Map<String, String>) Component.getInstance("org.jboss.seam.international.messages", true);
}
}
1.5 +1 -1 jboss-seam/src/main/org/jboss/seam/international/ResourceBundle.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ResourceBundle.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/international/ResourceBundle.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- ResourceBundle.java 8 Jul 2007 11:23:08 -0000 1.4
+++ ResourceBundle.java 8 Jul 2007 21:13:37 -0000 1.5
@@ -15,7 +15,7 @@
*/
@Scope(ScopeType.SESSION)
@BypassInterceptors
- at Name("org.jboss.seam.core.resourceBundle")
+ at Name("org.jboss.seam.core.resourceBundleFactory")
@Install(precedence=FRAMEWORK, dependencies="org.jboss.seam.international.locale")
public class ResourceBundle extends org.jboss.seam.core.ResourceBundle
{
More information about the jboss-cvs-commits
mailing list