From 1345ac0dfae9a555abb7b74ed48452d9bc92b8c3 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 22 Jul 2014 13:44:30 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1206 : Create a new ReplicationBackend/ChangelogBackend to support cn=changelog

---
 opends/src/server/org/opends/server/api/Backend.java |  135 +++++++++++++++++---------------------------
 1 files changed, 53 insertions(+), 82 deletions(-)

diff --git a/opends/src/server/org/opends/server/api/Backend.java b/opends/src/server/org/opends/server/api/Backend.java
index 370a7a3..ebbd4be 100644
--- a/opends/src/server/org/opends/server/api/Backend.java
+++ b/opends/src/server/org/opends/server/api/Backend.java
@@ -22,77 +22,63 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.api;
-import org.opends.messages.Message;
-
-
 
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.opends.messages.Message;
 import org.opends.server.admin.Configuration;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.AddOperation;
-import org.opends.server.core.DeleteOperation;
-import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.SearchOperation;
+import org.opends.server.core.*;
 import org.opends.server.monitors.BackendMonitor;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.BackupConfig;
-import org.opends.server.types.BackupDirectory;
-import org.opends.server.types.CanceledOperationException;
-import org.opends.server.types.DirectoryException;
-import org.opends.server.types.DN;
-import org.opends.server.types.Entry;
-import org.opends.server.types.IndexType;
-import org.opends.server.types.InitializationException;
-import org.opends.server.types.LDIFExportConfig;
-import org.opends.server.types.LDIFImportConfig;
-import org.opends.server.types.LDIFImportResult;
-import org.opends.server.types.RestoreConfig;
-import org.opends.server.types.SearchFilter;
-import org.opends.server.types.WritabilityMode;
-import org.opends.server.types.ConditionResult;
+import org.opends.server.types.*;
 
 import static org.opends.messages.BackendMessages.*;
 
-
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented for a Directory Server backend.
+ *
+ * @param <C>
+ *          the type of the BackendCfg for the current backend
  */
 @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.VOLATILE,
      mayInstantiate=false,
      mayExtend=true,
      mayInvoke=false)
-public abstract class Backend
+public abstract class Backend<C extends Configuration>
+// should have been BackendCfg instead of Configuration
 {
-  // The backend that holds a portion of the DIT that is
-  // hierarchically above the information in this backend.
-  private Backend parentBackend;
+  /**
+   * The backend that holds a portion of the DIT that is hierarchically above
+   * the information in this backend.
+   */
+  private Backend<?> parentBackend;
 
-  // The set of backends that hold portions of the DIT that are
-  // hierarchically below the information in this backend.
-  private Backend[] subordinateBackends;
+  /**
+   * The set of backends that hold portions of the DIT that are hierarchically
+   * below the information in this backend.
+   */
+  private Backend<?>[] subordinateBackends;
 
-  // The backend monitor associated with this backend.
+  /** The backend monitor associated with this backend. */
   private BackendMonitor backendMonitor;
 
-  // Indicates whether this is a private backend or one that holds
-  // user data.
+  /**
+   * Indicates whether this is a private backend or one that holds user data.
+   */
   private boolean isPrivateBackend;
 
-  // The unique identifier for this backend.
+  /** The unique identifier for this backend. */
   private String backendID;
 
-  // The writability mode for this backend.
+  /** The writability mode for this backend. */
   private WritabilityMode writabilityMode;
 
 
@@ -123,8 +109,7 @@
    * @throws  ConfigException
    *                      If there is an error in the configuration.
    */
-  public abstract void configureBackend(Configuration cfg)
-         throws ConfigException;
+  public abstract void configureBackend(C cfg) throws ConfigException;
 
 
 
@@ -148,7 +133,7 @@
    *          for this backend, or {@code false} if not.
    */
   public boolean isConfigurationAcceptable(
-                      Configuration configuration,
+                      C configuration,
                       List<Message> unacceptableReasons)
   {
     // This default implementation does not perform any special
@@ -329,7 +314,7 @@
             return false;
           }
         }
-        return (! filter.getFilterComponents().isEmpty());
+        return !filter.getFilterComponents().isEmpty();
 
 
       case NOT:
@@ -389,15 +374,7 @@
         {
           matchingRule = attrType.getEqualityMatchingRule();
         }
-
-        if (matchingRule == null)
-        {
-          return false;
-        }
-        else
-        {
-          return isIndexed(attrType, matchingRule);
-        }
+        return matchingRule != null && isIndexed(attrType, matchingRule);
 
 
       default:
@@ -483,7 +460,7 @@
   public boolean entryExists(DN entryDN)
          throws DirectoryException
   {
-    return (getEntry(entryDN) != null);
+    return getEntry(entryDN) != null;
   }
 
 
@@ -641,8 +618,7 @@
   public final boolean supportsControl(String controlOID)
   {
     Set<String> supportedControls = getSupportedControls();
-    return ((supportedControls != null) &&
-            supportedControls.contains(controlOID));
+    return supportedControls != null && supportedControls.contains(controlOID);
   }
 
 
