From: Markus Scherer Date: Sat, 14 May 2016 00:05:52 +0000 (+0000) Subject: ICU-7434 switch ULocale from SimpleCache to SoftCache X-Git-Tag: milestone-59-0-1~438 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=33e71967fc31ad51f99a3c6242a9089710ac5c2e;p=icu ICU-7434 switch ULocale from SimpleCache to SoftCache X-SVN-Rev: 38740 --- diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java index e3a8f0a2432..f13a7f6a212 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.MissingResourceException; import java.util.Set; +import com.ibm.icu.impl.CacheBase; import com.ibm.icu.impl.ICUCache; import com.ibm.icu.impl.ICUData; import com.ibm.icu.impl.ICUDebug; @@ -229,7 +230,7 @@ public class Currency extends MeasureUnit { } private static final String EUR_STR = "EUR"; - private static final SoftCache regionCurrencyCache = + private static final CacheBase regionCurrencyCache = new SoftCache() { @Override protected Currency createInstance(String key, Void unused) { diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java index b8a9f41479c..fef8de447c4 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java @@ -24,14 +24,14 @@ import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; -import com.ibm.icu.impl.ICUCache; +import com.ibm.icu.impl.CacheBase; import com.ibm.icu.impl.ICUData; import com.ibm.icu.impl.ICUResourceBundle; import com.ibm.icu.impl.ICUResourceTableAccess; import com.ibm.icu.impl.LocaleIDParser; import com.ibm.icu.impl.LocaleIDs; import com.ibm.icu.impl.LocaleUtility; -import com.ibm.icu.impl.SimpleCache; +import com.ibm.icu.impl.SoftCache; import com.ibm.icu.impl.locale.AsciiUtil; import com.ibm.icu.impl.locale.BaseLocale; import com.ibm.icu.impl.locale.Extension; @@ -115,7 +115,12 @@ public final class ULocale implements Serializable, Comparable { // using serialver from jdk1.4.2_05 private static final long serialVersionUID = 3715177670352309217L; - private static ICUCache nameCache = new SimpleCache(); + private static CacheBase nameCache = new SoftCache() { + @Override + protected String createInstance(String tmpLocaleID, Void unused) { + return new LocaleIDParser(tmpLocaleID).getName(); + } + }; /** * Useful constant for language. @@ -305,7 +310,12 @@ public final class ULocale implements Serializable, Comparable { FORMAT } - private static final SimpleCache CACHE = new SimpleCache(); + private static final SoftCache CACHE = new SoftCache() { + @Override + protected ULocale createInstance(Locale key, Void unused) { + return JDKLocaleHelper.toULocale(key); + } + }; /** * Cache the locale. @@ -442,12 +452,7 @@ public final class ULocale implements Serializable, Comparable { if (loc == null) { return null; } - ULocale result = CACHE.get(loc); - if (result == null) { - result = JDKLocaleHelper.toULocale(loc); - CACHE.put(loc, result); - } - return result; + return CACHE.getInstance(loc, null /* unused */); } /** @@ -1165,12 +1170,7 @@ public final class ULocale implements Serializable, Comparable { } else { tmpLocaleID = localeID; } - String name = nameCache.get(tmpLocaleID); - if (name == null) { - name = new LocaleIDParser(tmpLocaleID).getName(); - nameCache.put(tmpLocaleID, name); - } - return name; + return nameCache.getInstance(tmpLocaleID, null /* unused */); } /**