From 0afc6a81aac0e89d733fedc413c65889fcd1a2df Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 19 Jun 2009 11:26:17 +0000
Subject: [PATCH] Fix broken ldapSubentry filter detection and re-enable translateRubEntryTest.
---
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/PersistentServerStateTest.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationBasis.java | 67 +++++++++++++++++----------------
2 files changed, 35 insertions(+), 34 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationBasis.java b/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationBasis.java
index 118cfa0..e85f50e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationBasis.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationBasis.java
@@ -1464,43 +1464,44 @@
*/
private void checkFilterForLDAPSubEntry(SearchFilter filter, int depth)
{
+ // Paranoid check to avoid recursion deep enough to provoke
+ // the stack overflow. This should never happen because if
+ // a given filter is too nested SearchFilter exception gets
+ // raised long before this method is invoked.
+ if (depth >= MAX_NESTED_FILTER_DEPTH)
+ {
+ if (debugEnabled())
+ {
+ TRACER.debugError("Exceeded maximum filter depth");
+ }
+ return;
+ }
+
switch (filter.getFilterType())
{
- case EQUALITY:
- case AND:
- case OR:
- for (SearchFilter f : filter.getFilterComponents())
+ case EQUALITY:
+ if (filter.getAttributeType().isObjectClassType())
+ {
+ AttributeValue v = filter.getAssertionValue();
+ if (toLowerCase(v.getValue().toString()).equals("ldapsubentry"))
{
- if (f.getFilterType() == FilterType.EQUALITY)
- {
- if (f.getAttributeType().isObjectClassType())
- {
- AttributeValue v = f.getAssertionValue();
- if (toLowerCase(v.getValue().toString(
- )).equals("ldapsubentry"))
- {
- setReturnLDAPSubentries(true);
- return;
- }
- }
- }
- else
- {
- // Paranoid check to avoid recursion deep enough to provoke
- // the stack overflow. This should never happen because if
- // a given filter is too nested SearchFilter exception gets
- // raised long before this method is invoked.
- if (depth >= MAX_NESTED_FILTER_DEPTH)
- {
- if (debugEnabled())
- {
- TRACER.debugError("Exceeded maximum filter depth");
- }
- return;
- }
- checkFilterForLDAPSubEntry(f, depth + 1);
- }
+ setReturnLDAPSubentries(true);
}
+ }
+ break;
+ case AND:
+ case OR:
+ for (SearchFilter f : filter.getFilterComponents())
+ {
+ checkFilterForLDAPSubEntry(f, depth + 1);
+
+ if (isReturnLDAPSubentries())
+ {
+ // No point in continuing.
+ break;
+ }
+ }
+ break;
}
}
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/PersistentServerStateTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/PersistentServerStateTest.java
index c1dde0c..b5fbf97 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/PersistentServerStateTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/PersistentServerStateTest.java
@@ -119,7 +119,7 @@
* @throws Exception If an unexpected problem occurs.
*/
@SuppressWarnings("unchecked")
- @Test(enabled = false)
+ @Test
public void translateRuvEntryTest()
throws Exception
{
--
Gitblit v1.10.0