Author: ekoneil
Date: Tue Apr 19 13:08:31 2005
New Revision: 161960

URL: http://svn.apache.org/viewcvs?view=rev&rev=161960
Log:
Consolidate the code used to lookup the Locale for a request.

The Abstract(Simple|Classic)Tag, BundleMap, and data grid classes all had their 
own copies of this.

It's all located in a ServletUtils.lookupCache(...) method now which can take a 
JspContext or a ServletRequest.

BB: self
BVT: NetUI pass 


Modified:
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/BundleNode.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/ResourceBundleNode.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/bundle/DeclareBundle.java
    
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
    
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractSimpleTag.java
    
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/internal/ServletUtils.java
    
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/type/TypeUtils.java

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
 Tue Apr 19 13:08:31 2005
@@ -18,6 +18,7 @@
 package org.apache.beehive.netui.script.common;
 
 import org.apache.beehive.netui.util.internal.InternalStringBuilder;
+import org.apache.beehive.netui.util.internal.ServletUtils;
 
 import java.util.ArrayList;
 import java.util.Set;
@@ -84,10 +85,10 @@
         if(_registeredBundles == null)
             _registeredBundles = new HashMap();
 
-        if(_registeredBundles.containsKey(name))
+        if(LOGGER.isInfoEnabled() && _registeredBundles.containsKey(name))
             LOGGER.info("The bundle map already contains a key \"" + name + 
"\" overwriting the previous value.");
 
-        Locale locale = (forcedLocale != null ? forcedLocale : 
Locale.getDefault());
+        Locale locale = forcedLocale != null ? forcedLocale : 
ServletUtils.lookupLocale(_servletRequest);
         ResourceBundle resourceBundle = ResourceBundle.getBundle(resourcePath, 
locale);
         BundleNode bundle = 
BundleNodeFactory.getInstance().getResourceBundleNode(name, resourceBundle, 
locale);
         _registeredBundles.put(name, bundle);
@@ -306,29 +307,12 @@
 
     /**
      * Utility method that discovers the [EMAIL PROTECTED] java.util.Locale} 
for the
-     * current request. <p/>
+     * current request.
      *
-     * @return the [EMAIL PROTECTED] java.util.Locale} to use when doing 
bundle data
-     *         binding
+     * @return the [EMAIL PROTECTED] java.util.Locale} to use when looking-up 
strings while data binding to resource bundles
      */
     private final Locale retrieveUserLocale() {
-        /* todo: centralize the user locale lookup code */
-        String locale = null;
-        Locale userLocale = null;
-
-        if(locale == null)
-            locale = Globals.LOCALE_KEY;
-
-        // Only check session if sessions are enabled
-        if(_httpSession != null)
-            userLocale =(Locale) _httpSession.getAttribute(locale);
-
-        if(userLocale == null)
-            // Returns Locale based on Accept-Language header or the server
-            // default
-            userLocale = _servletRequest.getLocale();
-
-        return userLocale;
+        return ServletUtils.lookupLocale(_servletRequest);
     }
 
     final class BundleNodeEntry

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/BundleNode.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/BundleNode.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/BundleNode.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/BundleNode.java
 Tue Apr 19 13:08:31 2005
@@ -17,7 +17,6 @@
  */
 package org.apache.beehive.netui.script.common.bundle;
 
-import java.util.Locale;
 import java.util.Enumeration;
 
 /**

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/ResourceBundleNode.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/ResourceBundleNode.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/ResourceBundleNode.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/bundle/ResourceBundleNode.java
 Tue Apr 19 13:08:31 2005
@@ -18,11 +18,8 @@
 package org.apache.beehive.netui.script.common.bundle;
 
 import java.util.ResourceBundle;
-import java.util.Locale;
 import java.util.Enumeration;
 
-import org.apache.beehive.netui.script.common.bundle.BundleNode;
-
 /**
  */
 class ResourceBundleNode
