From 781c0f528e641593c3c0a6ba2dede19919c29d72 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 26 May 2015 08:39:56 +0000
Subject: [PATCH] OPENDJ-2016 Implement new on disk merge import strategy based on storage engine

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java
index 42e21d0..319dffb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java
@@ -44,8 +44,10 @@
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ByteStringBuilder;
 import org.forgerock.opendj.ldap.DecodeException;
+import org.forgerock.util.Reject;
 import org.opends.server.api.CompressedSchema;
 import org.opends.server.backends.pluggable.spi.Cursor;
+import org.opends.server.backends.pluggable.spi.Importer;
 import org.opends.server.backends.pluggable.spi.ReadableTransaction;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
@@ -323,6 +325,7 @@
   public void put(WriteableTransaction txn, EntryID id, Entry entry)
        throws StorageRuntimeException, DirectoryException
   {
+    Reject.ifNull(txn);
     ByteString key = id.toByteString();
     EntryCodec codec = acquireEntryCodec();
     try
@@ -337,6 +340,32 @@
   }
 
   /**
+   * Write a record in the entry tree.
+   *
+   * @param importer a non null importer
+   * @param id The entry ID which forms the key.
+   * @param entry The LDAP entry.
+   * @throws StorageRuntimeException If an error occurs in the storage.
+   * @throws DirectoryException  If a problem occurs while attempting to encode the entry.
+   */
+  public void importPut(Importer importer, EntryID id, Entry entry)
+       throws StorageRuntimeException, DirectoryException
+  {
+    Reject.ifNull(importer);
+    ByteString key = id.toByteString();
+    EntryCodec codec = acquireEntryCodec();
+    try
+    {
+      ByteString value = codec.encodeInternal(entry, dataConfig);
+      importer.put(getName(), key, value);
+    }
+    finally
+    {
+      codec.release();
+    }
+  }
+
+  /**
    * Remove a record from the entry tree.
    *
    * @param txn a non null transaction

--
Gitblit v1.10.0