directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject svn commit: r430220 - in /directory/trunks/apacheds: core-unit/src/test/java/org/apache/directory/server/core/jndi/ core/src/main/java/org/apache/directory/server/core/normalization/ core/src/main/java/org/apache/directory/server/core/partition/impl/bt...
Date Thu, 10 Aug 2006 02:46:10 GMT
Author: akarasulu
Date: Wed Aug  9 19:46:09 2006
New Revision: 430220

URL: http://svn.apache.org/viewvc?rev=430220&view=rev
Log:
Fixed DIRSERVER-249: Filters with less specific attributes do not return matching entries
with more specific attributes

Added:
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/normalization/ExpandingVisitor.java
      - copied unchanged from r430215, directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/normalization/ExpandingVisitor.java
Modified:
    directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/jndi/SearchContextITest.java
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationService.java
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/LeafEvaluator.java
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/SubstringEvaluator.java
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/AttributeTypeRegistry.java
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapAttributeTypeRegistry.java
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/global/GlobalAttributeTypeRegistry.java
    directory/trunks/apacheds/core/src/test/java/org/apache/directory/server/core/authz/support/DummyAttributeTypeRegistry.java

Modified: directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/jndi/SearchContextITest.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/jndi/SearchContextITest.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/jndi/SearchContextITest.java
(original)
+++ directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/jndi/SearchContextITest.java
Wed Aug  9 19:46:09 2006
@@ -311,4 +311,157 @@
         }
         assertEquals( "Expected number of results returned was incorrect", 1, map.size()
);
     }
