ICU-6708 Static caching of NumberingSystem object instances in NumberFormat, J implementation

X-SVN-Rev: 26365
This commit is contained in:
Jason Spieth 2009-07-17 14:35:02 +00:00
parent e6d78cf300
commit cdd3d8072a

View File

@ -21,7 +21,9 @@ import java.util.Locale;
import java.util.MissingResourceException;
import java.util.Set;
import com.ibm.icu.impl.ICUCache;
import com.ibm.icu.impl.ICUResourceBundle;
import com.ibm.icu.impl.SimpleCache;
import com.ibm.icu.util.Currency;
import com.ibm.icu.util.CurrencyAmount;
import com.ibm.icu.util.ULocale;
@ -1289,8 +1291,15 @@ public abstract class NumberFormat extends UFormat {
pattern = pattern.replace("\u00A4", doubleCurrencyStr);
}
NumberingSystem ns = NumberingSystem.getInstance(desiredLocale);
// Get the numbering system from the cache or create one
NumberingSystem ns = cachedLocaleData.get(desiredLocale);
if (ns == null ) {
// add to cache
ns = NumberingSystem.getInstance(desiredLocale);
cachedLocaleData.put(desiredLocale, ns);
}
if ( ns == null ) {
// some error getting a numbering system
return null;
}
@ -1507,6 +1516,11 @@ public abstract class NumberFormat extends UFormat {
Add Field for the new method getIntegerInstance() [Richard/GCL]
*/
/**
* Cache to hold the NumberingSystems of a Locale.
*/
private static ICUCache<ULocale, NumberingSystem> cachedLocaleData = new SimpleCache<ULocale, NumberingSystem>();
/**
* True if the the grouping (i.e. thousands) separator is used when
* formatting and parsing numbers.