Author: cziegeler
Date: Tue Aug 28 12:01:21 2012
New Revision: 1378095

URL: http://svn.apache.org/viewvc?rev=1378095&view=rev
Log:
SLING-2576 : I18n: Allow multiple ResourceBundleProviders, use the first one 
responding for a given locale

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=1378095&r1=1378094&r2=1378095&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
 Tue Aug 28 12:01:21 2012
@@ -179,7 +179,9 @@ public class I18NFilter implements Filte
 
         public Locale getDefaultLocale() {
             // ask all registered providers, use the first one that returns
-            for (final ResourceBundleProvider provider : sortedProviders) {
+            final ResourceBundleProvider[] providers = sortedProviders;
+            for(int i=providers.length-1; i >= 0; i--) {
+                final ResourceBundleProvider provider = providers[i];
                 final Locale locale = provider.getDefaultLocale();
                 if (locale != null) {
                     return locale;
@@ -190,7 +192,9 @@ public class I18NFilter implements Filte
 
         public ResourceBundle getResourceBundle(final Locale locale) {
             // ask all registered providers, use the first one that returns
-            for (final ResourceBundleProvider provider : sortedProviders) {
+            final ResourceBundleProvider[] providers = sortedProviders;
+            for(int i=providers.length-1; i >= 0; i--) {
+                final ResourceBundleProvider provider = providers[i];
                 final ResourceBundle bundle = 
provider.getResourceBundle(locale);
                 if (bundle != null) {
                     return bundle;
@@ -201,7 +205,9 @@ public class I18NFilter implements Filte
 
         public ResourceBundle getResourceBundle(final String baseName, final 
Locale locale) {
             // ask all registered providers, use the first one that returns
-            for (final ResourceBundleProvider provider : sortedProviders) {
+            final ResourceBundleProvider[] providers = sortedProviders;
+            for(int i=providers.length-1; i >= 0; i--) {
+                final ResourceBundleProvider provider = providers[i];
                 final ResourceBundle bundle = 
provider.getResourceBundle(baseName, locale);
                 if (bundle != null) {
                     return bundle;


Reply via email to