+    
+    
+    public void testFilterExpansion0() throws Exception
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+        controls.setDerefLinkFlag( false );
+        sysRoot.addToEnvironment( DerefAliasesEnum.JNDI_PROP, DerefAliasesEnum.NEVERDEREFALIASES.getName()
);
+        
+        HashMap map = new HashMap();
+        NamingEnumeration list = sysRoot.search( "", "(name=testing00)", controls );
+        while ( list.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) list.next();
+            map.put( result.getName(), result.getAttributes() );
+        }
+        assertEquals( "size of results", 1, map.size() );
+        assertTrue( "contains ou=testing00,ou=system", map.containsKey( "ou=testing00,ou=system"
) ); 
+    }
+    
+    
+    public void testFilterExpansion1() throws Exception
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+        controls.setDerefLinkFlag( false );
+        sysRoot.addToEnvironment( DerefAliasesEnum.JNDI_PROP, DerefAliasesEnum.NEVERDEREFALIASES.getName()
);
+        
+        HashMap map = new HashMap();
+        NamingEnumeration list = sysRoot.search( "", "(name=*)", controls );
+        while ( list.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) list.next();
+            map.put( result.getName(), result.getAttributes() );
+        }
+        assertEquals( "size of results", 14, map.size() );
+        assertTrue( "contains ou=testing00,ou=system", map.containsKey( "ou=testing00,ou=system"
) ); 
+        assertTrue( "contains ou=testing01,ou=system", map.containsKey( "ou=testing01,ou=system"
) ); 
+        assertTrue( "contains ou=testing02,ou=system", map.containsKey( "ou=testing01,ou=system"
) ); 
+        assertTrue( "contains uid=akarasulu,ou=users,ou=system", map.containsKey( "uid=akarasulu,ou=users,ou=system"
) ); 
+        assertTrue( "contains ou=configuration,ou=system", map.containsKey( "ou=configuration,ou=system"
) ); 
+        assertTrue( "contains ou=groups,ou=system", map.containsKey( "ou=groups,ou=system"
) ); 
+        assertTrue( "contains ou=interceptors,ou=configuration,ou=system", map.containsKey(
"ou=interceptors,ou=configuration,ou=system" ) ); 
+        assertTrue( "contains ou=partitions,ou=configuration,ou=system", map.containsKey(
"ou=partitions,ou=configuration,ou=system" ) ); 
+        assertTrue( "contains ou=services,ou=configuration,ou=system", map.containsKey( "ou=services,ou=configuration,ou=system"
) ); 
+        assertTrue( "contains ou=subtest,ou=testing01,ou=system", map.containsKey( "ou=subtest,ou=testing01,ou=system"
) ); 
+        assertTrue( "contains ou=system", map.containsKey( "ou=system" ) ); 
+        assertTrue( "contains ou=users,ou=system", map.containsKey( "ou=users,ou=system"
) ); 
+        assertTrue( "contains uid=admin,ou=system", map.containsKey( "uid=admin,ou=system"
) ); 
+        assertTrue( "contains cn=administrators,ou=groups,ou=system", map.containsKey( "cn=administrators,ou=groups,ou=system"
) ); 
+    }
+    
+    
+    public void testFilterExpansion2() throws Exception
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+        controls.setDerefLinkFlag( false );
+        sysRoot.addToEnvironment( DerefAliasesEnum.JNDI_PROP, DerefAliasesEnum.NEVERDEREFALIASES.getName()
);
+        
+        HashMap map = new HashMap();
+        NamingEnumeration list = sysRoot.search( "", "(| (name=testing00)(name=testing01))",
controls );
+        while ( list.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) list.next();
+            map.put( result.getName(), result.getAttributes() );
+        }
+        assertEquals( "size of results", 2, map.size() );
+        assertTrue( "contains ou=testing00,ou=system", map.containsKey( "ou=testing00,ou=system"
) ); 
+        assertTrue( "contains ou=testing01,ou=system", map.containsKey( "ou=testing01,ou=system"
) ); 
+    }
+
+
+    public void testFilterExpansion4() throws Exception
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+        controls.setDerefLinkFlag( false );
+        sysRoot.addToEnvironment( DerefAliasesEnum.JNDI_PROP, DerefAliasesEnum.NEVERDEREFALIASES.getName()
);
+        
+        HashMap map = new HashMap();
+        NamingEnumeration list = sysRoot.search( "", "(name=testing*)", controls );
+        while ( list.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) list.next();
+            map.put( result.getName(), result.getAttributes() );
+        }
+        assertEquals( "size of results", 3, map.size() );
+        assertTrue( "contains ou=testing00,ou=system", map.containsKey( "ou=testing00,ou=system"
) ); 
+        assertTrue( "contains ou=testing01,ou=system", map.containsKey( "ou=testing01,ou=system"
) ); 
+        assertTrue( "contains ou=testing02,ou=system", map.containsKey( "ou=testing01,ou=system"
) ); 
+    }
+
+
+    public void testFilterExpansion5() throws Exception
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+        controls.setDerefLinkFlag( false );
+        sysRoot.addToEnvironment( DerefAliasesEnum.JNDI_PROP, DerefAliasesEnum.NEVERDEREFALIASES.getName()
);
+        
+        HashMap map = new HashMap();
+        String filter = "(|(2.5.4.11.1=testing*)(2.5.4.54=testing*)(2.5.4.10=testing*)" +
+            "(2.5.4.6=testing*)(2.5.4.43=testing*)(2.5.4.7.1=testing*)(2.5.4.10.1=testing*)"
+
+            "(2.5.4.44=testing*)(2.5.4.11=testing*)(2.5.4.4=testing*)(2.5.4.8.1=testing*)"
+
+            "(2.5.4.12=testing*)(1.2.6.1.4.1.18060.1.1.1.3.3=testing*)" +
+            "(2.5.4.7=testing*)(2.5.4.3=testing*)(2.5.4.8=testing*)(2.5.4.42=testing*))";
+        NamingEnumeration list = sysRoot.search( "", filter, controls );
+        while ( list.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) list.next();
+            map.put( result.getName(), result.getAttributes() );
+        }
+        assertEquals( "size of results", 3, map.size() );
+        assertTrue( "contains ou=testing00,ou=system", map.containsKey( "ou=testing00,ou=system"
) ); 
+        assertTrue( "contains ou=testing01,ou=system", map.containsKey( "ou=testing01,ou=system"
) ); 
+        assertTrue( "contains ou=testing02,ou=system", map.containsKey( "ou=testing01,ou=system"
) ); 
+    }
+
+
+    // this one is failing because it returns the admin user twice: count = 15
+//    public void testFilterExpansion3() throws Exception
+//    {
+//        SearchControls controls = new SearchControls();
+//        controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+//        controls.setDerefLinkFlag( false );
+//        sysRoot.addToEnvironment( DerefAliasesEnum.JNDI_PROP, DerefAliasesEnum.NEVERDEREFALIASES.getName()
);
+//        
+//        List map = new ArrayList();
+//        NamingEnumeration list = sysRoot.search( "", "(name=*)", controls );
+//        while ( list.hasMore() )
+//        {
+//            SearchResult result = ( SearchResult ) list.next();
+//            map.add( result.getName() );
+//        }
+//        assertEquals( "size of results", 14, map.size() );
+//        assertTrue( "contains ou=testing00,ou=system", map.contains( "ou=testing00,ou=system"
) ); 
+//        assertTrue( "contains ou=testing01,ou=system", map.contains( "ou=testing01,ou=system"
) ); 
+//        assertTrue( "contains ou=testing02,ou=system", map.contains( "ou=testing01,ou=system"
) ); 
+//        assertTrue( "contains uid=akarasulu,ou=users,ou=system", map.contains( "uid=akarasulu,ou=users,ou=system"
) ); 
+//        assertTrue( "contains ou=configuration,ou=system", map.contains( "ou=configuration,ou=system"
) ); 
+//        assertTrue( "contains ou=groups,ou=system", map.contains( "ou=groups,ou=system"
) ); 
+//        assertTrue( "contains ou=interceptors,ou=configuration,ou=system", map.contains(
"ou=interceptors,ou=configuration,ou=system" ) ); 
+//        assertTrue( "contains ou=partitions,ou=configuration,ou=system", map.contains(
"ou=partitions,ou=configuration,ou=system" ) ); 
+//        assertTrue( "contains ou=services,ou=configuration,ou=system", map.contains( "ou=services,ou=configuration,ou=system"
) ); 
+//        assertTrue( "contains ou=subtest,ou=testing01,ou=system", map.contains( "ou=subtest,ou=testing01,ou=system"
) ); 
+//        assertTrue( "contains ou=system", map.contains( "ou=system" ) ); 
+//        assertTrue( "contains ou=users,ou=system", map.contains( "ou=users,ou=system" )
); 
+//        assertTrue( "contains uid=admin,ou=system", map.contains( "uid=admin,ou=system"
) ); 
+//        assertTrue( "contains cn=administrators,ou=groups,ou=system", map.contains( "cn=administrators,ou=groups,ou=system"
) ); 
+//    }
+    
+    
 }

Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationService.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationService.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationService.java
(original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationService.java
Wed Aug  9 19:46:09 2006
@@ -17,6 +17,7 @@
 package org.apache.directory.server.core.normalization;
 
 
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -38,9 +39,14 @@
 
 import org.apache.directory.shared.ldap.filter.BranchNode;
 import org.apache.directory.shared.ldap.filter.ExprNode;
+import org.apache.directory.shared.ldap.filter.ExtensibleNode;
 import org.apache.directory.shared.ldap.filter.LeafNode;
+import org.apache.directory.shared.ldap.filter.PresenceNode;
+import org.apache.directory.shared.ldap.filter.SimpleNode;
+import org.apache.directory.shared.ldap.filter.SubstringNode;
 import org.apache.directory.shared.ldap.name.NameComponentNormalizer;
 import org.apache.directory.shared.ldap.name.LdapDN;
+import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.util.EmptyEnumeration;
 
 import org.slf4j.LoggerFactory;
@@ -61,7 +67,9 @@
     private static final Logger log = LoggerFactory.getLogger( NormalizationService.class
);
 
     /** a filter node value normalizer and undefined node remover */
-    private NormalizingVisitor visitor;
+    private NormalizingVisitor normVisitor;
+    /** an expanding filter that makes expressions more specific */
+    private ExpandingVisitor expVisitor;
     /** the attributeType registry used for normalization and determining if some filter
nodes are undefined */
     private AttributeTypeRegistry attributeRegistry;
 
@@ -71,7 +79,8 @@
         OidRegistry oidRegistry = factoryCfg.getGlobalRegistries().getOidRegistry();
         attributeRegistry = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry();
         NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( attributeRegistry,
oidRegistry );
-        visitor = new NormalizingVisitor( ncn, oidRegistry );
+        normVisitor = new NormalizingVisitor( ncn, oidRegistry );
+        expVisitor = new ExpandingVisitor( attributeRegistry );
     }
 
 
