Currency updates in JDK 7

Stephen Colebourne scolebourne at joda.org
Sat Aug 22 22:09:39 UTC 2009


I've been reviewing the Javadoc for the JDK 7 Currency class changes.
http://download.java.net/jdk7/docs/api/java/util/Currency.html

The updates appear to allow users the ability to override the built in 
currency data, as indicated in the class javadoc:

"Users can supersede the Java runtime currency data by creating a 
properties file named <JAVA_HOME>/lib/currency.properties. The contents 
of the properties file are key/value pairs of the ISO 3166 country codes 
and the ISO 4217 currency data respectively. The value part consists of 
three ISO 4217 values of a currency, i.e., an alphabetic code, a numeric 
code, and a minor unit. Those three ISO 4217 values are separated by 
commas. The lines which start with '#'s are considered comment lines. 
For example,

#Sample currency properties
JP=JPZ,999,0

will supersede the currency data for Japan. "

Unfortunately, not all currencies are associated with countries. Some, 
like XAG for 'silver', XDR for 'IMF drawing rights' or XXX for 'no 
currency' have no matching country. Thus, this file format is unable to 
represent user overrides to those countries.

Further, the Javadoc is unclear as to whether users can _add_ new 
currencies. An example would be if a country split, like Czech/Slovak, 
and created two currencies. Does the new format add a currency to the 
built in list if it isn't recognised?

I believe that we should also consider if Currency should implement 
Comparable, sorting alphabetically on the currency code. While there are 
many possible sort orders, having this as the default one makes a lot of 
sense.

Finally, I'd like to see a method isPsuedoCurrency() added. This would 
return a boolean indicating if the currency is 'real' or not.

Otherwise the changes pretty much complete the use cases for the class.

Stephen




More information about the core-libs-dev mailing list