Bug fix to DefaultKeyBuilderFactory, which was passing the default into properties.getProperty(key,def) and therefore was never testing System.getProperty(key,def). This was causing the ICU collator to always be chosen by this code path even when the collator had been explicitly set as a JVM property.
Added final in a bunch of places to ICUSortKeyGenerator.
Removed logic in the GlobalRowStoreHelper which was forcing the ASCII collator when the JDK collator had been requested due to a historical problem with the JDK collator and the global row store.
In order to use the JDK collator you must now turn on unicode clean support in the SparseRowStore class. Since this breaks binary compatibility (for both the JDK and ICU collator options), I plan to do this as part of our next release.
Improved the inline comments in KeyDecoder regarding the ArrayIndexOutOfBoundsException.
To verify that this fixes the JDK collator issue: (1) modify the ICUSortKeyGenerator to always throw an exception out of its constructor; (2) specify "-Dcom.bigdata.btree.keys.KeyBuilder.collator=JDK" on the command line to select the JDK collator; (3) specify "-Dcom.bigdata.sparse.Schema.schemaName.unicodeClean=true" on the command line; and (4) run any unit test which create a triple store but does not explicitly specify the CollatorEnum option.