On Thu, 20 Apr 2023 20:22:39 GMT, Justin Lu <[email protected]> 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`.
>
> Justin Lu has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Import ordering
LGTM
-------------
Marked as reviewed by naoto (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/13501#pullrequestreview-1396170956