private void encodeVolatile(Entry entry, DataConfig dataConfig) throws DirectoryException { // Encode the entry for later use. entry.encode(entryBuffer, dataConfig.getEntryEncodeConfig()); // First write the DB format version byte. encodedBuffer.appendByte(DnKeyFormat.FORMAT_VERSION); try { // Then start the ASN1 sequence. writer.writeStartSequence(TAG_TREE_ENTRY); if (dataConfig.isCompressed()) { OutputStream compressor = null; try { compressor = new DeflaterOutputStream(compressedEntryBuffer.asOutputStream()); entryBuffer.copyTo(compressor); } finally { closeSilently(compressor); } // Compression needed and successful. writer.writeInteger(entryBuffer.length()); writer.writeOctetString(compressedEntryBuffer); } else { writer.writeInteger(0); writer.writeOctetString(entryBuffer); } writer.writeEndSequence(); } catch (IOException ioe) { // TODO: This should never happen with byte buffer. logger.traceException(ioe); } }
private Entry get0(ByteString value) throws Exception { if (value == null) { return null; } final Entry entry = entryFromDatabase(value, dataConfig.getEntryEncodeConfig().getCompressedSchema()); entry.processVirtualAttributes(); return entry; }