@@ -177,7 +186,7 @@
                     }
                 }
 
-                filter.accept( visitor );
+                filter.accept( normVisitor );
                 isFailure = false;
             }
             catch( UndefinedFilterAttributeException e )
@@ -230,6 +239,72 @@
                 filter = child.getChild();
             }
         }
+        
+        // --------------------------------------------------------------------
+        // The filter below this point is now expanded to include specific
+        // attributes when a general one is supplied.
+        // --------------------------------------------------------------------
+
+        if ( !filter.isLeaf() )
+        {
+            expVisitor.visit( filter );
+        }
+        else
+        {
+            LeafNode leaf = ( LeafNode ) filter;
+            if ( attributeRegistry.hasDescendants( leaf.getAttribute() ) )
+            {
+                // create new OR node and add the filter leaf to it 
+                // and set filter to this new branch node
+                BranchNode bnode = new BranchNode( BranchNode.OR );
+                bnode.getChildren().add( filter );
+                filter = bnode;
+                
+                // add descendant nodes to this new branch node
+                Iterator descendants = attributeRegistry.descendants( leaf.getAttribute()
);
+                
+                while ( descendants.hasNext() )
+                {
+                    LeafNode newLeaf = null;
+                    AttributeType descendant = ( AttributeType ) descendants.next();
+                    
+                    switch( leaf.getAssertionType() )
+                    {
+                        case( LeafNode.EXTENSIBLE ):
+                            ExtensibleNode extensibleNode = ( ExtensibleNode ) leaf;
+                            newLeaf = new ExtensibleNode( descendant.getOid(), 
+                                extensibleNode.getValue(), 
+                                extensibleNode.getMatchingRuleId(), 
+                                extensibleNode.dnAttributes() );
+                            break;
+                        case( LeafNode.PRESENCE ):
+                            newLeaf = new PresenceNode( descendant.getOid() );
+                            break;
+                        case( LeafNode.SUBSTRING ):
+                            SubstringNode substringNode = ( SubstringNode ) leaf;
+                            newLeaf = new SubstringNode( descendant.getOid(), 
+                                substringNode.getInitial(), 
+                                substringNode.getFinal() );
+                            break;
+                        case( LeafNode.APPROXIMATE ):
+                        case( LeafNode.EQUALITY ):
+                        case( LeafNode.GREATEREQ ):
+                        case( LeafNode.LESSEQ ):
+                            SimpleNode simpleNode = ( SimpleNode ) leaf;
+                            newLeaf = new SimpleNode( descendant.getOid(), 
+                                simpleNode.getValue(), 
+                                simpleNode.getAssertionType() );
+                            break;
+                        default:
+                            throw new IllegalStateException( "Unknown assertion type: " 
+                                + leaf.getAssertionType() );
+                    }
+                    
+                    bnode.getChildren().add( newLeaf );
+                }
+            }
+        }
+        
         return nextInterceptor.search( base, env, filter, searchCtls );
     }
 

Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/LeafEvaluator.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/LeafEvaluator.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/LeafEvaluator.java
(original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/LeafEvaluator.java
Wed Aug  9 19:46:09 2006
@@ -37,6 +37,7 @@
 import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.MatchingRule;
 import org.apache.directory.shared.ldap.schema.Normalizer;
+import org.apache.directory.shared.ldap.util.AttributeUtils;
 
 
 /**
@@ -164,8 +165,9 @@
             record.setAttributes( db.lookup( id ) );
         }
 
-        // get the attribute associated with the node 
-        Attribute attr = record.getAttributes().get( attrId );
+        // get the attribute associated with the node
+        Attribute attr = AttributeUtils.getAttribute( record.getAttributes(), 
+            attributeTypeRegistry.lookup( node.getAttribute() ) );
 
         // If we do not have the attribute just return false
         if ( null == attr )

Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/SubstringEvaluator.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/SubstringEvaluator.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/SubstringEvaluator.java
(original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/SubstringEvaluator.java
Wed Aug  9 19:46:09 2006
@@ -32,6 +32,7 @@
 import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.MatchingRule;
 import org.apache.directory.shared.ldap.schema.Normalizer;
+import org.apache.directory.shared.ldap.util.AttributeUtils;
 
 
 /**
@@ -138,7 +139,7 @@
         }
 
         // get the attribute
-        Attribute attr = record.getAttributes().get( snode.getAttribute() );
+        Attribute attr = AttributeUtils.getAttribute( record.getAttributes(), type );
 
         // if the attribute does not exist just return false
         if ( null == attr )

Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/AttributeTypeRegistry.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/AttributeTypeRegistry.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/AttributeTypeRegistry.java
(original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/AttributeTypeRegistry.java
Wed Aug  9 19:46:09 2006
@@ -89,6 +89,16 @@
      */
     Map getNormalizerMapping() throws NamingException; 
     
+    /**
+     * Quick lookup to see if an attribute has descendants.
+     * 
+     * @param ancestorId the name alias or OID for an attributeType
+     * @return an Iterator over the AttributeTypes which have the ancestor
+     * within their superior chain to the top
+     * @throws NamingException if the ancestor attributeType cannot be 
+     * discerned from the ancestorId supplied
+     */
+    boolean hasDescendants( String ancestorId ) throws NamingException;
     
     /**
      * Get's an iterator over the set of descendant attributeTypes for

Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapAttributeTypeRegistry.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapAttributeTypeRegistry.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapAttributeTypeRegistry.java
(original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapAttributeTypeRegistry.java
Wed Aug  9 19:46:09 2006
@@ -243,4 +243,16 @@
         }
         return descendants.iterator();
     }
+
+
+    public boolean hasDescendants( String ancestorId ) throws NamingException
+    {
+        String oid = oidRegistry.getOid( ancestorId );
+        Set descendants = ( Set ) oidToDescendantSet.get( oid );
+        if ( descendants == null )
+        {
+            return false;
+        }
+        return !descendants.isEmpty();
+    }
 }

Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/global/GlobalAttributeTypeRegistry.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/global/GlobalAttributeTypeRegistry.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/global/GlobalAttributeTypeRegistry.java
(original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/global/GlobalAttributeTypeRegistry.java
Wed Aug  9 19:46:09 2006
@@ -219,4 +219,10 @@
     {
         return bootstrap.descendants( ancestorId );
     }
+
+
+    public boolean hasDescendants( String ancestorId ) throws NamingException
+    {
+        return bootstrap.hasDescendants( ancestorId );
+    }
 }

Modified: directory/trunks/apacheds/core/src/test/java/org/apache/directory/server/core/authz/support/DummyAttributeTypeRegistry.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/test/java/org/apache/directory/server/core/authz/support/DummyAttributeTypeRegistry.java?rev=430220&r1=430219&r2=430220&view=diff
==============================================================================
--- directory/trunks/apacheds/core/src/test/java/org/apache/directory/server/core/authz/support/DummyAttributeTypeRegistry.java
(original)
+++ directory/trunks/apacheds/core/src/test/java/org/apache/directory/server/core/authz/support/DummyAttributeTypeRegistry.java
Wed Aug  9 19:46:09 2006
@@ -457,4 +457,10 @@
     {
         return null;
     }
+
+
+    public boolean hasDescendants( String ancestorId ) throws NamingException
+    {
+        return false;
+    }
 }



Mime
View raw message