From ef7f0adef06694045d2c3a219111849a4077b241 Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Wed, 25 Jul 2007 09:42:50 +0000
Subject: [PATCH] fix for issue #2019 (dsframework delete-group doesn't  update server property "GROUPS")

---
 opendj-sdk/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java
index b6b7920..f8fd6bb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java
@@ -506,22 +506,34 @@
       // -----------------------
       else if (subCmd.getName().equals(deleteGroupSubCmd.getName()))
       {
+        returnCode = ReturnCode.SUCCESSFUL;
         String groupId = deleteGroupGroupNameArg.getValue();
+        if (groupId.equals(ADSContext.ALL_SERVERGROUP_NAME))
+        {
+          return ReturnCode.ACCESS_PERMISSION ;
+        }
         HashMap<ServerGroupProperty, Object> serverGroupProperties =
           new HashMap<ServerGroupProperty, Object>();
 
-        // get the GROUP_ID
-        serverGroupProperties.put(ServerGroupProperty.UID, groupId);
-
-        // Delete the group
+        // Get ADS context
         ctx = argParser.getContext(outStream, errStream);
         if (ctx == null)
         {
           return ReturnCode.CANNOT_CONNECT_TO_ADS;
         }
         adsCtx = new ADSContext(ctx) ;
+
+        // update server Property "GROUPS"
+        Set<String> serverList = adsCtx.getServerGroupMemberList(groupId);
+        for (String serverId : serverList)
+        {
+          // serverId conatins "cn=" string, just remove it.
+          removeServerFromGroup(adsCtx, groupId,serverId.substring(3));
+        }
+
+        // Delete the group
+        serverGroupProperties.put(ServerGroupProperty.UID, groupId);
         adsCtx.deleteServerGroup(serverGroupProperties);
-        returnCode = ReturnCode.SUCCESSFUL;
       }
       // -----------------------
       // list-groups subcommand
@@ -788,6 +800,7 @@
         StringBuffer buffer = new StringBuffer();
         for (String member : memberList)
         {
+          // We shouldn't print out the "cn="
           buffer.append(member.substring(3));
           buffer.append(EOL);
         }

--
Gitblit v1.10.0