From 8b1a3529580def922b2188a998fdebb65c756de0 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 27 Jan 2015 09:27:30 +0000
Subject: [PATCH] OPENDJ-1716 Various PluggableBackend/Storage refactorings Code review: Nicolas Capponi

---
 opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java |   40 +++++++++++++++++++---------------------
 1 files changed, 19 insertions(+), 21 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java b/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java
index 0dde90e..c4d9dae 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java
@@ -267,13 +267,13 @@
     }
 
     @Override
-    public void delete(final TreeName treeName, final ByteSequence key)
+    public boolean delete(final TreeName treeName, final ByteSequence key)
     {
       try
       {
         final Exchange ex = getExchangeFromCache(treeName);
         bytesToKey(ex.getKey(), key);
-        ex.remove();
+        return ex.remove();
       }
       catch (final PersistitException e)
       {
@@ -388,21 +388,6 @@
     }
 
     @Override
-    public boolean remove(final TreeName treeName, final ByteSequence key)
-    {
-      try
-      {
-        final Exchange ex = getExchangeFromCache(treeName);
-        bytesToKey(ex.getKey(), key);
-        return ex.remove();
-      }
-      catch (final PersistitException e)
-      {
-        throw new StorageRuntimeException(e);
-      }
-    }
-
-    @Override
     public void renameTree(final TreeName oldTreeName,
         final TreeName newTreeName)
     {
@@ -423,8 +408,7 @@
     }
 
     @Override
-    public void update(final TreeName treeName, final ByteSequence key,
-        final UpdateFunction f)
+    public boolean update(final TreeName treeName, final ByteSequence key, final UpdateFunction f)
     {
       try
       {
@@ -433,8 +417,13 @@
         ex.fetch();
         final ByteSequence oldValue = valueToBytes(ex.getValue());
         final ByteSequence newValue = f.computeNewValue(oldValue);
-        ex.getValue().clear().putByteArray(newValue.toByteArray());
-        ex.store();
+        if (!equals(newValue, oldValue))
+        {
+          ex.getValue().clear().putByteArray(newValue.toByteArray());
+          ex.store();
+          return true;
+        }
+        return false;
       }
       catch (final Exception e)
       {
@@ -442,6 +431,15 @@
       }
     }
 
+    private boolean equals(ByteSequence b1, ByteSequence b2)
+    {
+      if (b1 == null)
+      {
+        return b2 == null;
+      }
+      return b1.equals(b2);
+    }
+
     private Exchange getExchangeFromCache(final TreeName treeName)
         throws PersistitException
     {

--
Gitblit v1.10.0