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()}));