mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
18.53.2011 6123cf3759d7434b286706cb8e7fe66b49cd7ff5
Back port NOT filter fix from OpenDS SDK + add unit tests.
2 files modified
59 ■■■■■ changed files
opendj-sdk/opendj3/opendj-modules/opendj-sdk/src/main/java/org/opends/sdk/Filter.java 4 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj3/opendj-modules/opendj-sdk/src/test/java/org/opends/sdk/FilterTestCase.java 55 ●●●●● patch | view | raw | blame | history
opendj-sdk/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;
opendj-sdk/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