lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler (JIRA)" <>
Subject [jira] [Commented] (LUCENE-6978) Make LuceneTestCase use language tags instead of parsing locales by hand
Date Fri, 15 Jan 2016 12:59:39 GMT


Uwe Schindler commented on LUCENE-6978:

See LUCENE-6973 about the fact, why {{Locale.forLanguageTag()}} is broken and should be forbidden.

> Make LuceneTestCase use language tags instead of parsing locales by hand
> ------------------------------------------------------------------------
>                 Key: LUCENE-6978
>                 URL:
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/test-framework
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
> Since we are on Java 7, the JDK supports standardized language tags as identifiers for
Locales. Previous versions of JDK were missing a constructor from {{Locale#toString()}} back
to a locale, so we had our own, which was broken several times after the JDK changed their
Locale internals.
> This patch will do the following:
> - When printing the reproduce line, it will use {{Locale#getLanguageTag()}}, so you can
identify the locale in standardized form. Most notable change is (next to more flexibility
around asian languages) the change away from undescores. So it prints "en-US", not "en_US".
> - The code that parses a locale uses Locale's Builder and sets the language tag. This
will fail if the tag is invalid! A trap is {{Locale#forLanguageTag}}, because this one silently
returns root locale if unparseable...
> - The random locale is choosen from all language tags, which are extracted from the JDK
as a {{String[]}} array.
> I would also like to place {{Locale#forLanguageTag}} on the forbidden list and disallow
directly calling {{Locale#toString()}}, the latter is legacy API (according to Java 7 Javadocs).
This would fail code that calls toString() directly, e.g. when formatting stuff like {{"my
Locale: " + locale}}. Of course we cannot catch all bad uses.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message