From ea98fcb3a01797ee020dc1eb804e801eb12d7b1e Mon Sep 17 00:00:00 2001 From: Ram Viswanadha Date: Wed, 1 Jun 2005 18:51:05 +0000 Subject: [PATCH] ICU-4122 fix a bug X-SVN-Rev: 17769 --- icu4j/src/com/ibm/icu/impl/ICUResourceBundle.java | 9 ++++++--- icu4j/src/com/ibm/icu/impl/ICUResourceBundleImpl.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/icu4j/src/com/ibm/icu/impl/ICUResourceBundle.java b/icu4j/src/com/ibm/icu/impl/ICUResourceBundle.java index eda09c6e8c6..bf5aaffd3bd 100644 --- a/icu4j/src/com/ibm/icu/impl/ICUResourceBundle.java +++ b/icu4j/src/com/ibm/icu/impl/ICUResourceBundle.java @@ -603,7 +603,7 @@ public abstract class ICUResourceBundle extends UResourceBundle{ ICUResourceBundle actualBundle = this; // now recuse to pick up sub levels of the items - result = findResourceWithFallback(path, actualBundle); + result = findResourceWithFallback(path, actualBundle, null); if(result == null){ throw new MissingResourceException("Can't find resource for bundle " @@ -1000,14 +1000,17 @@ public abstract class ICUResourceBundle extends UResourceBundle{ return ae; } - private ICUResourceBundle findResourceWithFallback(String path, ICUResourceBundle actualBundle) { + private ICUResourceBundle findResourceWithFallback(String path, ICUResourceBundle actualBundle, ICUResourceBundle requested) { ICUResourceBundle sub = null; + if(requested==null){ + requested=actualBundle; + } while (actualBundle != null) { StringTokenizer st = new StringTokenizer(path, "/"); ICUResourceBundle current = actualBundle; while (st.hasMoreTokens()) { String subKey = st.nextToken(); - sub = current.handleGet(subKey, null); + sub = current.handleGet(subKey, requested); if(sub==null){ break; } diff --git a/icu4j/src/com/ibm/icu/impl/ICUResourceBundleImpl.java b/icu4j/src/com/ibm/icu/impl/ICUResourceBundleImpl.java index 60e88f8e7ef..75142a9417a 100644 --- a/icu4j/src/com/ibm/icu/impl/ICUResourceBundleImpl.java +++ b/icu4j/src/com/ibm/icu/impl/ICUResourceBundleImpl.java @@ -646,7 +646,7 @@ public class ICUResourceBundleImpl extends ICUResourceBundle { if(bundleName.equals(LOCALE)){ bundleName = baseName; bundle = requested; - keyPath = locale; + keyPath = resPath.substring(LOCALE.length() + 2/* prepending and appending / */, resPath.length()); locale = requested.getLocaleID(); }else if (locale == null) { bundle = (ICUResourceBundle) getBundleInstance(bundleName, "",