You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2022/01/13 07:07:06 UTC
[directory-server] branch master updated: Fixed the Undefined node problem
This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-server.git
The following commit(s) were added to refs/heads/master by this push:
new 9fe09ca Fixed the Undefined node problem
9fe09ca is described below
commit 9fe09cad67b89ea5bbf788e6fa2e0d584b4b3692
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Thu Jan 13 08:06:59 2022 +0100
Fixed the Undefined node problem
---
.../core/api/normalization/FilterNormalizingVisitor.java | 2 +-
.../server/core/normalization/NormalizationInterceptor.java | 10 +++-------
.../directory/server/core/schema/SchemaInterceptor.java | 7 ++++---
.../directory/server/xdbm/search/impl/CursorBuilder.java | 2 ++
.../directory/server/xdbm/search/impl/DefaultOptimizer.java | 2 +-
.../directory/server/xdbm/search/impl/EvaluatorBuilder.java | 11 +++++++----
6 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/core-api/src/main/java/org/apache/directory/server/core/api/normalization/FilterNormalizingVisitor.java b/core-api/src/main/java/org/apache/directory/server/core/api/normalization/FilterNormalizingVisitor.java
index a95433b..b40f0ad 100644
--- a/core-api/src/main/java/org/apache/directory/server/core/api/normalization/FilterNormalizingVisitor.java
+++ b/core-api/src/main/java/org/apache/directory/server/core/api/normalization/FilterNormalizingVisitor.java
@@ -238,7 +238,7 @@ public class FilterNormalizingVisitor implements FilterVisitor
if ( ( substringMR == null ) || ( substringMR.getNormalizer() == null ) )
{
// No normalizer for a Substring filter
- return UndefinedNode.UNDEFINED_NODE;
+ return new UndefinedNode( node.getAttribute() );
}
Normalizer normalizer = substringMR.getNormalizer();
diff --git a/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java b/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
index c276157..aec6f94 100644
--- a/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
+++ b/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
@@ -45,8 +45,8 @@ import org.apache.directory.api.ldap.model.schema.normalizers.ConcreteNameCompon
import org.apache.directory.api.ldap.model.schema.normalizers.NameComponentNormalizer;
import org.apache.directory.server.core.api.DirectoryService;
import org.apache.directory.server.core.api.InterceptorEnum;
-import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
+import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
@@ -432,12 +432,6 @@ public class NormalizationInterceptor extends BaseInterceptor
newAndNode.addNode( modifiedNode );
nbNodes++;
}
-
- if ( modifiedNode instanceof UndefinedNode )
- {
- // We can just return an Undefined node as nothing will get selected
- return UndefinedNode.UNDEFINED_NODE;
- }
}
switch ( nbNodes )
@@ -538,6 +532,8 @@ public class NormalizationInterceptor extends BaseInterceptor
}
}
}
+
+ return leafNode;
}
// --------------------------------------------------------------------
diff --git a/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java b/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java
index f415ef2..8956446 100644
--- a/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java
+++ b/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java
@@ -56,6 +56,7 @@ import org.apache.directory.api.ldap.model.filter.GreaterEqNode;
import org.apache.directory.api.ldap.model.filter.LessEqNode;
import org.apache.directory.api.ldap.model.filter.ObjectClassNode;
import org.apache.directory.api.ldap.model.filter.SimpleNode;
+import org.apache.directory.api.ldap.model.filter.UndefinedNode;
import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
import org.apache.directory.api.ldap.model.message.SearchScope;
import org.apache.directory.api.ldap.model.message.controls.Cascade;
@@ -74,9 +75,9 @@ import org.apache.directory.server.core.api.DirectoryService;
import org.apache.directory.server.core.api.InterceptorEnum;
import org.apache.directory.server.core.api.entry.ClonedServerEntry;
import org.apache.directory.server.core.api.entry.ServerEntryUtils;
-import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
import org.apache.directory.server.core.api.filtering.EntryFilter;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
+import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
@@ -383,9 +384,9 @@ public class SchemaInterceptor extends BaseInterceptor
throw new LdapException( message );
}
- if ( filter instanceof ObjectClassNode )
+ if ( ( filter instanceof ObjectClassNode ) || ( filter instanceof UndefinedNode ) )
{
- // Bypass (ObjectClass=*)
+ // Bypass (ObjectClass=*) and undifined nodes
return;
}
diff --git a/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/CursorBuilder.java b/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/CursorBuilder.java
index 536cb42..1395440 100644
--- a/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/CursorBuilder.java
+++ b/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/CursorBuilder.java
@@ -149,6 +149,8 @@ public class CursorBuilder
return computeOr( partitionTxn, ( OrNode ) node, searchResult );
/* ---------- NOT IMPLEMENTED ---------- */
+ case UNDEFINED:
+ return Long.MAX_VALUE;
case ASSERTION:
case EXTENSIBLE:
diff --git a/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java b/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java
index 94a4f3d..438d4ac 100644
--- a/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java
+++ b/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java
@@ -221,7 +221,7 @@ public class DefaultOptimizer implements Optimizer
}
else
{
- throw new IllegalArgumentException( I18n.err( I18n.ERR_712 ) );
+ count = Long.MAX_VALUE;
}
}
diff --git a/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EvaluatorBuilder.java b/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EvaluatorBuilder.java
index a67d2cc..109e130 100644
--- a/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EvaluatorBuilder.java
+++ b/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EvaluatorBuilder.java
@@ -66,7 +66,7 @@ public class EvaluatorBuilder
private final Store db;
private final SchemaManager schemaManager;
- private static final EmptyEvaluator EMPTY_EVALLUATOR = new EmptyEvaluator();
+ private static final EmptyEvaluator EMPTY_EVALUATOR = new EmptyEvaluator();
/**
* Creates a top level Evaluator where leaves are delegated to a leaf node
@@ -88,7 +88,7 @@ public class EvaluatorBuilder
if ( ( count != null ) && ( ( Long ) count == 0L ) )
{
- return EMPTY_EVALLUATOR;
+ return EMPTY_EVALUATOR;
}
switch ( node.getAssertionType() )
@@ -136,6 +136,9 @@ public class EvaluatorBuilder
/* ---------- NOT IMPLEMENTED ---------- */
+ case UNDEFINED:
+ return new EmptyEvaluator();
+
case ASSERTION:
case EXTENSIBLE:
throw new NotImplementedException();
@@ -156,7 +159,7 @@ public class EvaluatorBuilder
switch ( size )
{
case 0:
- return EMPTY_EVALLUATOR;
+ return EMPTY_EVALUATOR;
case 1:
return evaluators.get( 0 );
@@ -177,7 +180,7 @@ public class EvaluatorBuilder
switch ( size )
{
case 0:
- return EMPTY_EVALLUATOR;
+ return EMPTY_EVALUATOR;
case 1:
return evaluators.get( 0 );