Author: cziegeler
Date: Thu Aug 18 15:53:35 2011
New Revision: 1159287
URL: http://svn.apache.org/viewvc?rev=1159287&view=rev
Log:
SLING-2180 : Provide a resource bundle for all requests
Modified:
sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/I18NFilter.java
Modified:
sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/I18NFilter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/I18NFilter.java?rev=1159287&r1=1159286&r2=1159287&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/I18NFilter.java
(original)
+++
sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/I18NFilter.java
Thu Aug 18 15:53:35 2011
@@ -100,11 +100,13 @@ public class I18NFilter implements Filte
throws IOException, ServletException {
final boolean runGlobal = this.initCount == 2;
if ( request instanceof SlingHttpServletRequest ) {
- // check if we have to wrap
+ // check if we can use the simple version to wrap
if ( !runGlobal || this.requestLocaleResolver ==
DEFAULT_LOCALE_RESOLVER ) {
// wrap with our ResourceBundle provisioning
request = new I18NSlingHttpServletRequest(request,
resourceBundleProvider, localeResolver);
+ } else {
+ request = new BaseI18NSlingHttpServletRequest(request,
resourceBundleProvider);
}
} else {
request = new I18NHttpServletRequest(request,
@@ -208,23 +210,15 @@ public class I18NFilter implements Filte
}
- private static class I18NSlingHttpServletRequest
+ private static class BaseI18NSlingHttpServletRequest
extends SlingHttpServletRequestWrapper {
- private final ResourceBundleProvider bundleProvider;
-
- private final LocaleResolver localeResolver;
-
- private Locale locale;
-
- private List<Locale> localeList;
+ protected final ResourceBundleProvider bundleProvider;
- I18NSlingHttpServletRequest(final ServletRequest delegatee,
- final ResourceBundleProvider bundleProvider,
- final LocaleResolver localeResolver) {
+ BaseI18NSlingHttpServletRequest(final ServletRequest delegatee,
+ final ResourceBundleProvider bundleProvider) {
super((SlingHttpServletRequest) delegatee);
this.bundleProvider = bundleProvider;
- this.localeResolver = localeResolver;
}
@Override
@@ -233,15 +227,6 @@ public class I18NFilter implements Filte
}
@Override
- public Object getAttribute(final String name) {
- if ( ResourceBundleProvider.BUNDLE_REQ_ATTR.equals(name) ) {
- final Object superValue = super.getAttribute(name);
- return (superValue != null ? superValue :
this.getResourceBundle(null));
- }
- return super.getAttribute(name);
- }
-
- @Override
public ResourceBundle getResourceBundle(String baseName, Locale
locale) {
if (bundleProvider != null) {
if (locale == null) {
@@ -261,6 +246,32 @@ public class I18NFilter implements Filte
return super.getResourceBundle(baseName, locale);
}
+ }
+
+ private static class I18NSlingHttpServletRequest
+ extends BaseI18NSlingHttpServletRequest {
+
+ private final LocaleResolver localeResolver;
+
+ private Locale locale;
+
+ private List<Locale> localeList;
+
+ I18NSlingHttpServletRequest(final ServletRequest delegatee,
+ final ResourceBundleProvider bundleProvider,
+ final LocaleResolver localeResolver) {
+ super(delegatee, bundleProvider);
+ this.localeResolver = localeResolver;
+ }
+
+ @Override
+ public Object getAttribute(final String name) {
+ if ( ResourceBundleProvider.BUNDLE_REQ_ATTR.equals(name) ) {
+ final Object superValue = super.getAttribute(name);
+ return (superValue != null ? superValue :
this.getResourceBundle(null));
+ }
+ return super.getAttribute(name);
+ }
@Override
public Locale getLocale() {