Get rid of too much ByteBuffer to ByteString conversions.
I kept the code close to was happening with ByteBuffer, i.e. avoiding too many allocations (I suppose).
Maybe it would be simpler to convert everything to use ByteStrings?
ImportIDSet.java:
Converted key field from ByteBuffer to a ByteSequence + changed getter return type + removed now unused setter.
Added ByteSequence key parameter to constructor.
Removed keyToByteString(), superseded by getKey().
Index.java:
In delete(WriteableStorage, ByteSequence key, ImportIDSet) and insert(WriteableStorage, ByteSequence key, ImportIDSet), removed the key parameter, because it can be accessed via ImportIDSet.getKey().
IndexOutputBuffer.java:
Changed keyBuffer field from ByteBuffer to ByteStringBuilder + simplified the code where it was used + changed getKeyBuf() return type.
Added -compare(ByteStringBuilder, ByteStringBuilder).
IndexInputBuffer.java:
In fetchKey() and compare(), changed key parameter from ByteBuffer to ByteStringBuilder.
Changed keyBuffer field from ByteBuffer to ByteStringBuilder + simplified the code where it was used.
Importer.java:
Replaced ByteBuffer with a mixture of ByteSequences. Used ByteStringBuilder where avoiding unnecessary allocations seemed interesting. Otherwise used a ByteString.
Extracted method newImportIDSet().
In IndexDBWriteTask.call(), simplified the code.
Renamed ImportIDSet record to idSet.
In DNState:
- Removed toByteString() and deepCopy(), now unnecessary
- Removed dnKey and dnValue field, replaced by ImportIDset.getKey() and entryID
- Added dn2id field for readability
- Changed DNState.writeToDB() to dnState.writeToDN2ID(ImportIDset)
- Extracted methods getId2childtreeImportIDSet() and getId2subtreeImportIDSet().