On Mon, 17 Apr 2023 19:48:10 GMT, Justin Lu <j...@openjdk.org> wrote:

> Update the registry and accompanying tests with the **IANA 4/13/2022** update.
> 
> This update introduces the case where an IANA entry can have a preferred 
> value, but that preferred value has a preferred value as well.
> 
> This causes unexpected failures in JDK tests because of how locale 
> equivalencies are created.
> 
> eg: `ar-ajp` has a preferred value of `ajp` but `ajp` has a preferred value 
> of `apc`
> 
> Normally, when the JDK is built, _LocaleEquivlalentMaps.java_ generates the 
> following
> 
> 
> ...
> singleEquivMap.put("ar-ajp", "ajp");
> singleEquivMap.put("ajp", "ar-ajp");
> ...
> multiEquivsMap.put("ajp", new String[] {"apc", "ar-apc"});
> multiEquivsMap.put("apc", new String[] {"ajp", "ar-apc"});
> multiEquivsMap.put("ar-apc", new String[] {"apc", "ajp"});
> ...
> 
> 
> When `LocaleMatcher.parse(ACCEPT_LANGUAGE)` is called with `ACCEPT_LANGUAGE` 
> containing `apc` and `ajp` in that order, the following occurs:
> 
> `apc` is found, `apc` is added, all of `apc's` equivalencies are added: `ajp` 
> and `ar-apc`
> 
> When parse iterates to `ajp`, it finds that it is already added to the list, 
> and does not add it's equivalency `ar-ajp`.
> 
> To address this, the build process must be adjusted so that the equivalencies 
> are built as 
> 
> 
> ...
> multiEquivsMap.put("ajp", new String[] {"apc", "ar-ajp", "ar-apc"});
> multiEquivsMap.put("apc", new String[] {"ajp", "ar-ajp", "ar-apc"});
> multiEquivsMap.put("ar-ajp", new String[] {"apc", "ajp", "ar-apc"});
> multiEquivsMap.put("ar-apc", new String[] {"apc", "ajp", "ar-ajp"});
> ...
> 
> 
> As, if `ar-ajp` has a preferred value of `ajp`, and `ajp` has a preferred 
> value of `apc`, this technically means that `ar-ajp` is equivalent to `apc` 
> and its equivalencies as well. This way, when 
> `LocaleMatcher.parse(ACCEPT_LANGUAGE)` iterates to `apc`, it will add all of 
> it's equivalencies including `ar-ajp`.

This pull request has now been integrated.

Changeset: 00b1eaca
Author:    Justin Lu <j...@openjdk.org>
Committer: Naoto Sato <na...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/00b1eacad6ae2d5ea5afb1de506768e9ab960743
Stats:     37 lines in 3 files changed: 19 ins; 0 del; 18 mod

8306031: Update IANA Language Subtag Registry to Version 2023-04-13

Reviewed-by: naoto

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

PR: https://git.openjdk.org/jdk/pull/13501

Reply via email to