<i18n dev> RFR: 8321206: Make Locale related system properties `StaticProperty`

Naoto Sato naoto at openjdk.org
Wed Dec 6 18:15:35 UTC 2023


On Wed, 6 Dec 2023 15:27:48 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> Currently, Locale-related system properties, such as `user.language` or `user.country`, are initialized when the `Locale` class is loaded. Making them static properties is safer than relying on the `Locale` class loading timing, which could potentially be changed depending on the implementation.
>
> src/java.base/share/classes/jdk/internal/util/StaticProperty.java line 113:
> 
>> 111:         USER_EXTENSIONS_DISPLAY = getProperty(props, "user.extensions.display", USER_EXTENSIONS);
>> 112:         USER_EXTENSIONS_FORMAT = getProperty(props, "user.extensions.format", USER_EXTENSIONS);
>> 113:         USER_REGION = getProperty(props, "user.region", "");
> 
> Computing the defaults for these properties should be in the Locale class, close to the initialization of the default locale. Splitting the responsibility across files makes it harder to follow what happens where/when.

If I am not mistaken, these assignments should stay here in `StaticProperty`, as that is the whole purpose of this change. Depending on `Locale` class loading time might be fragile, and this change guarantees the properties are initialized and frozen in `System.initPhase1()`

> src/java.base/share/classes/jdk/internal/util/StaticProperty.java line 415:
> 
>> 413:     public static String userRegion() {
>> 414:         return USER_REGION;
>> 415:     }
> 
> Using methods to retrieve these makes is more complicated.
> The bleeding of the enum values outside of Locale is undesirable.
> Since the property values are final strings, I suggest just making the fields public and keep the mapping local to the Locale class.

As Alan commented, I will not use `Locale.Category.ordinal()` but instead use the properties keys. Would that address your suggestion?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/16986#discussion_r1417793505
PR Review Comment: https://git.openjdk.org/jdk/pull/16986#discussion_r1417785427


More information about the i18n-dev mailing list