From fc2267b6e73ca9707f8eaaf37f3c6d730944f1ae Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 22 Sep 2014 13:26:33 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1206 : Create a new ReplicationBackend/ChangelogBackend   to support cn=changelog CR-4036

---
 opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java |   61 +++++++++++++++++-------------
 1 files changed, 35 insertions(+), 26 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
index 957d470..c1f52c6 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -490,14 +490,40 @@
     NetworkGroup.getAdminNetworkGroup().registerWorkflow(workflowImpl);
     NetworkGroup.getInternalNetworkGroup().registerWorkflow(workflowImpl);
 
-    DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
-        "lastexternalchangelogcookie", new LastCookieVirtualProvider()));
-    DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
-        "firstchangenumber", new FirstChangeNumberVirtualAttributeProvider()));
-    DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
-        "lastchangenumber", new LastChangeNumberVirtualAttributeProvider()));
-    DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
-        "changelog", new ChangelogBaseDNVirtualAttributeProvider()));
+    registerVirtualAttributeRules();
+  }
+
+  private List<VirtualAttributeRule> getVirtualAttributesRules() throws DirectoryException
+  {
+    final List<VirtualAttributeRule> rules = new ArrayList<VirtualAttributeRule>();
+    rules.add(buildVirtualAttributeRule("lastexternalchangelogcookie", new LastCookieVirtualProvider(this)));
+    rules.add(buildVirtualAttributeRule("firstchangenumber", new FirstChangeNumberVirtualAttributeProvider(this)));
+    rules.add(buildVirtualAttributeRule("lastchangenumber", new LastChangeNumberVirtualAttributeProvider(this)));
+    rules.add(buildVirtualAttributeRule("changelog", new ChangelogBaseDNVirtualAttributeProvider()));
+    return rules;
+  }
+
+  private void registerVirtualAttributeRules() throws DirectoryException {
+    for (VirtualAttributeRule rule : getVirtualAttributesRules())
+    {
+      DirectoryServer.registerVirtualAttribute(rule);
+    }
+  }
+
+  private void deregisterVirtualAttributeRules()
+  {
+    try
+    {
+      for (VirtualAttributeRule rule : getVirtualAttributesRules())
+      {
+        DirectoryServer.deregisterVirtualAttribute(rule);
+      }
+    }
+    catch (DirectoryException e)
+    {
+      // Should never happen
+      throw new RuntimeException(e);
+    }
   }
 
   private static VirtualAttributeRule buildVirtualAttributeRule(String attrName,
@@ -545,24 +571,7 @@
 
       NetworkGroup.getDefaultNetworkGroup().deregisterWorkflow(eclWorkflowID);
 
-      try
-      {
-        DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
-            "lastexternalchangelogcookie", new LastCookieVirtualProvider()));
-        DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
-            "firstchangenumber",
-            new FirstChangeNumberVirtualAttributeProvider()));
-        DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
-            "lastchangenumber",
-            new LastChangeNumberVirtualAttributeProvider()));
-        DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
-            "changelog", new ChangelogBaseDNVirtualAttributeProvider()));
-      }
-      catch (DirectoryException e)
-      {
-        // Should never happen
-        throw new RuntimeException(e);
-      }
+      deregisterVirtualAttributeRules();
 
       eclwf.deregister();
       eclwf.finalizeWorkflow();

--
Gitblit v1.10.0