> 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`.
Justin Lu has updated the pull request incrementally with one additional commit
since the last revision:
Import ordering
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/13501/files
- new: https://git.openjdk.org/jdk/pull/13501/files/c3046627..b03a51c6
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=13501&range=05
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=13501&range=04-05
Stats: 2 lines in 1 file changed: 1 ins; 1 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/13501.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/13501/head:pull/13501
PR: https://git.openjdk.org/jdk/pull/13501