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/UserDefinedVirtualAttributeProvider.java |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/opends/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java b/opends/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java
index 33ed8d2..f893cd7 100644
--- a/opends/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java
+++ b/opends/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java
@@ -22,14 +22,15 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.extensions;
 import org.opends.messages.Message;
 
 
 
-import java.util.LinkedHashSet;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -124,20 +125,27 @@
    * {@inheritDoc}
    */
   @Override()
-  public LinkedHashSet<AttributeValue> getValues(Entry entry,
-                                                 VirtualAttributeRule rule)
+  public Set<AttributeValue> getValues(Entry entry,
+                                       VirtualAttributeRule rule)
   {
     AttributeType attributeType = rule.getAttributeType();
     Set<String> userDefinedValues = currentConfig.getValue();
-
-    LinkedHashSet<AttributeValue> values =
-         new LinkedHashSet<AttributeValue>(userDefinedValues.size());
-    for (String valueString : userDefinedValues)
-    {
-      values.add(new AttributeValue(attributeType, valueString));
+    switch (userDefinedValues.size()) {
+    case 0:
+      return Collections.emptySet();
+    case 1:
+      String valueString = userDefinedValues.iterator().next();
+      AttributeValue value = new AttributeValue(attributeType, valueString);
+      return Collections.singleton(value);
+    default:
+      HashSet<AttributeValue> values =
+          new HashSet<AttributeValue>(userDefinedValues.size());
+      for (String valueString2 : userDefinedValues)
+      {
+        values.add(new AttributeValue(attributeType, valueString2));
+      }
+      return Collections.unmodifiableSet(values);
     }
-
-    return values;
   }
 
 

--
Gitblit v1.10.0