From 82ea62ba5f1ea043f867bec3bd9e3d3d1a13eeba Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 18 Feb 2011 11:53:14 +0000
Subject: [PATCH] Back port NOT filter fix from OpenDS SDK + add unit tests.

---
 opendj3/opendj-modules/opendj-sdk/src/main/java/org/opends/sdk/Filter.java         |    4 ++--
 opendj3/opendj-modules/opendj-sdk/src/test/java/org/opends/sdk/FilterTestCase.java |   55 ++++++++++++++++++++++++++++++++++++-------------------
 2 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/opendj3/opendj-modules/opendj-sdk/src/main/java/org/opends/sdk/Filter.java b/opendj3/opendj-modules/opendj-sdk/src/main/java/org/opends/sdk/Filter.java
index f52bbba..691df37 100644
--- a/opendj3/opendj-modules/opendj-sdk/src/main/java/org/opends/sdk/Filter.java
+++ b/opendj3/opendj-modules/opendj-sdk/src/main/java/org/opends/sdk/Filter.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2009-2010 Sun Microsystems, Inc.
+ *      Copyright 2009-2011 Sun Microsystems, Inc.
  */
 
 package org.opends.sdk;
@@ -497,7 +497,7 @@
     public StringBuilder visitNotFilter(final StringBuilder builder,
         final Filter subFilter)
     {
-      builder.append("(|");
+      builder.append("(!");
       subFilter.accept(this, builder);
       builder.append(')');
       return builder;
diff --git a/opendj3/opendj-modules/opendj-sdk/src/test/java/org/opends/sdk/FilterTestCase.java b/opendj3/opendj-modules/opendj-sdk/src/test/java/org/opends/sdk/FilterTestCase.java
index 224b370..0f5a90a 100644
--- a/opendj3/opendj-modules/opendj-sdk/src/test/java/org/opends/sdk/FilterTestCase.java
+++ b/opendj3/opendj-modules/opendj-sdk/src/test/java/org/opends/sdk/FilterTestCase.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2010 Sun Microsystems, Inc.
+ *      Portions copyright 2011 ForgeRock AS
  */
 
 package org.opends.sdk;
@@ -110,54 +111,54 @@
     list2.add(and);
 
     return new Object[][] {
-        { "(objectClass=\\5ctest\\2a\\28Value\\29)", equal },
+        { "(objectClass=\\5Ctest\\2A\\28Value\\29)", equal },
 
         { "(objectClass=)", equal2 },
 
-        { "(sn~=\\5ctest\\2a\\28Value\\29)", approx },
+        { "(sn~=\\5Ctest\\2A\\28Value\\29)", approx },
 
-        { "(employeeNumber>=\\5ctest\\2a\\28Value\\29)", greater },
+        { "(employeeNumber>=\\5Ctest\\2A\\28Value\\29)", greater },
 
-        { "(dob<=\\5ctest\\2a\\28Value\\29)", less },
+        { "(dob<=\\5Ctest\\2A\\28Value\\29)", less },
 
         { "(login=*)", presense },
 
-        { "(givenName=\\5cJo\\2a\\28\\29*\\5cn\\2a\\28\\29)", substring1 },
+        { "(givenName=\\5CJo\\2A\\28\\29*\\5Cn\\2A\\28\\29)", substring1 },
 
         {
-            "(givenName=\\5cJo\\2a\\28\\29*\\5cwid\\2a\\28get\\29*\\2a*\\5cn\\2a\\28\\29)",
+            "(givenName=\\5CJo\\2A\\28\\29*\\5Cwid\\2A\\28get\\29*\\2A*\\5Cn\\2A\\28\\29)",
             substring2 },
 
-        { "(givenName=*\\5cn\\2a\\28\\29)", substring3 },
+        { "(givenName=*\\5Cn\\2A\\28\\29)", substring3 },
 
-        { "(givenName=\\5cJo\\2a\\28\\29*)", substring4 },
+        { "(givenName=\\5CJo\\2A\\28\\29*)", substring4 },
 
-        { "(givenName=*\\5cwid\\2a\\28get\\29*\\2a*)", substring5 },
+        { "(givenName=*\\5Cwid\\2A\\28get\\29*\\2A*)", substring5 },
 
-        { "(cn:2.4.6.8.19:=\\5cJohn\\2a \\28Doe\\29)", extensible1 },
+        { "(cn:2.4.6.8.19:=\\5CJohn\\2A \\28Doe\\29)", extensible1 },
 
-        { "(cn:dn:2.4.6.8.19:=\\5cJohn\\2a \\28Doe\\29)", extensible2 },
+        { "(cn:dn:2.4.6.8.19:=\\5CJohn\\2A \\28Doe\\29)", extensible2 },
 
-        { "(:dn:2.4.6.8.19:=\\5cJohn\\2a \\28Doe\\29)", extensible3 },
+        { "(:dn:2.4.6.8.19:=\\5CJohn\\2A \\28Doe\\29)", extensible3 },
 
-        { "(cn:dn:=\\5cJohn\\2a \\28Doe\\29)", extensible4 },
+        { "(cn:dn:=\\5CJohn\\2A \\28Doe\\29)", extensible4 },
 
-        { "(:2.4.6.8.19:=\\5cJohn\\2a \\28Doe\\29)", extensible5 },
+        { "(:2.4.6.8.19:=\\5CJohn\\2A \\28Doe\\29)", extensible5 },
 
         {
-            "(&(objectClass=\\5ctest\\2a\\28Value\\29)(sn~=\\5ctest\\2a\\28Value\\29))",
+            "(&(objectClass=\\5Ctest\\2A\\28Value\\29)(sn~=\\5Ctest\\2A\\28Value\\29))",
             Filter.newAndFilter(list1) },
 
         {
-            "(|(objectClass=\\5ctest\\2a\\28Value\\29)(sn~=\\5ctest\\2a\\28Value\\29))",
+            "(|(objectClass=\\5Ctest\\2A\\28Value\\29)(sn~=\\5Ctest\\2A\\28Value\\29))",
             Filter.newOrFilter(list1) },
 
-        { "(!(objectClass=\\5ctest\\2a\\28Value\\29))",
+        { "(!(objectClass=\\5Ctest\\2A\\28Value\\29))",
             Filter.newNotFilter(equal) },
 
         {
-            "(|(givenName=\\5cJo\\2a\\28\\29*\\5cn\\2a\\28\\29)(cn:2.4.6.8.19:=\\5cJohn\\2a \\28Doe\\29)"
-                + "(&(objectClass=\\5ctest\\2a\\28Value\\29)(sn~=\\5ctest\\2a\\28Value\\29)))",
+            "(|(givenName=\\5CJo\\2A\\28\\29*\\5Cn\\2A\\28\\29)(cn:2.4.6.8.19:=\\5CJohn\\2A \\28Doe\\29)"
+                + "(&(objectClass=\\5Ctest\\2A\\28Value\\29)(sn~=\\5Ctest\\2A\\28Value\\29)))",
             Filter.newOrFilter(list2) }
 
     };
@@ -183,6 +184,22 @@
 
 
   /**
+   * Decodes the specified filter strings.
+   *
+   * @param filterStr
+   * @param filter
+   * @throws Exception
+   */
+  @Test(dataProvider = "filterstrings")
+  public void testToString(final String filterStr, final Filter filter)
+      throws Exception
+  {
+    assertEquals(filterStr, filter.toString());
+  }
+
+
+
+  /**
    * Decodes the erroneous filter strings.
    *
    * @param filterStr

--
Gitblit v1.10.0