From 97cfcdaa5cf2900db577a9639a1342bf960660fc Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 22 Feb 2013 07:58:17 +0000
Subject: [PATCH] OPENDJ-735 (CR-1310) Server does not support absolute true or false filters

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java |   17 ++++++++++-------
 opends/src/server/org/opends/server/types/RawFilter.java                                       |   12 +++++++-----
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/opends/src/server/org/opends/server/types/RawFilter.java b/opends/src/server/org/opends/server/types/RawFilter.java
index 840549d..bb79940 100644
--- a/opends/src/server/org/opends/server/types/RawFilter.java
+++ b/opends/src/server/org/opends/server/types/RawFilter.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2006-2009 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS
  */
 package org.opends.server.types;
 import org.opends.messages.Message;
@@ -32,12 +33,12 @@
 import java.util.ArrayList;
 import java.io.IOException;
 
+import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.protocols.asn1.*;
 import org.opends.server.protocols.ldap.LDAPFilter;
 
-import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
 import static org.opends.messages.ProtocolMessages.*;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
 import static org.opends.server.protocols.ldap.LDAPResultCode.*;
 import static org.opends.server.util.StaticUtils.*;
@@ -636,12 +637,12 @@
     try
     {
       reader.readStartSequence();
-      // Should have atleast 1 filter.
-      do
+      // Should have at least 1 filter
+      // could also be an absolute true/false filter
+      while (reader.hasNextElement())
       {
         filterComponents.add(LDAPFilter.decode(reader));
       }
-      while(reader.hasNextElement());
       reader.readEndSequence();
     }
     catch (LDAPException le)
@@ -1135,6 +1136,7 @@
    *
    * @return  A string representation of this search filter.
    */
+  @Override
   public String toString()
   {
     StringBuilder buffer = new StringBuilder();
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java
index c0a2e71..1e7c975 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java
@@ -23,10 +23,12 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
- *      Portions Copyright 2011 ForgeRock AS
+ *      Portions Copyright 2011-2013 ForgeRock AS
  */
 package org.opends.server.protocols.ldap;
 
+import java.util.ArrayList;
+
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 import org.testng.annotations.BeforeTest;
@@ -36,8 +38,7 @@
 import org.opends.server.protocols.asn1.ASN1;
 import org.opends.server.protocols.asn1.ASN1Reader;
 
-import static org.testng.Assert.assertEquals;
-import java.util.ArrayList;
+import static org.testng.Assert.*;
 
 public class TestLDAPFilter extends LdapTestCase
 {
@@ -195,17 +196,19 @@
         {
             "(ds-sync-conflict=uid=\\5c+3904211775265,ou=SharedAddressBook,cn=1038372,dc=cab)",
             LDAPFilter.createEqualityFilter("ds-sync-conflict",
-                    ByteString.valueOf("uid=\\+3904211775265,ou=SharedAddressBook,cn=1038372,dc=cab")) }
+                    ByteString.valueOf("uid=\\+3904211775265,ou=SharedAddressBook,cn=1038372,dc=cab")) },
 
+      // OPENDJ-735
+      { "(&)", LDAPFilter.createANDFilter(new ArrayList<RawFilter>()) },
+
+      // OPENDJ-735
+      { "(|)", LDAPFilter.createORFilter(new ArrayList<RawFilter>()) }
     };
   }
 
   @Test(dataProvider = "filterstrings")
   public void testDecode(String filterStr, LDAPFilter filter) throws Exception
   {
-    //LDAPFilter decodedFilter = LDAPFilter.decode(filterStr);
-    //System.out.println(decodedFilter.);
-    //System.out.println(filter.toString());
     LDAPFilter decoded = LDAPFilter.decode(filterStr);
     assertEquals(decoded.toString(), filter.toString());
     assertEquals(decoded.getAssertionValue(), filter.getAssertionValue());

--
Gitblit v1.10.0