You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2011/05/13 15:43:35 UTC
svn commit: r1102729 -
/sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
Author: justin
Date: Fri May 13 13:43:35 2011
New Revision: 1102729
URL: http://svn.apache.org/viewvc?rev=1102729&view=rev
Log:
SLING-2061 - making bundle preloading optional
Modified:
sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
Modified: sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java?rev=1102729&r1=1102728&r2=1102729&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java (original)
+++ sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java Fri May 13 13:43:35 2011
@@ -21,6 +21,7 @@ package org.apache.sling.i18n.impl;
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
@@ -28,6 +29,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javax.jcr.RepositoryException;
@@ -67,6 +69,8 @@ import static org.apache.sling.i18n.impl
public class JcrResourceBundleProvider implements ResourceBundleProvider,
EventListener {
+ private static final boolean DEFAULT_PRELOAD_BUNDLES = false;
+
@Property(value = "")
private static final String PROP_USER = "user";
@@ -76,6 +80,10 @@ public class JcrResourceBundleProvider i
@Property(value = "en")
private static final String PROP_DEFAULT_LOCALE = "locale.default";
+ @Property(boolValue = DEFAULT_PRELOAD_BUNDLES)
+ private static final String PROP_PRELOAD_BUNDLES = "preload.bundles";
+
+
/** default log */
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -120,6 +128,8 @@ public class JcrResourceBundleProvider i
private List<ServiceRegistration> bundleServiceRegistrations;
+ private boolean preloadBundles;
+
// ---------- ResourceBundleProvider ---------------------------------------
/**
@@ -196,6 +206,7 @@ public class JcrResourceBundleProvider i
String localeString = OsgiUtil.toString(props.get(PROP_DEFAULT_LOCALE),
null);
this.defaultLocale = toLocale(localeString);
+ this.preloadBundles = OsgiUtil.toBoolean(props.get(PROP_PRELOAD_BUNDLES), DEFAULT_PRELOAD_BUNDLES);
this.bundleContext = context.getBundleContext();
this.bundleServiceRegistrations = new ArrayList<ServiceRegistration>();
@@ -424,18 +435,24 @@ public class JcrResourceBundleProvider i
}
private void preloadBundles() {
- @SuppressWarnings("deprecation")
- Iterator<Map<String, Object>> bundles = getResourceResolver().queryResources(
- "//element(*,mix:language)", Query.XPATH);
- while (bundles.hasNext()) {
- Map<String,Object> bundle = bundles.next();
- if (bundle.containsKey(PROP_LANGUAGE)) {
- Locale locale = toLocale(bundle.get(PROP_LANGUAGE).toString());
- if (bundle.containsKey(PROP_BASENAME)) {
- getResourceBundle(bundle.get(PROP_BASENAME).toString(), locale);
- } else {
- getResourceBundle(locale);
- }
+ if (preloadBundles) {
+ @SuppressWarnings("deprecation")
+ Iterator<Map<String, Object>> bundles = getResourceResolver().queryResources(
+ "//element(*,mix:language)", Query.XPATH);
+ Set<Key> usedKeys = new HashSet<Key>();
+ while (bundles.hasNext()) {
+ Map<String,Object> bundle = bundles.next();
+ if (bundle.containsKey(PROP_LANGUAGE)) {
+ Locale locale = toLocale(bundle.get(PROP_LANGUAGE).toString());
+ String baseName = null;
+ if (bundle.containsKey(PROP_BASENAME)) {
+ baseName = bundle.get(PROP_BASENAME).toString();
+ }
+ Key key = new Key(baseName, locale);
+ if (usedKeys.add(key)) {
+ getResourceBundle(baseName, locale);
+ }
+ }
}
}
}