Author: joerg Date: Sat Jan 29 11:59:29 2005 New Revision: 149069 URL: http://svn.apache.org/viewcvs?view=rev&rev=149069 Log: Fixed caching of i18n bundles when using multiple locations. (bug 33097) Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/i18n/XMLResourceBundleFactory.java cocoon/branches/BRANCH_2_1_X/status.xml
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/i18n/XMLResourceBundleFactory.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/i18n/XMLResourceBundleFactory.java?view=diff&rev=149069&p1=cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/i18n/XMLResourceBundleFactory.java&r1=149068&p2=cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/i18n/XMLResourceBundleFactory.java&r2=149069 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/i18n/XMLResourceBundleFactory.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/i18n/XMLResourceBundleFactory.java Sat Jan 29 11:59:29 2005 @@ -249,11 +249,11 @@ getLogger().debug("selecting from: " + name + ", locale: " + locale + ", directory: " + directories[index]); } - String fileName = getFileName(directories[index], name, locale); - XMLResourceBundle bundle = selectCached(fileName); + String cacheKey = getCacheKey(directories, index, name, locale); + XMLResourceBundle bundle = selectCached(cacheKey); if (bundle == null) { synchronized (this) { - bundle = selectCached(fileName); + bundle = selectCached(cacheKey); if (bundle == null) { boolean localeAvailable = (locale != null && !locale.getLanguage().equals("")); index++; @@ -266,9 +266,10 @@ // there are directories left to search for with this locale parentBundle = _select(directories, index, name, locale); } - if (!isNotFoundBundle(fileName)) { + if (!isNotFoundBundle(cacheKey)) { + String fileName = getFileName(directories[index - 1], name, locale); bundle = _loadBundle(name, fileName, locale, parentBundle); - updateCache(fileName, bundle); + updateCache(cacheKey, bundle); } if (bundle == null) { return parentBundle; @@ -340,6 +341,15 @@ newloc = new Locale(locale.getLanguage(), locale.getCountry(), ""); } return newloc; + } + + protected String getCacheKey(String[] directories, int index, String name, Locale locale) { + StringBuffer cacheKey = new StringBuffer(); + for (; index < directories.length; index++) { + cacheKey.append(getFileName(directories[index], name, locale)); + cacheKey.append(":"); + } + return cacheKey.toString(); } /** Modified: cocoon/branches/BRANCH_2_1_X/status.xml Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/status.xml?view=diff&rev=149069&p1=cocoon/branches/BRANCH_2_1_X/status.xml&r1=149068&p2=cocoon/branches/BRANCH_2_1_X/status.xml&r2=149069 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/status.xml (original) +++ cocoon/branches/BRANCH_2_1_X/status.xml Sat Jan 29 11:59:29 2005 @@ -202,6 +202,9 @@ <changes> <release version="@version@" date="@date@"> + <action dev="JH" type="fix" fixes-bug="33097"> + Fixed caching of i18n bundles when using multiple locations. + </action> <action dev="CZ" type="fix" fixes-bug="33178" due-to="Jean-Baptiste Quenot" due-to-email="[EMAIL PROTECTED]"> Fixing uri handling when the pass-through feature for mounting sitemaps is used. </action>
