From ab6b91549fb29d412bae6a8cb819ea9ac1acfa20 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Sat, 20 Jun 2009 01:21:13 +0000
Subject: [PATCH] Fix for issue 4064 (references to old replication server exist after dsreplication disable) Remove the references to the different server groups in the server that is being unregistered.

---
 opendj-sdk/opends/src/ads/org/opends/admin/ads/ADSContext.java |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opends/src/ads/org/opends/admin/ads/ADSContext.java b/opendj-sdk/opends/src/ads/org/opends/admin/ads/ADSContext.java
index 09a7d1f..8dcddd2 100644
--- a/opendj-sdk/opends/src/ads/org/opends/admin/ads/ADSContext.java
+++ b/opendj-sdk/opends/src/ads/org/opends/admin/ads/ADSContext.java
@@ -557,6 +557,29 @@
       {
         unregisterInstanceKeyCertificate(serverProperties, dn);
       }
+
+      // Unregister the server from the server groups.
+      String member = "cn="
+        + Rdn.escapeValue(serverProperties.get(ServerProperty.ID));
+      Set<Map<ServerGroupProperty, Object>> serverGroups =
+        readServerGroupRegistry();
+      for (Map<ServerGroupProperty, Object> serverGroup : serverGroups)
+      {
+        Set<?> memberList =
+          (Set<?>)serverGroup.get(ServerGroupProperty.MEMBERS);
+        if (memberList != null)
+        {
+          if (memberList.remove(member))
+          {
+            HashMap<ServerGroupProperty, Object> serverGroupProperties =
+              new HashMap<ServerGroupProperty, Object>();
+            serverGroupProperties.put(ServerGroupProperty.MEMBERS, memberList);
+            String groupName = (String)serverGroup.get(ServerGroupProperty.UID);
+            updateServerGroup(groupName, serverGroupProperties);
+          }
+        }
+      }
+
       dirContext.destroySubcontext(dn);
     }
     catch (NameNotFoundException x)

--
Gitblit v1.10.0