OPENDJ-1308 Migrate schema support
Moved JE backend indexer code closer to the SDK's IndexQueryFactory.
Removed a lot of duplicated code by relying more on the ExtensibleIndexer.
ExtensibleIndexer.java:
Removed getKeys(AttributeValue, Map<byte[], Boolean>, Boolean) + Moved its code to JEExtensibleIndexer.
Moved computeModifiedKeys() to JEExtensibleIndexer.
ApproximateIndexer.java, EqualityIndexer.java, OrderingIndexer.java, SubstringIndexer.java:
Now extends ExtensibleIndexer.
Removed all code made redundant by new superclass.
Added getIndexID() (not implemented).
Added getExtensibleIndexID().
Kept getKeys(AttributeValue, Set<byte[]>).
CollationMatchingRuleFactory.java:
Extracted method addLengthAndBytes().
Inlined substringKeys(ByteString, Set<byte[]>) code into CollationSubstringExtensibleIndexer.getKeys().
Removed substringKeys(ByteString, Map<byte[], Boolean>, Boolean) and CollationSubstringExtensibleIndexer.getKeys(AttributeValue, Map<byte[], Boolean>), duplicates of ExtensibleIndexer.getKeys(AttributeValue, Map<byte[], Boolean>, Boolean).
JEExtensibleIndexer.java:
In ctor, accepted MatchingRule instead of ExtensibleMatchingRule.
In indexAttribute(List<Attribute>, Map<byte[], Boolean>, Boolean), called indexAttribute(List<Attribute>, Set<byte[]>) + put code from ExtensibleIndexer.getKeys(AttributeValue, Map<byte[], Boolean>, Boolean) here.
Moved ExtensibleIndexer.computeModifiedKeys() here.
AttributeIndex.java:
Extracted methods buildExtIndex(), openNewIndex(), open(), addEntry(), removeEntry(), modifyEntry(), setTrusted(), setRebuildStatus(), addIfNotNull().
In close(), used Utils.closeSilently().
Extracted method evaluateOrderingFilter() to factorize code for evaluateGreaterOrEqualFilter() and evaluateLessOrEqualFilter().
In applyConfigurationChange(), removed all catch(DatabaseException) because they are duplicating the larger catch(Exception) in this method + made adminActionRequired an AtomicBoolean to use it as in/out parameter.
DatabaseContainer.java:
Now implements Closeable + Made close() public.
NullIndex.java:
Made close() public.
Removed all synchronized keywords, totally unnecessary here.
TestBackendImpl.java:
Consequence of all the changes above.
Used static imports.