You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2004/09/30 06:15:32 UTC

svn commit: rev 47551 - in incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db: . jdbm

Author: akarasulu
Date: Wed Sep 29 21:15:31 2004
New Revision: 47551

Removed:
   incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/jdbm/DisjunctionEnumeratorImpl.java
Modified:
   incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/DisjunctionEnumerator.java
   incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/jdbm/EnumeratorImpl.java
Log:
Commit changes ...

 o removed the DisjunctionEnumerator interface
 o made DisjunctionEnumeratorImpl implement Enumerator instead of 
   DisjunctionEnumerator 
 o moved DisjunctionEnumeratorImpl up to db pkg and renamed to 
   DisjunctionEnumerator 



Modified: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/DisjunctionEnumerator.java
==============================================================================
--- incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/DisjunctionEnumerator.java	(original)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/DisjunctionEnumerator.java	Wed Sep 29 21:15:31 2004
@@ -17,13 +17,56 @@
 package org.apache.eve.db;
 
 
+import java.util.ArrayList;
+
+import javax.naming.NamingException;
+import javax.naming.NamingEnumeration;
+
+import org.apache.ldap.common.filter.ExprNode;
+import org.apache.ldap.common.filter.BranchNode;
+
+
 /**
- * Creates Enumerations over a set of entry candidates based on a disjunction
- * (and'ed set) of assertion expressions.
+ * Creates a naming enumeration over the set of candidates accepted by a set
+ * of filter expressions joined together using the OR ('|') operator. 
  * 
  * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public interface DisjunctionEnumerator extends Enumerator
+public class DisjunctionEnumerator implements Enumerator
 {
+    /** Top level expression enumerator - non Avalon dependency avaoids cycle */
+    private Enumerator enumerator;
+
+
+    /**
+     * Creates a disjunction enumerator using a top level enumerator.
+     *
+     * @param enumerator the top level enumerator
+     */
+    public DisjunctionEnumerator( Enumerator enumerator )
+    {
+        this.enumerator = enumerator;
+    }
+
+
+    /**
+     * @see Enumerator#enumerate(ExprNode)
+     */
+    public NamingEnumeration enumerate( ExprNode node )
+        throws NamingException
+    {
+        ArrayList children = ( ( BranchNode ) node ).getChildren();
+        NamingEnumeration [] childEnumerations = 
+            new NamingEnumeration [children.size()];
+
+        // Recursively create NamingEnumerations for each child expression node
+        for ( int ii = 0; ii < childEnumerations.length; ii++ ) 
+        {
+            childEnumerations[ii] =
+                enumerator.enumerate( ( ExprNode ) children.get( ii ) );
+        }
+
+        return new DisjunctionEnumeration( childEnumerations );
+    }
 }

Modified: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/jdbm/EnumeratorImpl.java
==============================================================================
--- incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/jdbm/EnumeratorImpl.java	(original)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/db/jdbm/EnumeratorImpl.java	Wed Sep 29 21:15:31 2004
@@ -46,7 +46,7 @@
         scopeEnumerator = new ScopeEnumeratorImpl();
         substringEnumerator = new SubstringEnumeratorImpl();
         conjunctionEnumerator = new ConjunctionEnumerator( this, topEvaluator );
-        disjunctionEnumerator = new DisjunctionEnumeratorImpl( this );
+        disjunctionEnumerator = new DisjunctionEnumerator( this );
         negationEnumerator = new NegationEnumeratorImpl();
     }