@@ -35,20 +32,14 @@
     }
 
     public boolean containsKey(String key) {
-        if(_bundle == null)
-            return false;
-        else return _bundle.getString(key) != null;
+        return _bundle != null && _bundle.getString(key) != null;
     }
 
     public String getString(String key) {
-        if(_bundle == null)
-            return null;
-        else return _bundle.getString(key);
+        return _bundle != null ? _bundle.getString(key) : null;
     }
 
     public Enumeration getKeys() {
-        if(_bundle == null)
-            return null;
-        else return _bundle.getKeys();
+        return _bundle != null ? _bundle.getKeys() : null;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java
 Tue Apr 19 13:08:31 2005
@@ -31,6 +31,7 @@
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
 import org.apache.beehive.netui.tags.internal.PageFlowTagUtils;
 import org.apache.beehive.netui.util.Bundle;
+import org.apache.beehive.netui.util.internal.ServletUtils;
 
 public final class JspUtil {
 
@@ -76,13 +77,7 @@
         return response.encodeURL(uri);
     }
 
-    /* todo: need to combine this with the getLocale(...) call in 
AbstractClassicTag */
     public static final Locale getLocale(JspContext jspContext) {
-        PageContext pageContext = getPageContext(jspContext);
-        Locale userLocale = 
(Locale)pageContext.getAttribute(Globals.LOCALE_KEY, PageContext.SESSION_SCOPE);
-        if(userLocale == null)
-            return pageContext.getRequest().getLocale();
-        else
-            return userLocale;
+        return ServletUtils.lookupLocale(jspContext);
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/bundle/DeclareBundle.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/bundle/DeclareBundle.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/bundle/DeclareBundle.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/bundle/DeclareBundle.java
 Tue Apr 19 13:08:31 2005
@@ -360,7 +360,8 @@
         if(_language == null && _country == null && _variant == null)
             return getUserLocale();
 
-        if(hasErrors()) return null;
+        if(hasErrors())
+            return null;
 
         if(_language != null && _country != null && _variant != null)
             return new Locale(_language, _country, _variant);

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
 Tue Apr 19 13:08:31 2005
@@ -18,6 +18,7 @@
 package org.apache.beehive.netui.tags;
 
 import org.apache.beehive.netui.util.internal.InternalStringBuilder;
+import org.apache.beehive.netui.util.internal.ServletUtils;
 
 import org.apache.beehive.netui.core.urls.URLRewriterService;
 import org.apache.beehive.netui.script.ExpressionEvaluationException;
@@ -124,13 +125,9 @@
      * This method will return the user local of the request.
      * @return the Locale object to use when rendering this tag
      */
-    protected Locale getUserLocale()
+    protected Locale getUserLocale() 
     {
-        Locale userLocale = (Locale) 
pageContext.getAttribute(Globals.LOCALE_KEY, PageContext.SESSION_SCOPE);
-        if (userLocale == null)
-            return pageContext.getRequest().getLocale();
-        else
-            return userLocale;
+        return ServletUtils.lookupLocale(pageContext.getRequest());
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractSimpleTag.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractSimpleTag.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractSimpleTag.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractSimpleTag.java
 Tue Apr 19 13:08:31 2005
@@ -1,6 +1,7 @@
 package org.apache.beehive.netui.tags;
 
 import org.apache.beehive.netui.util.internal.InternalStringBuilder;
+import org.apache.beehive.netui.util.internal.ServletUtils;
 
 //import org.apache.beehive.netui.pageflow.util.URLRewriterService;
 import org.apache.beehive.netui.tags.html.Html;
@@ -98,14 +99,8 @@
      * This method will return the user local of the request.
      * @return the Locale object to use when rendering this tag
      */
-    protected Locale getUserLocale()
-    {
-        PageContext pageContext = getPageContext();
-        Locale userLocale = (Locale) 
pageContext.getAttribute(Globals.LOCALE_KEY, PageContext.SESSION_SCOPE);
-        if (userLocale == null)
-            return pageContext.getRequest().getLocale();
-        else
-            return userLocale;
+    protected Locale getUserLocale() {
+        return ServletUtils.lookupLocale(getJspContext());
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/internal/ServletUtils.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/internal/ServletUtils.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/internal/ServletUtils.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/internal/ServletUtils.java
 Tue Apr 19 13:08:31 2005
@@ -23,8 +23,13 @@
 import javax.servlet.ServletContext;
 import javax.servlet.ServletResponse;
 import javax.servlet.ServletRequest;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.JspContext;
 import java.io.PrintStream;
 import java.util.Enumeration;
+import java.util.Locale;
+
+import org.apache.struts.Globals;
 
 public class ServletUtils
 {
@@ -144,5 +149,25 @@
         assert uri.length() > 1 : uri;
         assert lastSlash < uri.length() - 1 : "URI must not end with a slash: 
" + uri;
         return uri.substring( 0, lastSlash );
+    }
+
+    public static Locale lookupLocale(JspContext jspContext) {
+        assert jspContext instanceof PageContext : "Found JspContext of type 
\"" + (jspContext != null ? jspContext.getClass().getName() : "null") + "\"";
+        return lookupLocale(((PageContext)jspContext).getRequest());
+    }
+
+    public static Locale lookupLocale(ServletRequest request) {
+        assert request instanceof HttpServletRequest : "Found servlet request 
of type \"" + (request != null ? request.getClass().getName() : "null") + "\"";
+
+        Locale locale = null;
+        HttpServletRequest httpServletRequest = (HttpServletRequest)request;
+        HttpSession session = httpServletRequest.getSession(false);
+        if(session != null)
+            locale = (Locale)session.getAttribute(Globals.LOCALE_KEY);
+
+        if(locale == null)
+            locale = request.getLocale();
+
+        return locale;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/type/TypeUtils.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/type/TypeUtils.java?view=diff&r1=161959&r2=161960
==============================================================================
--- 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/type/TypeUtils.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/type/TypeUtils.java
 Tue Apr 19 13:08:31 2005
@@ -183,8 +183,7 @@
             else
                 msg = Bundle.getErrorString("TypeUtils_noConverterForType", 
new Object[]{type.getName()});
             tcn.setLocalizedMessage(msg);
-            if(LOGGER.isErrorEnabled())
-                LOGGER.error(msg);
+            LOGGER.error(msg);
 
             throw tcn;
         }
@@ -221,8 +220,7 @@
         try {
             is = 
(TypeUtils.class).getClassLoader().getResourceAsStream(TYPE_CONVERTER_PROPERTIES);
 
-            if(LOGGER.isDebugEnabled())
-                LOGGER.debug("found type converter InputStream at " + 
TYPE_CONVERTER_PROPERTIES + " " + (is != null ? "true" : "false"));
+            LOGGER.debug("found type converter InputStream at " + 
TYPE_CONVERTER_PROPERTIES + " " + (is != null ? "true" : "false"));
 
             if(is == null)
                 return null;
@@ -230,8 +228,7 @@
             props = new Properties();
             props.load(is);
         } catch(Exception e) {
-            if(LOGGER.isWarnEnabled())
-                LOGGER.warn("Error occurred reading type converter properties 
file", e);
+            LOGGER.warn("Error occurred reading type converter properties 
file", e);
         } finally {
             try {
                 if(is != null) is.close();
@@ -279,10 +276,7 @@
             String className = (String) map.get(key);
 
             if((key == null || key.equals(EMPTY_STRING)) || (className == null 
|| className.equals(EMPTY_STRING))) {
-                String msg = "Could not create a TypeConverter for type \"" + 
key + "\" and TypeConverter \"" + className + "\"";
-                if(LOGGER.isWarnEnabled())
-                    LOGGER.warn(msg);
-
+                LOGGER.warn("Could not create a TypeConverter for type \"" + 
key + "\" and TypeConverter \"" + className + "\"");
                 continue;
             }
 
@@ -292,10 +286,7 @@
             try {
                 targetClazz = Class.forName(key);
             } catch(ClassNotFoundException cnf) {
-                String msg = "Could not create a TypeConverter for type \"" + 
key + "\" because the \"convert-to\" type could not be found.";
-                if(LOGGER.isWarnEnabled())
-                    LOGGER.warn(msg);
-
+                LOGGER.warn("Could not create a TypeConverter for type \"" + 
key + "\" because the \"convert-to\" type could not be found.");
                 continue;
             }
 
@@ -315,9 +306,8 @@
                     tc = (BaseTypeConverter)obj;
                 else throw new IllegalStateException("Attempt to load illegal 
type converter type: " + tcClazz);
             } catch(ClassNotFoundException cnf) {
-                if(LOGGER.isWarnEnabled())
-                    LOGGER.warn("Could not create a TypeConverter for type \"" 
+ key + "\" because the TypeConverter implementation class \"" +
-                        (tcClazz != null ? tcClazz.getName() : null) + "\" 
could not be found.");
+                LOGGER.warn("Could not create a TypeConverter for type \"" + 
key + "\" because the TypeConverter implementation class \"" +
+                            (tcClazz != null ? tcClazz.getName() : null) + "\" 
could not be found.");
 
                 continue;
             } catch(Exception e) {
@@ -551,8 +541,7 @@
                     return df.parse(value);
                 } catch(java.text.ParseException pe) {
                     String msg = "Caugnt an error converting a String to a 
DateFormat.SHORT formatted Date";
-                    if(LOGGER.isWarnEnabled())
-                        LOGGER.warn(msg, pe);
+                    LOGGER.warn(msg, pe);
 
                     TypeConversionException tce = new 
TypeConversionException(msg, pe);
                     
tce.setLocalizedMessage(Bundle.getString("TypeUtils_javaUtilDateConvertError", 
new Object[]{pe.getMessage()}));
@@ -570,8 +559,7 @@
                     return java.sql.Date.valueOf(value);
                 } catch(Exception e) {
                     String msg = "Caught an error converting a String to a 
java.sql.Date";
-                    if(LOGGER.isErrorEnabled())
-                        LOGGER.error(msg, e);
+                    LOGGER.error(msg, e);
 
                     TypeConversionException tce = new 
TypeConversionException(msg, e);
                     
tce.setLocalizedMessage(Bundle.getString("TypeUtils_javaSqlDateConvertError", 
new Object[]{e.getMessage()}));
@@ -590,8 +578,7 @@
                     return java.sql.Timestamp.valueOf(value);
                 } catch(Exception e) {
                     String msg = "Caught an error converting a String to a 
java.sql.Timestamp";
-                    if(LOGGER.isErrorEnabled())
-                        LOGGER.error(msg, e);
+                    LOGGER.error(msg, e);
 
                     TypeConversionException tce = new 
TypeConversionException(msg, e);
                     
tce.setLocalizedMessage(Bundle.getString("TypeUtils_javaSqlTimestampConvertError",
 new Object[]{e.getMessage()}));
@@ -610,8 +597,7 @@
                     return java.sql.Time.valueOf(value);
                 } catch(Exception e) {
                     String msg = "Caught an error converting a String to a 
java.sql.Time";
-                    if(LOGGER.isErrorEnabled())
-                        LOGGER.error(msg, e);
+                    LOGGER.error(msg, e);
 
                     TypeConversionException tce = new 
TypeConversionException(msg, e);
                     
tce.setLocalizedMessage(Bundle.getString("TypeUtils_javaSqlTimeConvertError", 
new Object[]{e.getMessage()}));


Reply via email to