From cd57b969289f568da79e41fffe451aa0ed837722 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 28 Jan 2009 23:43:17 +0000
Subject: [PATCH] Fix issue 3446 and improve fix for issue 3726:

---
 opends/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java |   27 ++++++++++-----------------
 1 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/opends/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java b/opends/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java
index 4310cb5..d9f57ac 100644
--- a/opends/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java
+++ b/opends/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.extensions;
 import org.opends.messages.Message;
@@ -30,8 +30,10 @@
 
 
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.MemberVirtualAttributeCfg;
@@ -40,7 +42,6 @@
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.SearchOperation;
-import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
@@ -56,7 +57,6 @@
 
 import static org.opends.server.loggers.debug.DebugLogger.*;
 import org.opends.server.loggers.debug.DebugTracer;
-import static org.opends.server.util.ServerConstants.*;
 
 
 
@@ -74,10 +74,6 @@
    */
   private static final DebugTracer TRACER = getTracer();
 
-  // The attribute type used to indicate which target group should be used to
-  // obtain the member list.
-  private AttributeType targetGroupType;
-
   // The current configuration for this member virtual attribute.
   private MemberVirtualAttributeCfg currentConfig;
 
@@ -106,9 +102,6 @@
   {
     configuration.addMemberChangeListener(this);
     currentConfig = configuration;
-
-    targetGroupType =
-         DirectoryServer.getAttributeType(ATTR_TARGET_GROUP_DN, true);
   }
 
 
@@ -128,21 +121,21 @@
    * {@inheritDoc}
    */
   @Override()
-  public LinkedHashSet<AttributeValue> getValues(Entry entry,
-                                                 VirtualAttributeRule rule)
+  public Set<AttributeValue> getValues(Entry entry,
+                                       VirtualAttributeRule rule)
   {
     if (! currentConfig.isAllowRetrievingMembership())
     {
-      return new LinkedHashSet<AttributeValue>(0);
+      return Collections.emptySet();
     }
 
     Group g = DirectoryServer.getGroupManager().getGroupInstance(entry.getDN());
     if (g == null)
     {
-      return new LinkedHashSet<AttributeValue>(0);
+      return Collections.emptySet();
     }
 
-    LinkedHashSet<AttributeValue> values = new LinkedHashSet<AttributeValue>();
+    HashSet<AttributeValue> values = new HashSet<AttributeValue>();
     try
     {
       MemberList memberList = g.getMembers();
@@ -174,7 +167,7 @@
       }
     }
 
-    return values;
+    return Collections.unmodifiableSet(values);
   }
 
 

--
Gitblit v1.10.0