From c83be52eb129b9bf0fb028ee6407ca45da9d37ca Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Wed, 13 Sep 2006 08:20:46 +0000
Subject: [PATCH] Synchronization feature: Implementation of the changeListner method for the Synchronization plugin Implemented by Gilles, Reviewed an tested by Daniel

---
 opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java |   64 +++++++++++++++++++++++++++----
 1 files changed, 55 insertions(+), 9 deletions(-)

diff --git a/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java b/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java
index 428c528..a52c7a6 100644
--- a/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java
+++ b/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java
@@ -113,7 +113,6 @@
 
   private BooleanConfigAttribute receiveStatusStub;
   private int listenerThreadNumber = 10;
-  private StringConfigAttribute changelogStub;
   private boolean receiveStatus = true;
 
   private List<String> changelogServers;
@@ -138,6 +137,17 @@
   static String MAX_SEND_QUEUE = "ds-cfg-max-send-queue";
   static String MAX_SEND_DELAY = "ds-cfg-max-send-delay";
 
+  private static final StringConfigAttribute changelogStub =
+    new StringConfigAttribute(CHANGELOG_SERVER_ATTR,
+        "changelog server information", true, true, false);
+
+  private static final IntegerConfigAttribute serverIdStub =
+    new IntegerConfigAttribute(SERVER_ID_ATTR, "server ID", true, false,
+                               false, true, 0, true, 65535);
+
+  private static final DNConfigAttribute baseDnStub =
+    new DNConfigAttribute(BASE_DN_ATTR, "synchronization base DN",
+                          true, false, false);
 
   /**
    * Creates a new SynchronizationDomain using configuration from configEntry.
@@ -153,8 +163,6 @@
      * read the centralized changelog server configuration
      * this is a multivalued attribute
      */
-    changelogStub = new StringConfigAttribute(CHANGELOG_SERVER_ATTR,
-        "changelog server information", true, true, false);
     StringConfigAttribute changelogServer =
       (StringConfigAttribute) configEntry.getConfigAttribute(changelogStub);
 
@@ -171,9 +179,6 @@
      * read the server Id information
      * this is a single valued integer, its value must fit on a short integer
      */
-    IntegerConfigAttribute serverIdStub =
-      new IntegerConfigAttribute(SERVER_ID_ATTR, "server ID", true, false,
-                                 false, true, 0, true, 65535);
     IntegerConfigAttribute serverIdAttr =
       (IntegerConfigAttribute) configEntry.getConfigAttribute(serverIdStub);
     if (serverIdAttr == null)
@@ -188,9 +193,6 @@
     /*
      * read the base DN
      */
-    DNConfigAttribute baseDnStub =
-      new DNConfigAttribute(BASE_DN_ATTR, "synchronization base DN",
-                            true, false, false);
     DNConfigAttribute baseDn =
       (DNConfigAttribute) configEntry.getConfigAttribute(baseDnStub);
     if (baseDn == null)
@@ -1583,4 +1585,48 @@
     }
   }
 
+  /**
+   * Check if a ConfigEntry is valid.
+   * @param configEntry The config entry that needs to be checked.
+   * @param unacceptableReason A description of the reason why the config entry
+   *                           is not acceptable (if return is false).
+   * @return a boolean indicating if the configEntry is valid.
+   */
+  public static boolean checkConfigEntry(ConfigEntry configEntry,
+      StringBuilder unacceptableReason)
+  {
+    try
+    {
+    StringConfigAttribute changelogServer =
+      (StringConfigAttribute) configEntry.getConfigAttribute(changelogStub);
+
+    if (changelogServer == null)
+    {
+      unacceptableReason.append(
+          MessageHandler.getMessage(MSGID_NEED_CHANGELOG_SERVER,
+          configEntry.getDN().toString()) );
+      return false;
+    }
+
+    /*
+     * read the server Id information
+     * this is a single valued integer, its value must fit on a short integer
+     */
+    IntegerConfigAttribute serverIdAttr =
+      (IntegerConfigAttribute) configEntry.getConfigAttribute(serverIdStub);
+    if (serverIdAttr == null)
+    {
+      unacceptableReason.append(
+          MessageHandler.getMessage(MSGID_NEED_SERVER_ID,
+              configEntry.getDN().toString()) );
+      return false;
+    }
+    }
+    catch (ConfigException e)
+    {
+      unacceptableReason.append(e.getMessage());
+      return false;
+    }
+    return true;
+  }
 }

--
Gitblit v1.10.0