@@ -670,8 +646,7 @@
   public final boolean supportsFeature(String featureOID)
   {
     Set<String> supportedFeatures = getSupportedFeatures();
-    return ((supportedFeatures != null) &&
-            supportedFeatures.contains(featureOID));
+    return supportedFeatures != null && supportedFeatures.contains(featureOID);
   }
 
 
@@ -964,7 +939,7 @@
    * @return  The parent backend for this backend, or {@code null} if
    *          there is none.
    */
-  public final Backend getParentBackend()
+  public final Backend<?> getParentBackend()
   {
     return parentBackend;
   }
@@ -976,7 +951,7 @@
    *
    * @param  parentBackend  The parent backend for this backend.
    */
-  public final void setParentBackend(Backend parentBackend)
+  public final void setParentBackend(Backend<?> parentBackend)
   {
     synchronized (this)
     {
@@ -992,7 +967,7 @@
    * @return  The set of subordinate backends for this backend, or an
    *          empty array if none exist.
    */
-  public final Backend[] getSubordinateBackends()
+  public final Backend<?>[] getSubordinateBackends()
   {
     return subordinateBackends;
   }
@@ -1006,7 +981,7 @@
    *                              this backend.
    */
   public final void setSubordinateBackends(
-                         Backend[] subordinateBackends)
+                         Backend<?>[] subordinateBackends)
   {
     synchronized (this)
     {
@@ -1030,8 +1005,7 @@
    */
   public final boolean hasSubSuffix(DN subSuffixDN)
   {
-    Backend[] subBackends = subordinateBackends;
-    for (Backend b : subBackends)
+    for (Backend<?> b : subordinateBackends)
     {
       for (DN baseDN : b.getBaseDNs())
       {
@@ -1072,9 +1046,9 @@
     synchronized (this)
     {
       boolean matchFound = false;
-      ArrayList<Backend> subBackendList =
-           new ArrayList<Backend>(subordinateBackends.length);
-      for (Backend b : subordinateBackends)
+      ArrayList<Backend<?>> subBackendList =
+           new ArrayList<Backend<?>>(subordinateBackends.length);
+      for (Backend<?> b : subordinateBackends)
       {
         boolean thisMatches = false;
         DN[] subBaseDNs = b.getBaseDNs();
@@ -1112,7 +1086,7 @@
 
       if (matchFound)
       {
-        Backend[] newSubordinateBackends =
+        Backend<?>[] newSubordinateBackends =
              new Backend[subBackendList.size()];
         subBackendList.toArray(newSubordinateBackends);
         subordinateBackends = newSubordinateBackends;
@@ -1130,21 +1104,20 @@
    *                             subordinate backends for this
    *                             backend.
    */
-  public final void addSubordinateBackend(Backend subordinateBackend)
+  public final void addSubordinateBackend(Backend<?> subordinateBackend)
   {
     synchronized (this)
     {
-      LinkedHashSet<Backend> backendSet =
-           new LinkedHashSet<Backend>();
+      LinkedHashSet<Backend<?>> backendSet = new LinkedHashSet<Backend<?>>();
 
-      for (Backend b : subordinateBackends)
+      for (Backend<?> b : subordinateBackends)
       {
         backendSet.add(b);
       }
 
       if (backendSet.add(subordinateBackend))
       {
-        Backend[] newSubordinateBackends =
+        Backend<?>[] newSubordinateBackends =
              new Backend[backendSet.size()];
         backendSet.toArray(newSubordinateBackends);
         subordinateBackends = newSubordinateBackends;
@@ -1163,15 +1136,15 @@
    *                             backend.
    */
   public final void removeSubordinateBackend(
-                         Backend subordinateBackend)
+                         Backend<?> subordinateBackend)
   {
     synchronized (this)
     {
-      ArrayList<Backend> backendList =
-           new ArrayList<Backend>(subordinateBackends.length);
+      ArrayList<Backend<?>> backendList =
+           new ArrayList<Backend<?>>(subordinateBackends.length);
 
       boolean found = false;
-      for (Backend b : subordinateBackends)
+      for (Backend<?> b : subordinateBackends)
       {
         if (b.equals(subordinateBackend))
         {
@@ -1185,7 +1158,7 @@
 
       if (found)
       {
-        Backend[] newSubordinateBackends =
+        Backend<?>[] newSubordinateBackends =
              new Backend[backendList.size()];
         backendList.toArray(newSubordinateBackends);
         subordinateBackends = newSubordinateBackends;
@@ -1207,13 +1180,11 @@
    */
   public final boolean handlesEntry(DN entryDN)
   {
-    DN[] baseDNs = getBaseDNs();
-    for (DN dn : baseDNs)
+    for (DN dn : getBaseDNs())
     {
       if (entryDN.isDescendantOf(dn))
       {
-        Backend[] subBackends = subordinateBackends;
-        for (Backend b : subBackends)
+        for (Backend<?> b : subordinateBackends)
         {
           if (b.handlesEntry(entryDN))
           {
@@ -1249,7 +1220,7 @@
     {
       if (entryDN.isDescendantOf(baseDN))
       {
-        if ((excludeDNs == null) || excludeDNs.isEmpty())
+        if (excludeDNs == null || excludeDNs.isEmpty())
         {
           return true;
         }

--
Gitblit v1.10.0