A problem I've discovered when testing with the phoneME advanced platform is that the collationtests expect other locales than Locale.US to be available on the platform that is used for the test, and for phoneME advanced (when compiled as foundation profile) only Locale.US is available. From the jdk1.6 javadoc of Collator.getAvailableLocales() I see that only Locale.US is strictly required:

public static Locale 
<http://java.sun.com/javase/6/docs/api/java/util/Locale.html>[] 
*getAvailableLocales*()

   Returns an array of all locales for which the |getInstance| methods
   of this class can return localized instances. The returned array
   represents the union of locales supported by the Java runtime and by
   installed |CollatorProvider|
   <http://java.sun.com/javase/6/docs/api/java/text/spi/CollatorProvider.html>
   implementations. It must contain at least a Locale instance equal to
   |Locale.US|
   <http://java.sun.com/javase/6/docs/api/java/util/Locale.html#US>.

   *Returns:*
       An array of locales for which localized |Collator| instances are
       available.


My thought on this is to change the collationtests to check if for instance a Collator for polish locale is available before running the test for polish collation.

This however led me to thinking about how Derby should behave if created/booted with collation=TERRITORY_BASED and territory=<some unsupported locale>. I'm not sure what the consequences could be if the database is first created on a platform that supports whatever locale is set and later booted with one that doesn't, or created on a platform missing support and later booted with one that has. In any case I think it may confuse a user needlessly to see the database boot successfully with his collation setting and later behave in a way he does not expect.

So, should database creation/boot fail if the collation is territory based and the locale is not supported?

Vemund

Reply via email to