Re-implement ICU.getCurrencyCode without accessing the ICU resource directly
Re-implement by CurrencyMetaInfo.
java.util.Currency isn't reimplemented by android.icu.util.Currency
because java.util considers country code only, but ICU4J Currency will
try to consider locale extension, and also making best guess.
The previous CL added the test and continue to pass after this CL.
The below is the result of Currency#getInstance with each locale from
Locale.getAvailableLocales(). The result is the same before and after
this change.
===========================
ca-AD AD EUR
ar-AE AE AED
en-AE AE AED
fa-AF AF AFN
ps-AF AF AFN
uz-Arab-AF AF AFN
en-AG AG XCD
en-AI AI XCD
sq-AL AL ALL
hy-AM AM AMD
ln-AO AO AOA
pt-AO AO AOA
es-AR AR ARS
en-AS AS USD
de-AT AT EUR
en-AT AT EUR
en-AU AU AUD
nl-AW AW AWG
sv-AX AX EUR
az-Cyrl-AZ AZ AZN
az-Latn-AZ AZ AZN
bs-Cyrl-BA BA BAM
bs-Latn-BA BA BAM
hr-BA BA BAM
sr-Cyrl-BA BA BAM
sr-Latn-BA BA BAM
en-BB BB BBD
bn-BD BD BDT
ccp-BD BD BDT
de-BE BE EUR
en-BE BE EUR
fr-BE BE EUR
nl-BE BE EUR
ff-Latn-BF BF XOF
fr-BF BF XOF
bg-BG BG BGN
ar-BH BH BHD
en-BI BI BIF
fr-BI BI BIF
rn-BI BI BIF
fr-BJ BJ XOF
yo-BJ BJ XOF
fr-BL BL EUR
en-BM BM BMD
ms-BN BN BND
es-BO BO BOB
qu-BO BO BOB
nl-BQ BQ USD
es-BR BR BRL
pt-BR BR BRL
en-BS BS BSD
dz-BT BT BTN
en-BW BW BWP
be-BY BY BYN
ru-BY BY BYN
en-BZ BZ BZD
es-BZ BZ BZD
en-CA CA CAD
fr-CA CA CAD
en-CC CC AUD
fr-CD CD CDF
ln-CD CD CDF
lu-CD CD CDF
sw-CD CD CDF
fr-CF CF XAF
ln-CF CF XAF
sg-CF CF XAF
fr-CG CG XAF
ln-CG CG XAF
de-CH CH CHF
en-CH CH CHF
fr-CH CH CHF
gsw-CH CH CHF
it-CH CH CHF
pt-CH CH CHF
rm-CH CH CHF
wae-CH CH CHF
fr-CI CI XOF
en-CK CK NZD
es-CL CL CLP
agq-CM CM XAF
bas-CM CM XAF
dua-CM CM XAF
en-CM CM XAF
ewo-CM CM XAF
ff-Latn-CM CM XAF
fr-CM CM XAF
jgo-CM CM XAF
kkj-CM CM XAF
ksf-CM CM XAF
mgo-CM CM XAF
mua-CM CM XAF
nmg-CM CM XAF
nnh-CM CM XAF
yav-CM CM XAF
bo-CN CN CNY
ii-CN CN CNY
ug-CN CN CNY
yue-Hans-CN CN CNY
zh-Hans-CN CN CNY
es-CO CO COP
es-CR CR CRC
es-CU CU CUP
kea-CV CV CVE
pt-CV CV CVE
nl-CW CW ANG
en-CX CX AUD
el-CY CY EUR
en-CY CY EUR
tr-CY CY EUR
cs-CZ CZ CZK
de-DE DE EUR
dsb-DE DE EUR
en-DE DE EUR
hsb-DE DE EUR
ksh-DE DE EUR
nds-DE DE EUR
en-DG DG USD
ar-DJ DJ DJF
fr-DJ DJ DJF
so-DJ DJ DJF
da-DK DK DKK
en-DK DK DKK
fo-DK DK DKK
en-DM DM XCD
es-DO DO DOP
ar-DZ DZ DZD
fr-DZ DZ DZD
kab-DZ DZ DZD
es-EA EA EUR
es-EC EC USD
qu-EC EC USD
et-EE EE EUR
ar-EG EG EGP
ar-EH EH MAD
ar-ER ER ERN
en-ER ER ERN
ti-ER ER ERN
ast-ES ES EUR
ca-ES ES EUR
es-ES ES EUR
eu-ES ES EUR
gl-ES ES EUR
am-ET ET ETB
om-ET ET ETB
so-ET ET ETB
ti-ET ET ETB
en-FI FI EUR
fi-FI FI EUR
se-FI FI EUR
smn-FI FI EUR
sv-FI FI EUR
en-FJ FJ FJD
en-FK FK FKP
en-FM FM USD
fo-FO FO DKK
br-FR FR EUR
ca-FR FR EUR
fr-FR FR EUR
gsw-FR FR EUR
fr-GA GA XAF
cy-GB GB GBP
en-GB GB GBP
ga-GB GB GBP
gd-GB GB GBP
kw-GB GB GBP
en-GD GD XCD
ka-GE GE GEL
os-GE GE GEL
fr-GF GF EUR
en-GG GG GBP
ak-GH GH GHS
ee-GH GH GHS
en-GH GH GHS
ff-Latn-GH GH GHS
ha-GH GH GHS
en-GI GI GIP
da-GL GL DKK
kl-GL GL DKK
en-GM GM GMD
ff-Latn-GM GM GMD
ff-Latn-GN GN GNF
fr-GN GN GNF
fr-GP GP EUR
es-GQ GQ XAF
fr-GQ GQ XAF
pt-GQ GQ XAF
el-GR GR EUR
es-GT GT GTQ
en-GU GU USD
ff-Latn-GW GW XOF
pt-GW GW XOF
en-GY GY GYD
en-HK HK HKD
yue-Hant-HK HK HKD
zh-Hans-HK HK HKD
zh-Hant-HK HK HKD
es-HN HN HNL
hr-HR HR HRK
fr-HT HT HTG
hu-HU HU HUF
es-IC IC EUR
id-ID ID IDR
jv-ID ID IDR
en-IE IE EUR
ga-IE IE EUR
ar-IL IL ILS
en-IL IL ILS
he-IL IL ILS
en-IM IM GBP
gv-IM IM GBP
as-IN IN INR
bn-IN IN INR
bo-IN IN INR
brx-IN IN INR
ccp-IN IN INR
en-IN IN INR
gu-IN IN INR
hi-IN IN INR
kn-IN IN INR
kok-IN IN INR
ks-IN IN INR
ml-IN IN INR
mr-IN IN INR
ne-IN IN INR
or-IN IN INR
pa-Guru-IN IN INR
ta-IN IN INR
te-IN IN INR
ur-IN IN INR
en-IO IO USD
ar-IQ IQ IQD
ckb-IQ IQ IQD
lrc-IQ IQ IQD
ckb-IR IR IRR
fa-IR IR IRR
lrc-IR IR IRR
mzn-IR IR IRR
is-IS IS ISK
ca-IT IT EUR
de-IT IT EUR
fur-IT IT EUR
it-IT IT EUR
en-JE JE GBP
en-JM JM JMD
ar-JO JO JOD
ja-JP JP JPY
dav-KE KE KES
ebu-KE KE KES
en-KE KE KES
guz-KE KE KES
kam-KE KE KES
ki-KE KE KES
kln-KE KE KES
luo-KE KE KES
luy-KE KE KES
mas-KE KE KES
mer-KE KE KES
om-KE KE KES
saq-KE KE KES
so-KE KE KES
sw-KE KE KES
teo-KE KE KES
ky-KG KG KGS
ru-KG KG KGS
km-KH KH KHR
en-KI KI AUD
ar-KM KM KMF
fr-KM KM KMF
en-KN KN XCD
ko-KP KP KPW
ko-KR KR KRW
ar-KW KW KWD
en-KY KY KYD
kk-KZ KZ KZT
ru-KZ KZ KZT
lo-LA LA LAK
ar-LB LB LBP
en-LC LC XCD
de-LI LI CHF
gsw-LI LI CHF
si-LK LK LKR
ta-LK LK LKR
en-LR LR LRD
ff-Latn-LR LR LRD
vai-Latn-LR LR LRD
vai-Vaii-LR LR LRD
en-LS LS ZAR
lt-LT LT EUR
de-LU LU EUR
fr-LU LU EUR
lb-LU LU EUR
pt-LU LU EUR
lv-LV LV EUR
ar-LY LY LYD
ar-MA MA MAD
fr-MA MA MAD
shi-Latn-MA MA MAD
shi-Tfng-MA MA MAD
tzm-MA MA MAD
zgh-MA MA MAD
fr-MC MC EUR
ro-MD MD MDL
ru-MD MD MDL
sr-Cyrl-ME ME EUR
sr-Latn-ME ME EUR
fr-MF MF EUR
en-MG MG MGA
fr-MG MG MGA
mg-MG MG MGA
en-MH MH USD
mk-MK MK MKD
sq-MK MK MKD
bm-ML ML XOF
fr-ML ML XOF
khq-ML ML XOF
ses-ML ML XOF
my-MM MM MMK
mn-MN MN MNT
en-MO MO MOP
pt-MO MO MOP
zh-Hans-MO MO MOP
zh-Hant-MO MO MOP
en-MP MP USD
fr-MQ MQ EUR
ar-MR MR MRU
ff-Latn-MR MR MRU
fr-MR MR MRU
en-MS MS XCD
en-MT MT EUR
mt-MT MT EUR
en-MU MU MUR
fr-MU MU MUR
mfe-MU MU MUR
en-MW MW MWK
es-MX MX MXN
en-MY MY MYR
ms-MY MY MYR
ta-MY MY MYR
mgh-MZ MZ MZN
pt-MZ MZ MZN
seh-MZ MZ MZN
af-NA NA NAD
en-NA NA NAD
naq-NA NA NAD
fr-NC NC XPF
dje-NE NE XOF
ff-Latn-NE NE XOF
fr-NE NE XOF
ha-NE NE XOF
twq-NE NE XOF
en-NF NF AUD
en-NG NG NGN
ff-Latn-NG NG NGN
ha-NG NG NGN
ig-NG NG NGN
yo-NG NG NGN
es-NI NI NIO
en-NL NL EUR
fy-NL NL EUR
nds-NL NL EUR
nl-NL NL EUR
nb-NO NO NOK
nn-NO NO NOK
se-NO NO NOK
ne-NP NP NPR
en-NR NR AUD
en-NU NU NZD
en-NZ NZ NZD
mi-NZ NZ NZD
ar-OM OM OMR
es-PA PA PAB
es-PE PE PEN
qu-PE PE PEN
fr-PF PF XPF
en-PG PG PGK
ceb-PH PH PHP
en-PH PH PHP
es-PH PH PHP
fil-PH PH PHP
en-PK PK PKR
pa-Arab-PK PK PKR
ps-PK PK PKR
sd-PK PK PKR
ur-PK PK PKR
pl-PL PL PLN
fr-PM PM EUR
en-PN PN NZD
en-PR PR USD
es-PR PR USD
ar-PS PS ILS
pt-PT PT EUR
en-PW PW USD
es-PY PY PYG
ar-QA QA QAR
fr-RE RE EUR
ro-RO RO RON
sr-Cyrl-RS RS RSD
sr-Latn-RS RS RSD
ce-RU RU RUB
os-RU RU RUB
ru-RU RU RUB
sah-RU RU RUB
tt-RU RU RUB
en-RW RW RWF
fr-RW RW RWF
rw-RW RW RWF
ar-SA SA SAR
en-SB SB SBD
en-SC SC SCR
fr-SC SC SCR
ar-SD SD SDG
en-SD SD SDG
en-SE SE SEK
se-SE SE SEK
sv-SE SE SEK
en-SG SG SGD
ms-SG SG SGD
ta-SG SG SGD
zh-Hans-SG SG SGD
en-SH SH SHP
en-SI SI EUR
sl-SI SI EUR
nb-SJ SJ NOK
sk-SK SK EUR
en-SL SL SLL
ff-Latn-SL SL SLL
it-SM SM EUR
dyo-SN SN XOF
ff-Latn-SN SN XOF
fr-SN SN XOF
wo-SN SN XOF
ar-SO SO SOS
so-SO SO SOS
nl-SR SR SRD
ar-SS SS SSP
en-SS SS SSP
nus-SS SS SSP
pt-ST ST STN
es-SV SV USD
en-SX SX ANG
nl-SX SX ANG
ar-SY SY SYP
fr-SY SY SYP
en-SZ SZ SZL
en-TC TC USD
ar-TD TD XAF
fr-TD TD XAF
ee-TG TG XOF
fr-TG TG XOF
th-TH TH THB
tg-TJ TJ TJS
en-TK TK NZD
pt-TL TL USD
tk-TM TM TMT
ar-TN TN TND
fr-TN TN TND
en-TO TO TOP
to-TO TO TOP
ku-TR TR TRY
tr-TR TR TRY
en-TT TT TTD
en-TV TV AUD
zh-Hant-TW TW TWD
asa-TZ TZ TZS
bez-TZ TZ TZS
en-TZ TZ TZS
jmc-TZ TZ TZS
kde-TZ TZ TZS
ksb-TZ TZ TZS
lag-TZ TZ TZS
mas-TZ TZ TZS
rof-TZ TZ TZS
rwk-TZ TZ TZS
sbp-TZ TZ TZS
sw-TZ TZ TZS
vun-TZ TZ TZS
ru-UA UA UAH
uk-UA UA UAH
cgg-UG UG UGX
en-UG UG UGX
lg-UG UG UGX
nyn-UG UG UGX
sw-UG UG UGX
teo-UG UG UGX
xog-UG UG UGX
en-UM UM USD
chr-US US USD
en-US US USD
en-US-POSIX US USD
es-US US USD
haw-US US USD
lkt-US US USD
es-UY UY UYU
uz-Cyrl-UZ UZ UZS
uz-Latn-UZ UZ UZS
it-VA VA EUR
en-VC VC XCD
es-VE VE VES
en-VG VG USD
en-VI VI USD
vi-VN VN VND
en-VU VU VUV
fr-VU VU VUV
fr-WF WF XPF
en-WS WS WST
sq-XK XK EUR
sr-Cyrl-XK XK EUR
sr-Latn-XK XK EUR
ar-YE YE YER
fr-YT YT EUR
af-ZA ZA ZAR
en-ZA ZA ZAR
xh-ZA ZA ZAR
zu-ZA ZA ZAR
bem-ZM ZM ZMW
en-ZM ZM ZMW
en-ZW ZW USD
nd-ZW ZW USD
sn-ZW ZW USD
null currency:
throw IllegalArgumentException:
af
agq
ak
am
ar
ar-001
ar-XB
as
asa
ast
az
az-Cyrl
az-Latn
bas
be
bem
bez
bg
bm
bn
bo
br
brx
bs
bs-Cyrl
bs-Latn
ca
ccp
ce
ceb
cgg
chr
ckb
cs
cy
da
dav
de
dje
dsb
dua
dyo
dz
ebu
ee
el
en
en-001
en-150
en-XA
eo
eo-001
es
es-419
et
eu
ewo
fa
ff
ff-Latn
fi
fil
fo
fr
fur
fy
ga
gd
gl
gsw
gu
guz
gv
ha
haw
he
hi
hr
hsb
hu
hy
ia
ia-001
id
ig
ii
is
it
ja
jgo
jmc
jv
ka
kab
kam
kde
kea
khq
ki
kk
kkj
kl
kln
km
kn
ko
kok
ks
ksb
ksf
ksh
ku
kw
ky
lag
lb
lg
lkt
ln
lo
lrc
lt
lu
luo
luy
lv
mas
mer
mfe
mg
mgh
mgo
mi
mk
ml
mn
mr
ms
mt
mua
my
mzn
naq
nb
nd
nds
ne
nl
nmg
nn
nnh
nus
nyn
om
or
os
pa
pa-Arab
pa-Guru
pl
ps
pt
qu
rm
rn
ro
rof
ru
rw
rwk
sah
saq
sbp
sd
se
seh
ses
sg
shi
shi-Latn
shi-Tfng
si
sk
sl
smn
sn
so
sq
sr
sr-Cyrl
sr-Latn
sv
sw
ta
te
teo
tg
th
ti
tk
to
tr
tt
twq
tzm
ug
uk
ur
uz
uz-Arab
uz-Cyrl
uz-Latn
vai
vai-Latn
vai-Vaii
vi
vun
wae
wo
xh
xog
yav
yi
yi-001
yo
yue
yue-Hans
yue-Hant
zgh
zh
zh-Hans
zh-Hant
zu
throw NullPointerException:
===========================
Bug: 144560585
Test: atest CtsLibcoreTestCases:libcore.java.util.CurrencyTest CtsLibcoreTestCases:libcore.libcore.icu.ICUCurrencyTest CtsLibcoreTestCases:org.apache.harmony.tests.java.util.CurrencyTest
Change-Id: Iacd55920132e557287c02be5c5ba9c7f7ad5e970
Change-Id: I8eb1162b37b892e40ed1c0bd49d84eb1f771700c
2 files changed