]> granicus.if.org Git - icu/commitdiff
ICU-7434 switch RelativeDateTimeFormatter from SimpleCache to SoftCache
authorMarkus Scherer <markus.icu@gmail.com>
Mon, 16 May 2016 21:46:11 +0000 (21:46 +0000)
committerMarkus Scherer <markus.icu@gmail.com>
Mon, 16 May 2016 21:46:11 +0000 (21:46 +0000)
X-SVN-Rev: 38745

icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java

index d72bbb1883d44ae60400f435b0c003f19957bbe8..d91d2403521aad8a8d9708054fa7c0224d2abfa7 100644 (file)
@@ -9,13 +9,13 @@ package com.ibm.icu.text;
 import java.util.EnumMap;
 import java.util.Locale;
 
+import com.ibm.icu.impl.CacheBase;
 import com.ibm.icu.impl.CalendarData;
 import com.ibm.icu.impl.DontCareFieldPosition;
-import com.ibm.icu.impl.ICUCache;
 import com.ibm.icu.impl.ICUData;
 import com.ibm.icu.impl.ICUResourceBundle;
-import com.ibm.icu.impl.SimpleCache;
 import com.ibm.icu.impl.SimpleFormatterImpl;
+import com.ibm.icu.impl.SoftCache;
 import com.ibm.icu.impl.StandardPlural;
 import com.ibm.icu.impl.UResource;
 import com.ibm.icu.lang.UCharacter;
@@ -864,17 +864,17 @@ public final class RelativeDateTimeFormatter {
     }
 
     private static class Cache {
-        private final ICUCache<String, RelativeDateTimeFormatterData> cache =
-            new SimpleCache<String, RelativeDateTimeFormatterData>();
+        private final CacheBase<String, RelativeDateTimeFormatterData, ULocale> cache =
+            new SoftCache<String, RelativeDateTimeFormatterData, ULocale>() {
+                @Override
+                protected RelativeDateTimeFormatterData createInstance(String key, ULocale locale) {
+                    return new Loader(locale).load();
+                }
+            };
 
         public RelativeDateTimeFormatterData get(ULocale locale) {
             String key = locale.toString();
-            RelativeDateTimeFormatterData result = cache.get(key);
-            if (result == null) {
-                result = new Loader(locale).load();
-                cache.put(key, result);
-            }
-            return result;
+            return cache.getInstance(key, locale);
         }
     }