OPENDJ-1602 New pluggable storage based backend
Removed Storage.openCursor() in order to always open a cursor from a ReadableStorage object.
IndexQueryFactoryImpl required some rejuggling: Previously, we had one IndexQueryFactory object for each AttributeIndex in resident memory. After current change we will create one IndexQueryFactory object before evaluating each leaf sub filters. It would be worth revisiting this at some point in the future.
Storage.java:
Removed openCursor().
ExportJob.java:
In exportLDIF() and exportContainer(), created and used a ReadableStorage to open a cursor.
Index.java, NullIndex.java:
In readRange(), added a ReadableStorage parameter to open a cursor.
AttributeIndex.java:
Added a ReadableStorage parameter to the constructor.
Removed indexQueryFactory field.
Added indexingOptions field which was previously held inside the indexQueryFactory.
Extracted method getIndexById() and made it public.
In several evaluate*() methods, added an IndexQueryFactory parameter.
EntryContainer.java:
Consequence of the change to the AttributeIndex constructor.
IndexFilter.java:
In evaluate*Filter(), created a new IndexQueryFactoryImpl before calling AttributeIndex.evaluate*() methods.
IndexQueryFactoryImpl.java:
Changed the constructor to accept an AttributeIndex parameter + removed the two previous parameters which can be inferred from the new parameter.
In several methods, make use of AttributeIndex.getIndexById() method.
In getIndexingOptions(), now call AttributeIndex.getIndexingOptions().