]> granicus.if.org Git - icu/commitdiff
ICU-7434 switch ULocale from SimpleCache to SoftCache
authorMarkus Scherer <markus.icu@gmail.com>
Sat, 14 May 2016 00:05:52 +0000 (00:05 +0000)
committerMarkus Scherer <markus.icu@gmail.com>
Sat, 14 May 2016 00:05:52 +0000 (00:05 +0000)
X-SVN-Rev: 38740

icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java
icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java

index e3a8f0a24324ac92bd32ec914e6f8ea6d2030516..f13a7f6a2128415c05bf3f6246d7bb2f8329e6a3 100644 (file)
@@ -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<String, Currency, Void> regionCurrencyCache =
+    private static final CacheBase<String, Currency, Void> regionCurrencyCache =
             new SoftCache<String, Currency, Void>() {
         @Override
         protected Currency createInstance(String key, Void unused) {
index b8a9f41479cd506c35374c22d8cf8c3787670864..fef8de447c4b2ba7968b21a998d694bc0acfa186 100644 (file)
@@ -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<ULocale> {
     // using serialver from jdk1.4.2_05
     private static final long serialVersionUID = 3715177670352309217L;
 
-    private static ICUCache<String, String> nameCache = new SimpleCache<String, String>();
+    private static CacheBase<String, String, Void> nameCache = new SoftCache<String, String, Void>() {
+        @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<ULocale> {
         FORMAT
     }
 
-    private static final SimpleCache<Locale, ULocale> CACHE = new SimpleCache<Locale, ULocale>();
+    private static final SoftCache<Locale, ULocale, Void> CACHE = new SoftCache<Locale, ULocale, Void>() {
+        @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<ULocale> {
         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<ULocale> {
         } 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 */);
     }
 
     /**