From 0cdc4f67dfc0e2fb8b83d5f0de8188ec3686d04c Mon Sep 17 00:00:00 2001
From: floblanc <floblanc@localhost>
Date: Tue, 10 Nov 2009 13:59:02 +0000
Subject: [PATCH] Fix Issue 4344 CompareOperation API does not support attribute options and Issue CompareOperationBasis does not properly handle get/setAttributeType.

---
 opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java |   39 ++++++---------------------------------
 1 files changed, 6 insertions(+), 33 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java
index a1c8031..1c42ff6 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java
@@ -28,8 +28,8 @@
 
 
 
-import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.locks.Lock;
 
 import org.opends.server.api.Backend;
@@ -315,39 +315,10 @@
 
 
         // Get the base attribute type and set of options.
-        String          baseName;
-        HashSet<String> options;
-        String rawAttributeType = getRawAttributeType();
-        int             semicolonPos = rawAttributeType.indexOf(';');
-        if (semicolonPos > 0)
-        {
-          baseName = toLowerCase(rawAttributeType.substring(0, semicolonPos));
-
-          options = new HashSet<String>();
-          int nextPos = rawAttributeType.indexOf(';', semicolonPos+1);
-          while (nextPos > 0)
-          {
-            options.add(rawAttributeType.substring(semicolonPos+1, nextPos));
-            semicolonPos = nextPos;
-            nextPos = rawAttributeType.indexOf(';', semicolonPos+1);
-          }
-
-          options.add(rawAttributeType.substring(semicolonPos+1));
-        }
-        else
-        {
-          baseName = toLowerCase(rawAttributeType);
-          options  = null;
-        }
-
+        Set<String> options = getAttributeOptions();
 
         // Actually perform the compare operation.
         AttributeType attrType = getAttributeType();
-        if (attrType == null)
-        {
-          attrType = DirectoryServer.getAttributeType(baseName, true);
-          setAttributeType(attrType);
-        }
 
         List<Attribute> attrList = entry.getAttribute(attrType, options);
         if ((attrList == null) || attrList.isEmpty())
@@ -356,12 +327,14 @@
           if (options == null)
           {
             appendErrorMessage(WARN_COMPARE_OP_NO_SUCH_ATTR.get(
-                                    String.valueOf(entryDN), baseName));
+                                    String.valueOf(entryDN),
+                                    getRawAttributeType()));
           }
           else
           {
             appendErrorMessage(WARN_COMPARE_OP_NO_SUCH_ATTR_WITH_OPTIONS.get(
-                                    String.valueOf(entryDN), baseName));
+                                    String.valueOf(entryDN),
+                                    getRawAttributeType()));
           }
         }
         else

--
Gitblit v1.10.0