From 02bbeacbfb05101989dac510cbef7815fdf28a2e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 01 Sep 2014 12:51:46 +0000
Subject: [PATCH] OPENDJ-1206 (CR-4393) Create a new ReplicationBackend/ChangelogBackend to support cn=changelog

---
 opends/src/server/org/opends/server/core/PersistentSearch.java |   44 ++++++++++++++++++++++++++++----------------
 1 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/PersistentSearch.java b/opends/src/server/org/opends/server/core/PersistentSearch.java
index 41b7d22..329cd94 100644
--- a/opends/src/server/org/opends/server/core/PersistentSearch.java
+++ b/opends/src/server/org/opends/server/core/PersistentSearch.java
@@ -34,13 +34,7 @@
 import org.opends.server.controls.EntryChangeNotificationControl;
 import org.opends.server.controls.PersistentSearchChangeType;
 import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.types.CancelResult;
-import org.opends.server.types.Control;
-import org.opends.server.types.DN;
-import org.opends.server.types.DebugLogLevel;
-import org.opends.server.types.DirectoryException;
-import org.opends.server.types.Entry;
-import org.opends.server.types.ResultCode;
+import org.opends.server.types.*;
 
 import static org.opends.server.controls.PersistentSearchChangeType.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -113,10 +107,8 @@
       psearch.isCancelled = true;
 
       // The persistent search can no longer be cancelled.
-      psearch.searchOperation.getClientConnection().deregisterPersistentSearch(
-          psearch);
+      psearch.searchOperation.getClientConnection().deregisterPersistentSearch(psearch);
 
-      //Decrement of psearch count maintained by the server.
       DirectoryServer.deregisterPersistentSearch();
 
       // Notify any cancellation callbacks.
@@ -161,25 +153,33 @@
   /** The reference to the associated search operation. */
   private final SearchOperation searchOperation;
 
-
+  /**
+   * Indicates whether to only return entries that have been updated since the
+   * beginning of the search.
+   */
+  private final boolean changesOnly;
 
   /**
-   * Creates a new persistent search object with the provided
-   * information.
+   * Creates a new persistent search object with the provided information.
    *
    * @param searchOperation
    *          The search operation for this persistent search.
    * @param changeTypes
    *          The change types for which changes should be examined.
+   * @param changesOnly
+   *          whether to only return entries that have been updated since the
+   *          beginning of the search
    * @param returnECs
-   *          Indicates whether to include entry change notification
-   *          controls in search result entries sent to the client.
+   *          Indicates whether to include entry change notification controls in
+   *          search result entries sent to the client.
    */
   public PersistentSearch(SearchOperation searchOperation,
-      Set<PersistentSearchChangeType> changeTypes, boolean returnECs)
+      Set<PersistentSearchChangeType> changeTypes, boolean changesOnly,
+      boolean returnECs)
   {
     this.searchOperation = searchOperation;
     this.changeTypes = changeTypes;
+    this.changesOnly = changesOnly;
     this.returnECs = returnECs;
   }
 
@@ -241,6 +241,18 @@
   }
 
   /**
+   * Returns whether only entries updated after the beginning of this persistent
+   * search should be returned.
+   *
+   * @return true if only entries updated after the beginning of this search
+   *         should be returned, false otherwise
+   */
+  public boolean isChangesOnly()
+  {
+    return changesOnly;
+  }
+
+  /**
    * Notifies the persistent searches that an entry has been added.
    *
    * @param entry

--
Gitblit v1.10.0