diff options
author | Neil Fuller <nfuller@google.com> | 2014-03-11 13:32:49 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-03-11 13:32:50 +0000 |
commit | 5a692fa8cdeec7eee42482f78187bb76be5a87db (patch) | |
tree | 86e6fa11b696461631afb791d0419cc596716fe7 /luni | |
parent | 43ec94e3875f31cd1cddb3559afca1bea50ed62a (diff) | |
parent | d627bd4525e41b0503f94c2887c3e01618c73105 (diff) | |
download | libcore-5a692fa8cdeec7eee42482f78187bb76be5a87db.zip libcore-5a692fa8cdeec7eee42482f78187bb76be5a87db.tar.gz libcore-5a692fa8cdeec7eee42482f78187bb76be5a87db.tar.bz2 |
Merge "Add Currency.getNumericCode()"
Diffstat (limited to 'luni')
-rw-r--r-- | luni/src/main/java/java/util/Currency.java | 11 | ||||
-rw-r--r-- | luni/src/main/java/libcore/icu/ICU.java | 1 | ||||
-rw-r--r-- | luni/src/main/native/libcore_icu_ICU.cpp | 10 | ||||
-rw-r--r-- | luni/src/test/java/libcore/java/util/CurrencyTest.java | 7 |
4 files changed, 29 insertions, 0 deletions
diff --git a/luni/src/main/java/java/util/Currency.java b/luni/src/main/java/java/util/Currency.java index b5b04a0..e8ecdde 100644 --- a/luni/src/main/java/java/util/Currency.java +++ b/luni/src/main/java/java/util/Currency.java @@ -127,6 +127,17 @@ public final class Currency implements Serializable { } /** + * Returns the ISO 4217 numeric code for this currency. If there is no standard numeric code a + * zero is returned. + * + * @since 1.7 + * @hide Until ready for an API update + */ + public int getNumericCode() { + return ICU.getCurrencyNumericCode(currencyCode); + } + + /** * Equivalent to {@code getSymbol(Locale.getDefault())}. * See "<a href="../util/Locale.html#default_locale">Be wary of the default locale</a>". */ diff --git a/luni/src/main/java/libcore/icu/ICU.java b/luni/src/main/java/libcore/icu/ICU.java index 2c94882..078c83a 100644 --- a/luni/src/main/java/libcore/icu/ICU.java +++ b/luni/src/main/java/libcore/icu/ICU.java @@ -453,6 +453,7 @@ public final class ICU { public static native String getCurrencyCode(String countryCode); public static native String getCurrencyDisplayName(String locale, String currencyCode); public static native int getCurrencyFractionDigits(String currencyCode); + public static native int getCurrencyNumericCode(String currencyCode); public static native String getCurrencySymbol(String locale, String currencyCode); public static native String getDisplayCountryNative(String countryCode, String locale); diff --git a/luni/src/main/native/libcore_icu_ICU.cpp b/luni/src/main/native/libcore_icu_ICU.cpp index 8f6e321..c869542 100644 --- a/luni/src/main/native/libcore_icu_ICU.cpp +++ b/luni/src/main/native/libcore_icu_ICU.cpp @@ -203,6 +203,15 @@ static jint ICU_getCurrencyFractionDigits(JNIEnv* env, jclass, jstring javaCurre return ucurr_getDefaultFractionDigits(icuCurrencyCode.getTerminatedBuffer(), &status); } +static jint ICU_getCurrencyNumericCode(JNIEnv* env, jclass, jstring javaCurrencyCode) { + ScopedJavaUnicodeString currencyCode(env, javaCurrencyCode); + if (!currencyCode.valid()) { + return 0; + } + UnicodeString icuCurrencyCode(currencyCode.unicodeString()); + return ucurr_getNumericCode(icuCurrencyCode.getTerminatedBuffer()); +} + // TODO: rewrite this with int32_t ucurr_forLocale(const char* locale, UChar* buff, int32_t buffCapacity, UErrorCode* ec)... static jstring ICU_getCurrencyCode(JNIEnv* env, jclass, jstring javaCountryCode) { UErrorCode status = U_ZERO_ERROR; @@ -764,6 +773,7 @@ static JNINativeMethod gMethods[] = { NATIVE_METHOD(ICU, getCurrencyCode, "(Ljava/lang/String;)Ljava/lang/String;"), NATIVE_METHOD(ICU, getCurrencyDisplayName, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"), NATIVE_METHOD(ICU, getCurrencyFractionDigits, "(Ljava/lang/String;)I"), + NATIVE_METHOD(ICU, getCurrencyNumericCode, "(Ljava/lang/String;)I"), NATIVE_METHOD(ICU, getCurrencySymbol, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"), NATIVE_METHOD(ICU, getDisplayCountryNative, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"), NATIVE_METHOD(ICU, getDisplayLanguageNative, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"), diff --git a/luni/src/test/java/libcore/java/util/CurrencyTest.java b/luni/src/test/java/libcore/java/util/CurrencyTest.java index 61a22fd..fb7fbf6 100644 --- a/luni/src/test/java/libcore/java/util/CurrencyTest.java +++ b/luni/src/test/java/libcore/java/util/CurrencyTest.java @@ -67,6 +67,13 @@ public class CurrencyTest extends junit.framework.TestCase { assertEquals(-1, Currency.getInstance("XXX").getDefaultFractionDigits()); } + public void test_getNumericCode() throws Exception { + assertEquals(840, Currency.getInstance("USD").getNumericCode()); + assertEquals(826, Currency.getInstance("GBP").getNumericCode()); + assertEquals(999, Currency.getInstance("XXX").getNumericCode()); + assertEquals(0, Currency.getInstance("XFU").getNumericCode()); + } + // http://code.google.com/p/android/issues/detail?id=38622 public void test_getSymbol_38622() throws Exception { // The CLDR data had the Portuguese symbol for "EUR" in pt, not in pt_PT. |