From 377b2709c64b32fe93905b466482216c2cc0581c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 19 Mar 2014 16:30:32 +0000
Subject: [PATCH] OPENDJ-1368 (CR-3232) Remove AttributeValue

---
 opendj3-server-dev/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java |   60 +++++++++++-------------------------------------------------
 1 files changed, 11 insertions(+), 49 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java
index 054d5f6..bb2870c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java
@@ -26,7 +26,7 @@
  */
 package org.opends.server.extensions;
 
-import java.util.*;
+import java.util.List;
 
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.ByteString;
@@ -71,34 +71,17 @@
 
   /** {@inheritDoc} */
   @Override()
-  public Set<AttributeValue> getValues(Entry entry,
-                                       VirtualAttributeRule rule)
+  public Attribute getValues(Entry entry, VirtualAttributeRule rule)
   {
     // FIXME -- This probably isn't the most efficient implementation.
-    Set<AttributeValue> values = null;
+    AttributeBuilder builder = new AttributeBuilder(rule.getAttributeType());
     for (Group<?> g : DirectoryServer.getGroupManager().getGroupInstances())
     {
       try
       {
         if (g.isMember(entry))
         {
-          AttributeValue value = AttributeValues.create(
-              rule.getAttributeType(), g.getGroupDN().toString());
-          if (values == null)
-          {
-            values = Collections.singleton(value);
-          }
-          else if (values.size() == 1)
-          {
-            Set<AttributeValue> tmp = new HashSet<AttributeValue>(2);
-            tmp.addAll(values);
-            tmp.add(value);
-            values = tmp;
-          }
-          else
-          {
-            values.add(value);
-          }
+          builder.add(g.getGroupDN().toString());
         }
       }
       catch (Exception e)
@@ -106,12 +89,7 @@
         logger.traceException(e);
       }
     }
-
-    if (values != null)
-    {
-      return Collections.unmodifiableSet(values);
-    }
-    return Collections.emptySet();
+    return builder.toAttribute();
   }
 
   /** {@inheritDoc} */
@@ -140,11 +118,11 @@
   /** {@inheritDoc} */
   @Override()
   public boolean hasValue(Entry entry, VirtualAttributeRule rule,
-                          AttributeValue value)
+                          ByteString value)
   {
     try
     {
-      DN groupDN = DN.decode(value.getValue());
+      DN groupDN = DN.decode(value);
       Group<?> g = DirectoryServer.getGroupManager().getGroupInstance(groupDN);
       return g != null && g.isMember(entry);
     }
@@ -158,22 +136,6 @@
 
   /** {@inheritDoc} */
   @Override()
-  public boolean hasAnyValue(Entry entry, VirtualAttributeRule rule,
-                             Collection<AttributeValue> values)
-  {
-    for (AttributeValue value : values)
-    {
-      if (hasValue(entry, rule, value))
-      {
-        return true;
-      }
-    }
-
-    return false;
-  }
-
-  /** {@inheritDoc} */
-  @Override()
   public ConditionResult matchesSubstring(Entry entry,
                                           VirtualAttributeRule rule,
                                           ByteString subInitial,
@@ -188,7 +150,7 @@
   @Override()
   public ConditionResult greaterThanOrEqualTo(Entry entry,
                               VirtualAttributeRule rule,
-                              AttributeValue value)
+                              ByteString value)
   {
     // DNs cannot be used in ordering matching.
     return ConditionResult.UNDEFINED;
@@ -198,7 +160,7 @@
   @Override()
   public ConditionResult lessThanOrEqualTo(Entry entry,
                               VirtualAttributeRule rule,
-                              AttributeValue value)
+                              ByteString value)
   {
     // DNs cannot be used in ordering matching.
     return ConditionResult.UNDEFINED;
@@ -208,7 +170,7 @@
   @Override()
   public ConditionResult approximatelyEqualTo(Entry entry,
                               VirtualAttributeRule rule,
-                              AttributeValue value)
+                              ByteString value)
   {
     // DNs cannot be used in approximate matching.
     return ConditionResult.UNDEFINED;
@@ -354,7 +316,7 @@
         {
           try
           {
-            DN dn = DN.decode(filter.getAssertionValue().getValue());
+            DN dn = DN.decode(filter.getAssertionValue());
             return DirectoryServer.getGroupManager().getGroupInstance(dn);
           }
           catch (Exception e)

--
Gitblit v1.10.0