<i18n dev> [9] RFR: 8048123: Replace calendars.properties with another mechanism to specify a new Japanese calendar era

Masayoshi Okutsu masayoshi.okutsu at oracle.com
Thu Jul 24 00:35:27 UTC 2014

The expected property usage, which hasn't changed from the properties 
file, is that we will provide the correct property value of any new era 
probably with a test program which will verify the given values. For JDK 
6 to 8, the updated property file will need to be provided by us with a 
test program. I don't expect that users regularly and randomly define 
their own eras. The Japanese government defines eras by decrees [1][2].

I could change the spec, which requires another CCC cycle, and add error 
logging. But I believe that's overkill for the functionality and its 
usage (basically only once every several ten years for the limited 
number of users). In addition, the syntax isn't complicated at all. And 
if any wrong values are given, such as a typo in the given name, there 
will be no way to detect it in the API anyway.

BTW, I tend to avoid use of logging (and some other APIs) in the 
date-time API. It could create inter dependencies leading to an infinite 
loop to use some APIs from the date-time API. IIRC Sherman and I have 
worked on such bug reports. It's far more difficult to diagnose inter 
dependencies than syntax errors of the simple property value.

If it's necessary to report any syntax errors, I think throwing an 
exception should be a solution. So, should I start over from the spec?


[1] http://law.e-gov.go.jp/htmldata/S64/S64SE001.html
[2] http://www.mext.go.jp/b_menu/hakusho/nc/k19890107001/k19890107001.html

On 7/24/2014 1:44 AM, Naoto Sato wrote:
> Although I believe the incorrect behavior would be very obvious ("era" 
> specified in the property would simply be not used), I would agree the 
> failed property be better logged.
> Naoto
> On 7/23/14, 6:23 AM, Alan Bateman wrote:
>> On 23/07/2014 09:46, Masayoshi Okutsu wrote:
>>> Revised the webrev:
>>> http://cr.openjdk.java.net/~okutsu/9/8048123/webrev.01
>>> The changes from the previous one are:
>>> - Changed <pre><code> (originally <pre><tt>) to <pre>{@code
>>> - Replaced StringTokenizer with String.split()
>>> - Eliminated RuntimeException
>> The use of {@code ..} and replacing the usage of StringTokenizer look
>> good me.
>> I'm not so sure about silently ignoring errors in the property value,
>> mostly because it would lead to incorrect behavior that is likely to be
>> very difficult to track down. If there area used logging then there
>> might be some hope of finding it but this isn't the case.
>> -Alan

More information about the i18n-dev mailing list