From 56e752193bfb90d11cfe73c35a24e576b9b18c87 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 03 Jul 2013 11:03:06 +0000
Subject: [PATCH] First stab at having debuggable ACIs.

---
 opends/src/server/org/opends/server/authorization/dseecompat/GroupDN.java |   52 ++++++++++++++++++++++++++++++++--------------------
 1 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/opends/src/server/org/opends/server/authorization/dseecompat/GroupDN.java b/opends/src/server/org/opends/server/authorization/dseecompat/GroupDN.java
index 7402d3b..3f5a0bc 100644
--- a/opends/src/server/org/opends/server/authorization/dseecompat/GroupDN.java
+++ b/opends/src/server/org/opends/server/authorization/dseecompat/GroupDN.java
@@ -23,37 +23,33 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS
  */
-
 package org.opends.server.authorization.dseecompat;
-import org.opends.messages.Message;
 
 import static org.opends.messages.AccessControlMessages.*;
 import static org.opends.server.authorization.dseecompat.Aci.*;
-import org.opends.server.types.*;
-import org.opends.server.api.Group;
-import org.opends.server.core.GroupManager;
-import org.opends.server.core.DirectoryServer;
-import java.util.Iterator;
+
 import java.util.LinkedList;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.opends.messages.Message;
+import org.opends.server.api.Group;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.GroupManager;
+import org.opends.server.types.*;
 
 /**
  * This class implements the groupdn bind rule keyword.
  */
 public class GroupDN implements KeywordBindRule {
 
-    /*
-     * List of group DNs.
-     */
-    LinkedList<DN> groupDNs=null;
+    /** List of group DNs. */
+    private List<DN> groupDNs = null;
 
-    /*
-     * Enumeration representing the groupdn operator type.
-     */
+    /** Enumeration representing the groupdn operator type. */
     private EnumBindRuleType type=null;
 
     /**
@@ -69,7 +65,7 @@
      * @param type An enumeration representing the bind rule type.
      * @param groupDNs A list of the dns representing groups.
      */
-    private GroupDN(EnumBindRuleType type, LinkedList<DN> groupDNs ) {
+    private GroupDN(EnumBindRuleType type, List<DN> groupDNs ) {
         this.groupDNs=groupDNs;
         this.type=type;
     }
@@ -89,7 +85,7 @@
                 WARN_ACI_SYNTAX_INVALID_GROUPDN_EXPRESSION.get(expr);
             throw new AciException(message);
         }
-        LinkedList<DN>groupDNs=new LinkedList<DN>();
+        List<DN> groupDNs = new LinkedList<DN>();
         int ldapURLPos = 1;
         Pattern ldapURLPattern = Pattern.compile(LDAP_URL);
         Matcher ldapURLMatcher = ldapURLPattern.matcher(expr);
@@ -115,14 +111,15 @@
      * @param evalCtx  An evaluation context to use  in the evaluation.
      * @return  Enumeration evaluation result.
      */
+    @Override
     public EnumEvalResult evaluate(AciEvalContext evalCtx) {
         EnumEvalResult matched = EnumEvalResult.FALSE;
-       Iterator<DN> it=groupDNs.iterator();
-        for(; it.hasNext() && matched != EnumEvalResult.TRUE;) {
-            DN  groupDN=it.next();
+        for (DN groupDN : groupDNs) {
             Group<?> group = getGroupManager().getGroupInstance(groupDN);
-            if((group != null) && (evalCtx.isMemberOf(group)))
+            if((group != null) && (evalCtx.isMemberOf(group))) {
                matched = EnumEvalResult.TRUE;
+               break;
+            }
         }
         return matched.getRet(type, false);
     }
@@ -167,4 +164,19 @@
     private static GroupManager getGroupManager() {
         return DirectoryServer.getGroupManager();
     }
+
+    /** {@inheritDoc} */
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        toString(sb);
+        return sb.toString();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public final void toString(StringBuilder buffer) {
+        buffer.append(super.toString());
+    }
+
 }

--
Gitblit v1.10.0