Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/interceptor/NextInterceptor.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/interceptor/NextInterceptor.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/interceptor/NextInterceptor.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/interceptor/NextInterceptor.java Tue Jun 13 20:22:05 2006 @@ -21,7 +21,6 @@ import java.util.List; import java.util.Map; -import javax.naming.Name; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attributes; @@ -31,6 +30,7 @@ import org.apache.directory.server.core.configuration.DirectoryPartitionConfiguration; import org.apache.directory.server.core.partition.DirectoryPartitionNexus; import org.apache.directory.shared.ldap.filter.ExprNode; +import org.apache.directory.shared.ldap.name.LdapDN; /** @@ -44,9 +44,9 @@ public interface NextInterceptor { /** - * Calls the next interceptor's {@link Interceptor#compare(NextInterceptor,Name,String,Object)}. + * Calls the next interceptor's {@link Interceptor#compare(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,String,Object)}. */ - boolean compare( Name name, String oid, Object value ) throws NamingException; + boolean compare( LdapDN name, String oid, Object value ) throws NamingException; /** @@ -56,21 +56,21 @@ /** - * Calls the next interceptor's {@link Interceptor#getMatchedName(NextInterceptor, Name, boolean)}. + * Calls the next interceptor's {@link Interceptor#getMatchedName(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN)}. */ - Name getMatchedName( Name name, boolean normalized ) throws NamingException; + LdapDN getMatchedName ( LdapDN name ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#getSuffix(NextInterceptor, Name, boolean)}. + * Calls the next interceptor's {@link Interceptor#getSuffix(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN)}. */ - Name getSuffix( Name name, boolean normalized ) throws NamingException; + LdapDN getSuffix ( LdapDN name ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#listSuffixes(NextInterceptor, boolean)}. + * Calls the next interceptor's {@link Interceptor#listSuffixes(NextInterceptor)}. */ - Iterator listSuffixes( boolean normalized ) throws NamingException; + Iterator listSuffixes () throws NamingException; /** @@ -80,98 +80,98 @@ /** - * Calls the next interceptor's {@link DirectoryPartitionNexus#removeContextPartition(Name)}. + * Calls the next interceptor's {@link DirectoryPartitionNexus#removeContextPartition(org.apache.directory.shared.ldap.name.LdapDN)}. */ - void removeContextPartition( Name suffix ) throws NamingException; + void removeContextPartition( LdapDN suffix ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#delete(NextInterceptor, Name)}. + * Calls the next interceptor's {@link Interceptor#delete(NextInterceptor, org.apache.directory.shared.ldap.name.LdapDN)}. */ - void delete( Name name ) throws NamingException; + void delete( LdapDN name ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#add(NextInterceptor, String, Name, Attributes)}. + * Calls the next interceptor's {@link Interceptor#add(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,javax.naming.directory.Attributes)}. */ - void add( String userProvidedName, Name normalizedName, Attributes entry ) throws NamingException; + void add(LdapDN normName, Attributes entry) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#modify(NextInterceptor, Name, int, Attributes)}. + * Calls the next interceptor's {@link Interceptor#modify(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,int,javax.naming.directory.Attributes)}. */ - void modify( Name name, int modOp, Attributes attributes ) throws NamingException; + void modify( LdapDN name, int modOp, Attributes attributes ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#modify(NextInterceptor, Name, ModificationItem[])}. + * Calls the next interceptor's {@link Interceptor#modify(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,javax.naming.directory.ModificationItem[])}. */ - void modify( Name name, ModificationItem[] items ) throws NamingException; + void modify( LdapDN name, ModificationItem[] items ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#list(NextInterceptor, Name)}. + * Calls the next interceptor's {@link Interceptor#list(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN)}. */ - NamingEnumeration list( Name baseName ) throws NamingException; + NamingEnumeration list( LdapDN baseName ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#search(NextInterceptor, Name, Map, ExprNode, SearchControls)}. + * Calls the next interceptor's {@link Interceptor#search(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,java.util.Map,org.apache.directory.shared.ldap.filter.ExprNode,javax.naming.directory.SearchControls)}. */ - NamingEnumeration search( Name baseName, Map environment, ExprNode filter, SearchControls searchControls ) + NamingEnumeration search( LdapDN baseName, Map environment, ExprNode filter, SearchControls searchControls ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#lookup(NextInterceptor, Name)}. + * Calls the next interceptor's {@link Interceptor#lookup(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN)}. */ - Attributes lookup( Name name ) throws NamingException; + Attributes lookup( LdapDN name ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#lookup(NextInterceptor, Name, String[])}. + * Calls the next interceptor's {@link Interceptor#lookup(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,String[])}. */ - Attributes lookup( Name name, String[] attrIds ) throws NamingException; + Attributes lookup( LdapDN name, String[] attrIds ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#hasEntry(NextInterceptor, Name)}. + * Calls the next interceptor's {@link Interceptor#hasEntry(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN)}. */ - boolean hasEntry( Name name ) throws NamingException; + boolean hasEntry( LdapDN name ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#isSuffix(NextInterceptor, Name)}. + * Calls the next interceptor's {@link Interceptor#isSuffix(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN)}. */ - boolean isSuffix( Name name ) throws NamingException; + boolean isSuffix( LdapDN name ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#modifyRn(NextInterceptor, Name, String, boolean)}. + * Calls the next interceptor's {@link Interceptor#modifyRn(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,String,boolean)}. */ - void modifyRn( Name name, String newRn, boolean deleteOldRn ) throws NamingException; + void modifyRn( LdapDN name, String newRn, boolean deleteOldRn ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#move(NextInterceptor, Name, Name)}. + * Calls the next interceptor's {@link Interceptor#move(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,org.apache.directory.shared.ldap.name.LdapDN)}. */ - void move( Name oldName, Name newParentName ) throws NamingException; + void move( LdapDN oldName, LdapDN newParentName ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#move(NextInterceptor, Name, Name, String, boolean)}. + * Calls the next interceptor's {@link Interceptor#move(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,org.apache.directory.shared.ldap.name.LdapDN,String,boolean)}. */ - void move( Name oldName, Name newParentName, String newRn, boolean deleteOldRn ) throws NamingException; + void move( LdapDN oldName, LdapDN newParentName, String newRn, boolean deleteOldRn ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#bind(NextInterceptor, Name, byte[], List, String) + * Calls the next interceptor's {@link Interceptor#bind(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN,byte[],java.util.List,String) */ - void bind( Name bindDn, byte[] credentials, List mechanisms, String saslAuthId ) throws NamingException; + void bind( LdapDN bindDn, byte[] credentials, List mechanisms, String saslAuthId ) throws NamingException; /** - * Calls the next interceptor's {@link Interceptor#unbind(NextInterceptor, Name) + * Calls the next interceptor's {@link Interceptor#unbind(NextInterceptor,org.apache.directory.shared.ldap.name.LdapDN) */ - void unbind( Name bindDn ) throws NamingException; + void unbind( LdapDN bindDn ) throws NamingException; } Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/AbstractContextFactory.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/AbstractContextFactory.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/AbstractContextFactory.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/AbstractContextFactory.java Tue Jun 13 20:22:05 2006 @@ -110,8 +110,9 @@ } else if ( cfg instanceof RemoveDirectoryPartitionConfiguration ) { - new DirectoryPartitionNexusProxy( service.getJndiContext( principal, credential, authentication, "" ), - service ).removeContextPartition( ( ( RemoveDirectoryPartitionConfiguration ) cfg ).getSuffix() ); + Context ctx = service.getJndiContext( principal, credential, authentication, "" ); + DirectoryPartitionNexusProxy proxy = new DirectoryPartitionNexusProxy( ctx, service ); + proxy.removeContextPartition( ( ( RemoveDirectoryPartitionConfiguration ) cfg ).getSuffix() ); } else if ( service == null ) { Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/LdapJndiProperties.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/LdapJndiProperties.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/LdapJndiProperties.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/LdapJndiProperties.java Tue Jun 13 20:22:05 2006 @@ -27,7 +27,7 @@ import org.apache.directory.shared.ldap.aci.AuthenticationLevel; import org.apache.directory.shared.ldap.exception.LdapConfigurationException; -import org.apache.directory.shared.ldap.name.LdapName; +import org.apache.directory.shared.ldap.name.LdapDN; import org.apache.directory.shared.ldap.util.StringTools; @@ -42,8 +42,8 @@ { private static final String SASL_AUTHID = "java.naming.security.sasl.authorizationId"; - private LdapName providerDn; - private LdapName bindDn; + private LdapDN providerDn; + private LdapDN bindDn; private String saslAuthId; private AuthenticationLevel level; private List mechanisms = new ArrayList(); @@ -130,11 +130,11 @@ if ( url.trim().equals( "" ) ) { - props.providerDn = LdapName.EMPTY_LDAP_NAME; + props.providerDn = LdapDN.EMPTY_LDAPDN; } else { - props.providerDn = new LdapName( url ); + props.providerDn = new LdapDN( url ); } // ------------------------------------------------------------------- @@ -203,11 +203,11 @@ if ( ( ( String ) principal ).trim().equals( "" ) ) { - props.bindDn = LdapName.EMPTY_LDAP_NAME; + props.bindDn = LdapDN.EMPTY_LDAPDN; } else { - props.bindDn = new LdapName( ( String ) principal ); + props.bindDn = new LdapDN( ( String ) principal ); } if ( env.get( SASL_AUTHID ) != null && props.level == AuthenticationLevel.STRONG ) @@ -254,13 +254,13 @@ } - public LdapName getBindDn() + public LdapDN getBindDn() { return bindDn; } - public LdapName getProviderDn() + public LdapDN getProviderDn() { return providerDn; } Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java Tue Jun 13 20:22:05 2006 @@ -52,7 +52,7 @@ import org.apache.directory.shared.ldap.filter.ExprNode; import org.apache.directory.shared.ldap.filter.PresenceNode; import org.apache.directory.shared.ldap.message.LockableAttributesImpl; -import org.apache.directory.shared.ldap.name.LdapName; +import org.apache.directory.shared.ldap.name.LdapDN; import org.apache.directory.shared.ldap.util.NamespaceTools; import org.apache.directory.shared.ldap.util.StringTools; @@ -78,7 +78,7 @@ private final Hashtable env; /** The distinguished name of this Context */ - private final LdapName dn; + private final LdapDN dn; /** The set of registered NamingListeners */ private final Set listeners = new HashSet(); @@ -123,7 +123,10 @@ .getSaslAuthId() ); if ( dn.size() == 0 ) + { return; + } + if ( !nexusProxy.hasEntry( dn ) ) { throw new NameNotFoundException( dn + " does not exist" ); @@ -137,14 +140,12 @@ * constructor is used to propagate new contexts from existing contexts. * * @param principal the directory user principal that is propagated - * @param nexusProxy the intercepting proxy to the nexus - * @param env the environment properties used by this context * @param dn the distinguished name of this context */ protected ServerContext(DirectoryService service, LdapPrincipal principal, Name dn) throws NamingException { this.service = service; - this.dn = ( LdapName ) dn.clone(); + this.dn = ( LdapDN ) dn.clone(); this.env = ( Hashtable ) service.getConfiguration().getEnvironment().clone(); this.env.put( PROVIDER_URL, dn.toString() ); @@ -275,7 +276,7 @@ */ public Context createSubcontext( String name ) throws NamingException { - return createSubcontext( new LdapName( name ) ); + return createSubcontext( new LdapDN( name ) ); } @@ -285,7 +286,7 @@ public Context createSubcontext( Name name ) throws NamingException { Attributes attributes = new LockableAttributesImpl(); - LdapName target = buildTarget( name ); + LdapDN target = buildTarget( name ); String rdn = name.get( name.size() - 1 ); String rdnAttribute = NamespaceTools.getRdnAttribute( rdn ); @@ -302,7 +303,7 @@ * we need to copy over the controls as well to propagate the complete * environment besides whats in the hashtable for env. */ - nexusProxy.add( target.toString(), target, attributes ); + nexusProxy.add(target, attributes ); return new ServerLdapContext( service, principal, target ); } @@ -312,7 +313,7 @@ */ public void destroySubcontext( String name ) throws NamingException { - destroySubcontext( new LdapName( name ) ); + destroySubcontext( new LdapDN( name ) ); } @@ -321,7 +322,7 @@ */ public void destroySubcontext( Name name ) throws NamingException { - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); if ( target.size() == 0 ) { throw new LdapNoPermissionException( "can't delete the rootDSE" ); @@ -336,7 +337,7 @@ */ public void bind( String name, Object obj ) throws NamingException { - bind( new LdapName( name ), obj ); + bind( new LdapDN( name ), obj ); } @@ -351,8 +352,8 @@ if ( outAttrs != null ) { - Name target = buildTarget( name ); - nexusProxy.add( target.toString(), target, outAttrs ); + LdapDN target = buildTarget( name ); + nexusProxy.add( target, outAttrs ); return; } @@ -381,11 +382,11 @@ } } - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); // Serialize object into entry attributes and add it. JavaLdapSupport.serialize( attributes, obj ); - nexusProxy.add( target.toString(), target, attributes ); + nexusProxy.add( target, attributes ); } else if ( obj instanceof DirContext ) { @@ -400,8 +401,8 @@ } } - Name target = buildTarget( name ); - nexusProxy.add( target.toString(), target, attributes ); + LdapDN target = buildTarget( name ); + nexusProxy.add( target, attributes ); } else { @@ -415,7 +416,7 @@ */ public void rename( String oldName, String newName ) throws NamingException { - rename( new LdapName( oldName ), new LdapName( newName ) ); + rename( new LdapDN( oldName ), new LdapDN( newName ) ); } @@ -424,15 +425,19 @@ */ public void rename( Name oldName, Name newName ) throws NamingException { - Name oldDn = buildTarget( oldName ); - Name newDn = buildTarget( newName ); + LdapDN oldDn = buildTarget( oldName ); + LdapDN newDn = buildTarget( newName ); if ( oldDn.size() == 0 ) { throw new LdapNoPermissionException( "can't rename the rootDSE" ); } - Name oldBase = oldName.getPrefix( 1 ); - Name newBase = newName.getPrefix( 1 ); + // calculate parents + LdapDN oldBase = ( LdapDN ) oldName.clone(); + oldBase.remove( oldName.size() - 1 ); + LdapDN newBase = ( LdapDN ) newName.clone(); + newBase.remove( newName.size() - 1 ); + String newRdn = newName.get( newName.size() - 1 ); String oldRdn = oldName.get( oldName.size() - 1 ); boolean delOldRdn = true; @@ -463,7 +468,8 @@ } else { - Name parent = newDn.getPrefix( 1 ); + LdapDN parent = ( LdapDN ) newDn.clone(); + parent.remove( newDn.size() - 1 ); if ( newRdn.equalsIgnoreCase( oldRdn ) ) { nexusProxy.move( oldDn, parent ); @@ -481,7 +487,7 @@ */ public void rebind( String name, Object obj ) throws NamingException { - rebind( new LdapName( name ), obj ); + rebind( new LdapDN( name ), obj ); } @@ -490,7 +496,7 @@ */ public void rebind( Name name, Object obj ) throws NamingException { - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); if ( nexusProxy.hasEntry( target ) ) { nexusProxy.delete( target ); @@ -504,7 +510,7 @@ */ public void unbind( String name ) throws NamingException { - unbind( new LdapName( name ) ); + unbind( new LdapDN( name ) ); } @@ -524,11 +530,11 @@ { if ( StringTools.isEmpty( name ) ) { - return lookup( LdapName.EMPTY_LDAP_NAME ); + return lookup( LdapDN.EMPTY_LDAPDN ); } else { - return lookup( new LdapName( name ) ); + return lookup( new LdapDN( name ) ); } } @@ -539,7 +545,7 @@ public Object lookup( Name name ) throws NamingException { Object obj; - LdapName target = buildTarget( name ); + LdapDN target = buildTarget( name ); Attributes attributes = nexusProxy.lookup( target ); try @@ -604,13 +610,19 @@ * Non-federated implementation presuming the name argument is not a * composite name spanning multiple namespaces but a compound name in * the same LDAP namespace. Hence the parser returned is always the - * same as calling this method with the empty String. + * same as calling this method with the empty String. * * @see javax.naming.Context#getNameParser(java.lang.String) */ public NameParser getNameParser( String name ) throws NamingException { - return LdapName.getNameParser(); + return new NameParser() + { + public Name parse( String name ) throws NamingException + { + return new LdapDN( name ); + } + }; } @@ -624,7 +636,13 @@ */ public NameParser getNameParser( Name name ) throws NamingException { - return LdapName.getNameParser(); + return new NameParser() + { + public Name parse( String name ) throws NamingException + { + return new LdapDN( name ); + } + }; } @@ -633,7 +651,7 @@ */ public NamingEnumeration list( String name ) throws NamingException { - return list( new LdapName( name ) ); + return list( new LdapDN( name ) ); } @@ -651,7 +669,7 @@ */ public NamingEnumeration listBindings( String name ) throws NamingException { - return listBindings( new LdapName( name ) ); + return listBindings( new LdapDN( name ) ); } @@ -661,7 +679,7 @@ public NamingEnumeration listBindings( Name name ) throws NamingException { // Conduct a special one level search at base for all objects - Name base = buildTarget( name ); + LdapDN base = buildTarget( name ); PresenceNode filter = new PresenceNode( "objectClass" ); SearchControls ctls = new SearchControls(); ctls.setSearchScope( SearchControls.ONELEVEL_SCOPE ); @@ -674,7 +692,7 @@ */ public String composeName( String name, String prefix ) throws NamingException { - return composeName( new LdapName( name ), new LdapName( prefix ) ).toString(); + return composeName( new LdapDN( name ), new LdapDN( prefix ) ).toString(); } @@ -747,7 +765,7 @@ public void addNamingListener( String name, int scope, NamingListener namingListener ) throws NamingException { - addNamingListener( new LdapName( name ), scope, namingListener ); + addNamingListener( new LdapDN( name ), scope, namingListener ); } @@ -788,10 +806,9 @@ * @throws InvalidNameException if relativeName is not a valid name in * the LDAP namespace. */ - LdapName buildTarget( Name relativeName ) throws InvalidNameException + LdapDN buildTarget( Name relativeName ) throws InvalidNameException { - // Clone our DN or absolute path - LdapName target = ( LdapName ) dn.clone(); + LdapDN target = ( LdapDN ) dn.clone(); // Add to left hand side of cloned DN the relative name arg target.addAll( target.size(), relativeName ); Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerDirContext.java Tue Jun 13 20:22:05 2006 @@ -46,7 +46,7 @@ import org.apache.directory.shared.ldap.filter.FilterParserImpl; import org.apache.directory.shared.ldap.filter.PresenceNode; import org.apache.directory.shared.ldap.filter.SimpleNode; -import org.apache.directory.shared.ldap.name.LdapName; +import org.apache.directory.shared.ldap.name.LdapDN; import org.apache.directory.shared.ldap.util.NamespaceTools; @@ -82,8 +82,6 @@ * set the PROVIDER_URL to the distinguished name for this context. * * @param principal the principal which is propagated - * @param nexusProxy the intercepting proxy to the nexus - * @param env the environment properties used by this context * @param dn the distinguished name of this context */ protected ServerDirContext(DirectoryService service, LdapPrincipal principal, Name dn) throws NamingException @@ -101,7 +99,7 @@ */ public Attributes getAttributes( String name ) throws NamingException { - return getAttributes( new LdapName( name ) ); + return getAttributes( new LdapDN( name ) ); } @@ -120,7 +118,7 @@ */ public Attributes getAttributes( String name, String[] attrIds ) throws NamingException { - return getAttributes( new LdapName( name ), attrIds ); + return getAttributes( new LdapDN( name ), attrIds ); } @@ -140,7 +138,7 @@ */ public void modifyAttributes( String name, int modOp, Attributes attrs ) throws NamingException { - modifyAttributes( new LdapName( name ), modOp, attrs ); + modifyAttributes( new LdapDN( name ), modOp, attrs ); } @@ -160,7 +158,7 @@ */ public void modifyAttributes( String name, ModificationItem[] mods ) throws NamingException { - modifyAttributes( new LdapName( name ), mods ); + modifyAttributes( new LdapDN( name ), mods ); } @@ -180,7 +178,7 @@ */ public void bind( String name, Object obj, Attributes attrs ) throws NamingException { - bind( new LdapName( name ), obj, attrs ); + bind( new LdapDN( name ), obj, attrs ); } @@ -207,8 +205,8 @@ if ( null == obj ) { Attributes clone = ( Attributes ) attrs.clone(); - Name target = buildTarget( name ); - getNexusProxy().add( target.toString(), target, clone ); + LdapDN target = buildTarget( name ); + getNexusProxy().add( target, clone ); return; } @@ -218,7 +216,7 @@ if ( outAttrs != attrs ) { - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); Attributes attributes = ( Attributes ) attrs.clone(); if ( outAttrs != null && outAttrs.size() > 0 ) { @@ -228,7 +226,7 @@ attributes.put( ( Attribute ) list.next() ); } } - getNexusProxy().add( target.toString(), target, attributes ); + getNexusProxy().add( target, attributes ); return; } @@ -257,11 +255,11 @@ attributes.put( ( Attribute ) list.next() ); } } - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); // Serialize object into entry attributes and add it. JavaLdapSupport.serialize( attributes, obj ); - getNexusProxy().add( target.toString(), target, attributes ); + getNexusProxy().add( target, attributes ); } else if ( obj instanceof DirContext ) { @@ -275,8 +273,8 @@ attributes.put( ( Attribute ) list.next() ); } } - Name target = buildTarget( name ); - getNexusProxy().add( target.toString(), target, attributes ); + LdapDN target = buildTarget( name ); + getNexusProxy().add( target, attributes ); } else { @@ -291,7 +289,7 @@ */ public void rebind( String name, Object obj, Attributes attrs ) throws NamingException { - rebind( new LdapName( name ), obj, attrs ); + rebind( new LdapDN( name ), obj, attrs ); } @@ -301,7 +299,7 @@ */ public void rebind( Name name, Object obj, Attributes attrs ) throws NamingException { - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); if ( getNexusProxy().hasEntry( target ) ) { getNexusProxy().delete( target ); @@ -316,7 +314,7 @@ */ public DirContext createSubcontext( String name, Attributes attrs ) throws NamingException { - return createSubcontext( new LdapName( name ), attrs ); + return createSubcontext( new LdapDN( name ), attrs ); } @@ -331,7 +329,7 @@ return ( DirContext ) super.createSubcontext( name ); } - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); String rdn = name.get( name.size() - 1 ); String rdnAttribute = NamespaceTools.getRdnAttribute( rdn ); String rdnValue = NamespaceTools.getRdnValue( rdn ); @@ -348,7 +346,7 @@ } // Add the new context to the server which as a side effect adds - getNexusProxy().add( target.toString(), target, attributes ); + getNexusProxy().add( target, attributes ); // Initialize the new context return new ServerLdapContext( getService(), getPrincipal(), target ); @@ -401,7 +399,7 @@ */ public NamingEnumeration search( String name, Attributes matchingAttributes ) throws NamingException { - return search( new LdapName( name ), matchingAttributes, null ); + return search( new LdapDN( name ), matchingAttributes, null ); } @@ -422,7 +420,7 @@ public NamingEnumeration search( String name, Attributes matchingAttributes, String[] attributesToReturn ) throws NamingException { - return search( new LdapName( name ), matchingAttributes, attributesToReturn ); + return search( new LdapDN( name ), matchingAttributes, attributesToReturn ); } @@ -434,7 +432,7 @@ throws NamingException { SearchControls ctls = new SearchControls(); - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); // If we need to return specific attributes add em to the SearchControls if ( null != attributesToReturn ) @@ -501,7 +499,7 @@ */ public NamingEnumeration search( String name, String filter, SearchControls cons ) throws NamingException { - return search( new LdapName( name ), filter, cons ); + return search( new LdapDN( name ), filter, cons ); } @@ -522,7 +520,7 @@ newName = LdapDN.oidToName( newName, DnOidContainer.getOids() ); Name target = buildTarget( ((LdapDN)newName).toLdapName() );*/ - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); return getNexusProxy().search( target, getEnvironment(), filter, cons ); } @@ -534,7 +532,7 @@ public NamingEnumeration search( Name name, String filter, SearchControls cons ) throws NamingException { ExprNode filterNode; - Name target = buildTarget( name ); + LdapDN target = buildTarget( name ); try { @@ -566,7 +564,7 @@ public NamingEnumeration search( String name, String filterExpr, Object[] filterArgs, SearchControls cons ) throws NamingException { - return search( new LdapName( name ), filterExpr, filterArgs, cons ); + return search( new LdapDN( name ), filterExpr, filterArgs, cons ); } @@ -654,7 +652,7 @@ public void addNamingListener( String name, String filter, SearchControls searchControls, NamingListener namingListener ) throws NamingException { - addNamingListener( new LdapName( name ), filter, searchControls, namingListener ); + addNamingListener( new LdapDN( name ), filter, searchControls, namingListener ); } @@ -696,6 +694,6 @@ public void addNamingListener( String name, String filter, Object[] objects, SearchControls searchControls, NamingListener namingListener ) throws NamingException { - addNamingListener( new LdapName( name ), filter, objects, searchControls, namingListener ); + addNamingListener( new LdapDN( name ), filter, objects, searchControls, namingListener ); } } Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/jndi/ServerLdapContext.java Tue Jun 13 20:22:05 2006 @@ -31,8 +31,7 @@ import org.apache.directory.server.core.authn.LdapPrincipal; import org.apache.directory.server.core.referral.ReferralService; import org.apache.directory.shared.ldap.NotImplementedException; - -import com.sun.jndi.ldap.LdapName; +import org.apache.directory.shared.ldap.name.LdapDN; /** @@ -56,7 +55,7 @@ * @param env the JNDI environment parameters * @throws NamingException the context cannot be created */ - public ServerLdapContext(DirectoryService service, Hashtable env) throws NamingException + public ServerLdapContext( DirectoryService service, Hashtable env ) throws NamingException { super( service, env ); } @@ -67,11 +66,9 @@ * set the PROVIDER_URL to the distinguished name for this context. * * @param principal the directory user principal that is propagated - * @param nexusProxy the intercepting proxy to the nexus - * @param env the environment properties used by this context * @param dn the distinguished name of this context */ - ServerLdapContext(DirectoryService service, LdapPrincipal principal, Name dn) throws NamingException + ServerLdapContext( DirectoryService service, LdapPrincipal principal, Name dn ) throws NamingException { super( service, principal, dn ); } @@ -162,7 +159,7 @@ * permission is not allowed for this operation or the oid is not recognized, * or the attribute is not present in the entry ... you get the picture. */ - public boolean compare( Name name, String oid, Object value ) throws NamingException + public boolean compare( LdapDN name, String oid, Object value ) throws NamingException { return super.getNexusProxy().compare( name, oid, value ); } @@ -179,7 +176,7 @@ public void ldapUnbind() throws NamingException { String bindDn = ( String ) getEnvironment().get( Context.SECURITY_PRINCIPAL ); - super.getNexusProxy().unbind( new LdapName( bindDn ) ); + super.getNexusProxy().unbind( new LdapDN( bindDn ) ); } 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=414035&r1=414034&r2=414035&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 Tue Jun 13 20:22:05 2006 @@ -19,7 +19,6 @@ import java.util.Map; -import javax.naming.Name; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attributes; @@ -27,18 +26,22 @@ import javax.naming.directory.SearchControls; import org.apache.directory.server.core.DirectoryServiceConfiguration; +import org.apache.directory.server.core.configuration.DirectoryPartitionConfiguration; import org.apache.directory.server.core.configuration.InterceptorConfiguration; import org.apache.directory.server.core.interceptor.BaseInterceptor; import org.apache.directory.server.core.interceptor.NextInterceptor; import org.apache.directory.server.core.partition.DirectoryPartitionNexus; import org.apache.directory.server.core.schema.AttributeTypeRegistry; +import org.apache.directory.server.core.schema.ConcreteNameComponentNormalizer; +import org.apache.directory.server.core.schema.OidRegistry; + import org.apache.directory.shared.ldap.filter.BranchNode; import org.apache.directory.shared.ldap.filter.ExprNode; import org.apache.directory.shared.ldap.filter.LeafNode; -import org.apache.directory.shared.ldap.name.DnParser; import org.apache.directory.shared.ldap.name.NameComponentNormalizer; -import org.apache.directory.shared.ldap.schema.AttributeType; +import org.apache.directory.shared.ldap.name.LdapDN; import org.apache.directory.shared.ldap.util.EmptyEnumeration; + import org.slf4j.LoggerFactory; import org.slf4j.Logger; @@ -56,20 +59,18 @@ /** logger used by this class */ private static final Logger log = LoggerFactory.getLogger( NormalizationService.class ); - /** the parser used for normalizing distinguished names */ - private DnParser parser; /** a filter node value normalizer and undefined node remover */ - private ValueNormalizingVisitor visitor; + private NormalizingVisitor visitor; /** the attributeType registry used for normalization and determining if some filter nodes are undefined */ - private AttributeTypeRegistry registry; + private AttributeTypeRegistry attributeRegistry; public void init( DirectoryServiceConfiguration factoryCfg, InterceptorConfiguration cfg ) throws NamingException { - registry = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry(); - NameComponentNormalizer ncn = new PerComponentNormalizer(); - parser = new DnParser( ncn ); - visitor = new ValueNormalizingVisitor( ncn ); + OidRegistry oidRegistry = factoryCfg.getGlobalRegistries().getOidRegistry(); + attributeRegistry = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry(); + NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( attributeRegistry, oidRegistry ); + visitor = new NormalizingVisitor( ncn, oidRegistry ); } @@ -82,70 +83,70 @@ // Normalize all Name based arguments for ContextPartition interface operations // ------------------------------------------------------------------------ - public void add( NextInterceptor nextInterceptor, String upName, Name normName, Attributes attrs ) + public void add(NextInterceptor nextInterceptor, LdapDN name, Attributes attrs) throws NamingException { - normName = parser.parse( normName.toString() ); - nextInterceptor.add( upName, normName, attrs ); + LdapDN normalized = LdapDN.normalize( name ); + nextInterceptor.add( normalized, attrs ); } - public void delete( NextInterceptor nextInterceptor, Name name ) throws NamingException + public void delete( NextInterceptor nextInterceptor, LdapDN name ) throws NamingException { - name = parser.parse( name.toString() ); - nextInterceptor.delete( name ); + LdapDN normalized = LdapDN.normalize( name ); + nextInterceptor.delete( normalized ); } - public void modify( NextInterceptor nextInterceptor, Name name, int modOp, Attributes attrs ) + public void modify( NextInterceptor nextInterceptor, LdapDN name, int modOp, Attributes attrs ) throws NamingException { - name = parser.parse( name.toString() ); - nextInterceptor.modify( name, modOp, attrs ); + LdapDN normalized = LdapDN.normalize( name ); + nextInterceptor.modify( normalized, modOp, attrs ); } - public void modify( NextInterceptor nextInterceptor, Name name, ModificationItem[] items ) throws NamingException + public void modify( NextInterceptor nextInterceptor, LdapDN name, ModificationItem[] items ) throws NamingException { - name = parser.parse( name.toString() ); - nextInterceptor.modify( name, items ); + LdapDN normalized = LdapDN.normalize( name ); + nextInterceptor.modify( normalized, items ); } - public void modifyRn( NextInterceptor nextInterceptor, Name name, String newRn, boolean deleteOldRn ) + public void modifyRn( NextInterceptor nextInterceptor, LdapDN name, String newRn, boolean deleteOldRn ) throws NamingException { - name = parser.parse( name.toString() ); - nextInterceptor.modifyRn( name, newRn, deleteOldRn ); + LdapDN normalized = LdapDN.normalize( name ); + nextInterceptor.modifyRn( normalized, newRn, deleteOldRn ); } - public void move( NextInterceptor nextInterceptor, Name name, Name newParentName ) throws NamingException + public void move( NextInterceptor nextInterceptor, LdapDN name, LdapDN newParentName ) throws NamingException { - name = parser.parse( name.toString() ); - newParentName = parser.parse( newParentName.toString() ); - nextInterceptor.move( name, newParentName ); + LdapDN normalized = LdapDN.normalize( name ); + newParentName.normalize(); + nextInterceptor.move( normalized, newParentName ); } - public void move( NextInterceptor nextInterceptor, Name name, Name newParentName, String newRn, boolean deleteOldRn ) + public void move( NextInterceptor nextInterceptor, LdapDN name, LdapDN newParentName, String newRn, boolean deleteOldRn ) throws NamingException { - name = parser.parse( name.toString() ); - newParentName = parser.parse( newParentName.toString() ); - nextInterceptor.move( name, newParentName, newRn, deleteOldRn ); + LdapDN normalized = LdapDN.normalize( name ); + newParentName.normalize(); + nextInterceptor.move( normalized, newParentName, newRn, deleteOldRn ); } - public NamingEnumeration search( NextInterceptor nextInterceptor, Name base, Map env, ExprNode filter, + public NamingEnumeration search( NextInterceptor nextInterceptor, LdapDN base, Map env, ExprNode filter, SearchControls searchCtls ) throws NamingException { - base = parser.parse( base.toString() ); + base.normalize(); if ( filter.isLeaf() ) { LeafNode ln = ( LeafNode ) filter; - if ( !registry.hasAttributeType( ln.getAttribute() ) ) + if ( !attributeRegistry.hasAttributeType( ln.getAttribute() ) ) { StringBuffer buf = new StringBuffer(); buf.append( "undefined filter based on undefined attributeType '" ); @@ -156,7 +157,52 @@ } } - filter.accept( visitor ); + boolean isFailure = true; + while ( isFailure && ( filter != null ) ) + { + try + { + if ( filter.isLeaf() ) + { + LeafNode ln = ( LeafNode ) filter; + if ( !attributeRegistry.hasAttributeType( ln.getAttribute() ) ) + { + StringBuffer buf = new StringBuffer(); + buf.append( "undefined filter based on undefined attributeType '" ); + buf.append( ln.getAttribute() ); + buf.append( "' not evaluted at all. Returning empty enumeration." ); + log.warn( buf.toString() ); + return new EmptyEnumeration(); + } + } + + filter.accept( visitor ); + isFailure = false; + } + catch( UndefinedFilterAttributeException e ) + { + isFailure = true; + if ( log.isWarnEnabled() ) + { + log.warn( "An undefined attribute was found within the supplied search filter. " + + "The node associated with the filter has been removed.", e.getCause() ); + } + + // we can only get here if the filter is a branch node with only leaves + // note that in this case the undefined node will not be removed. + BranchNode bnode = ( BranchNode ) filter; + if ( bnode.isNegation() ) + { + return new EmptyEnumeration(); + } + + bnode.getChildren().remove( e.getUndefinedFilterNode() ); + if ( bnode.getChildren().size() < 2 ) + { + filter = bnode.getChild(); + } + } + } // check that after pruning we have valid branch node at the top if ( !filter.isLeaf() ) @@ -181,37 +227,37 @@ } - public boolean hasEntry( NextInterceptor nextInterceptor, Name name ) throws NamingException + public boolean hasEntry( NextInterceptor nextInterceptor, LdapDN name ) throws NamingException { - name = parser.parse( name.toString() ); + name = LdapDN.normalize( name ); return nextInterceptor.hasEntry( name ); } - public boolean isSuffix( NextInterceptor nextInterceptor, Name name ) throws NamingException + public boolean isSuffix( NextInterceptor nextInterceptor, LdapDN name ) throws NamingException { - name = parser.parse( name.toString() ); + name = LdapDN.normalize( name ); return nextInterceptor.isSuffix( name ); } - public NamingEnumeration list( NextInterceptor nextInterceptor, Name base ) throws NamingException + public NamingEnumeration list( NextInterceptor nextInterceptor, LdapDN base ) throws NamingException { - base = parser.parse( base.toString() ); + base = LdapDN.normalize( base ); return nextInterceptor.list( base ); } - public Attributes lookup( NextInterceptor nextInterceptor, Name name ) throws NamingException + public Attributes lookup( NextInterceptor nextInterceptor, LdapDN name ) throws NamingException { - name = parser.parse( name.toString() ); + name = LdapDN.normalize( name ); return nextInterceptor.lookup( name ); } - public Attributes lookup( NextInterceptor nextInterceptor, Name name, String[] attrIds ) throws NamingException + public Attributes lookup( NextInterceptor nextInterceptor, LdapDN name, String[] attrIds ) throws NamingException { - name = parser.parse( name.toString() ); + name = LdapDN.normalize( name ); return nextInterceptor.lookup( name, attrIds ); } @@ -220,65 +266,36 @@ // Normalize all Name based arguments for other interface operations // ------------------------------------------------------------------------ - public Name getMatchedName( NextInterceptor nextInterceptor, Name name, boolean normalized ) throws NamingException + public LdapDN getMatchedName ( NextInterceptor nextInterceptor, LdapDN name ) throws NamingException { - name = parser.parse( name.toString() ); - return nextInterceptor.getMatchedName( name, normalized ); + name = LdapDN.normalize( name ); + return nextInterceptor.getMatchedName( name ); } - public Name getSuffix( NextInterceptor nextInterceptor, Name name, boolean normalized ) throws NamingException + public LdapDN getSuffix ( NextInterceptor nextInterceptor, LdapDN name ) throws NamingException { - name = parser.parse( name.toString() ); - return nextInterceptor.getSuffix( name, normalized ); + name = LdapDN.normalize( name ); + return nextInterceptor.getSuffix( name ); } - public boolean compare( NextInterceptor next, Name name, String oid, Object value ) throws NamingException + public boolean compare( NextInterceptor next, LdapDN name, String oid, Object value ) throws NamingException { - name = parser.parse( name.toString() ); + name = LdapDN.normalize( name ); return next.compare( name, oid, value ); } - /** - * A normalizer that normalizes each name component specifically according to - * the attribute type of the name component. - */ - private class PerComponentNormalizer implements NameComponentNormalizer - { - public String normalizeByName( String name, String value ) throws NamingException - { - AttributeType type = registry.lookup( name ); - return ( String ) type.getEquality().getNormalizer().normalize( value ); - } - - - public String normalizeByName( String name, byte[] value ) throws NamingException - { - AttributeType type = registry.lookup( name ); - - return ( String ) type.getEquality().getNormalizer().normalize( value ); - } - - - public String normalizeByOid( String oid, String value ) throws NamingException - { - AttributeType type = registry.lookup( oid ); - return ( String ) type.getEquality().getNormalizer().normalize( value ); - } - - public boolean isDefined( String id ) - { - return registry.hasAttributeType( id ); - } + public void addContextPartition( NextInterceptor next, DirectoryPartitionConfiguration cfg ) throws NamingException + { + next.addContextPartition( cfg ); + } - public String normalizeByOid( String oid, byte[] value ) throws NamingException - { - AttributeType type = registry.lookup( oid ); - - return ( String ) type.getEquality().getNormalizer().normalize( value ); - } + public void removeContextPartition( NextInterceptor next, LdapDN suffix ) throws NamingException + { + suffix = LdapDN.normalize( suffix ); + next.removeContextPartition( suffix ); } } Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java Tue Jun 13 20:22:05 2006 @@ -46,6 +46,7 @@ import org.apache.directory.shared.ldap.schema.AttributeType; import org.apache.directory.shared.ldap.schema.UsageEnum; import org.apache.directory.shared.ldap.util.DateUtils; +import org.apache.directory.shared.ldap.name.LdapDN; /** @@ -107,7 +108,7 @@ /** * Adds extra operational attributes to the entry before it is added. */ - public void add( NextInterceptor nextInterceptor, String upName, Name normName, Attributes entry ) + public void add(NextInterceptor nextInterceptor, LdapDN normName, Attributes entry) throws NamingException { String principal = getPrincipal().getName(); @@ -120,11 +121,11 @@ attribute.add( DateUtils.getGeneralizedTime() ); entry.put( attribute ); - nextInterceptor.add( upName, normName, entry ); + nextInterceptor.add(normName, entry ); } - public void modify( NextInterceptor nextInterceptor, Name name, int modOp, Attributes attrs ) + public void modify( NextInterceptor nextInterceptor, LdapDN name, int modOp, Attributes attrs ) throws NamingException { nextInterceptor.modify( name, modOp, attrs ); @@ -143,7 +144,7 @@ } - public void modify( NextInterceptor nextInterceptor, Name name, ModificationItem[] items ) throws NamingException + public void modify( NextInterceptor nextInterceptor, LdapDN name, ModificationItem[] items ) throws NamingException { nextInterceptor.modify( name, items ); @@ -161,7 +162,7 @@ } - public void modifyRn( NextInterceptor nextInterceptor, Name name, String newRn, boolean deleteOldRn ) + public void modifyRn( NextInterceptor nextInterceptor, LdapDN name, String newRn, boolean deleteOldRn ) throws NamingException { nextInterceptor.modifyRn( name, newRn, deleteOldRn ); @@ -176,12 +177,15 @@ attribute.add( DateUtils.getGeneralizedTime() ); attributes.put( attribute ); - Name newDn = name.getPrefix( 1 ).add( newRn ); + LdapDN newDn = ( LdapDN ) name.clone(); + newDn.remove( name.size() - 1 ); + newDn.add( newRn ); + newDn.normalize(); nexus.modify( newDn, DirContext.REPLACE_ATTRIBUTE, attributes ); } - public void move( NextInterceptor nextInterceptor, Name name, Name newParentName ) throws NamingException + public void move( NextInterceptor nextInterceptor, LdapDN name, LdapDN newParentName ) throws NamingException { nextInterceptor.move( name, newParentName ); @@ -199,7 +203,7 @@ } - public void move( NextInterceptor nextInterceptor, Name name, Name newParentName, String newRn, boolean deleteOldRn ) + public void move( NextInterceptor nextInterceptor, LdapDN name, LdapDN newParentName, String newRn, boolean deleteOldRn ) throws NamingException { nextInterceptor.move( name, newParentName, newRn, deleteOldRn ); @@ -218,7 +222,7 @@ } - public Attributes lookup( NextInterceptor nextInterceptor, Name name ) throws NamingException + public Attributes lookup( NextInterceptor nextInterceptor, LdapDN name ) throws NamingException { Attributes result = nextInterceptor.lookup( name ); if ( result == null ) @@ -230,7 +234,7 @@ } - public Attributes lookup( NextInterceptor nextInterceptor, Name name, String[] attrIds ) throws NamingException + public Attributes lookup( NextInterceptor nextInterceptor, LdapDN name, String[] attrIds ) throws NamingException { Attributes result = nextInterceptor.lookup( name, attrIds ); if ( result == null ) @@ -243,7 +247,7 @@ } - public NamingEnumeration list( NextInterceptor nextInterceptor, Name base ) throws NamingException + public NamingEnumeration list( NextInterceptor nextInterceptor, LdapDN base ) throws NamingException { NamingEnumeration e = nextInterceptor.list( base ); Invocation invocation = InvocationStack.getInstance().peek(); @@ -251,8 +255,8 @@ } - public NamingEnumeration search( NextInterceptor nextInterceptor, Name base, Map env, ExprNode filter, - SearchControls searchCtls ) throws NamingException + public NamingEnumeration search( NextInterceptor nextInterceptor, LdapDN base, Map env, ExprNode filter, + SearchControls searchCtls ) throws NamingException { Invocation invocation = InvocationStack.getInstance().peek(); NamingEnumeration e = nextInterceptor.search( base, env, filter, searchCtls ); Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/AbstractDirectoryPartition.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/AbstractDirectoryPartition.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/AbstractDirectoryPartition.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/AbstractDirectoryPartition.java Tue Jun 13 20:22:05 2006 @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.List; -import javax.naming.Name; import javax.naming.NameNotFoundException; import javax.naming.NamingEnumeration; import javax.naming.NamingException; @@ -31,7 +30,7 @@ import org.apache.directory.server.core.DirectoryServiceConfiguration; import org.apache.directory.server.core.configuration.DirectoryPartitionConfiguration; -import org.apache.directory.shared.ldap.name.LdapName; +import org.apache.directory.shared.ldap.name.LdapDN; /** @@ -50,6 +49,8 @@ private DirectoryPartitionConfiguration cfg; /** true if and only if this partition is initialized. */ private boolean initialized; + /** the normalized suffix DN for this partition */ + private LdapDN suffixDn; protected AbstractDirectoryPartition() @@ -161,23 +162,21 @@ } - public final Name getSuffix( boolean normalized ) throws NamingException + public final LdapDN getSuffix() throws NamingException { - if ( normalized ) + if ( suffixDn == null ) { - return getConfiguration().getNormalizedSuffix( - getFactoryConfiguration().getGlobalRegistries().getMatchingRuleRegistry() ); - } - else - { - return new LdapName( getConfiguration().getSuffix() ); + suffixDn = new LdapDN( cfg.getSuffix() ); + suffixDn.normalize(); } + + return suffixDn; } - public final boolean isSuffix( Name name ) throws NamingException + public final boolean isSuffix( LdapDN name ) throws NamingException { - return getSuffix( true ).equals( name ) || getSuffix( false ).equals( name ); + return getSuffix().equals( name ); } @@ -190,11 +189,11 @@ /** - * This method calls {@link #lookup(Name)} and return true + * This method calls {@link DirectoryPartition#lookup(org.apache.directory.shared.ldap.name.LdapDN)} and return true * if it returns an entry by default. Please override this method if * there is more effective way for your implementation. */ - public boolean hasEntry( Name name ) throws NamingException + public boolean hasEntry( LdapDN name ) throws NamingException { try { @@ -208,11 +207,11 @@ /** - * This method calls {@link DirectoryPartition#lookup(Name, String[])} + * This method calls {@link DirectoryPartition#lookup(org.apache.directory.shared.ldap.name.LdapDN,String[])} * with null attributeIds by default. Please override * this method if there is more effective way for your implementation. */ - public Attributes lookup( Name name ) throws NamingException + public Attributes lookup( LdapDN name ) throws NamingException { return lookup( name, null ); } @@ -220,12 +219,12 @@ /** * This method forwards the request to - * {@link DirectoryPartition#modify(Name, ModificationItem[])} after + * {@link DirectoryPartition#modify(org.apache.directory.shared.ldap.name.LdapDN,javax.naming.directory.ModificationItem[])} after * translating parameters to {@link ModificationItem}[] by default. * Please override this method if there is more effactive way for your * implementation. */ - public void modify( Name name, int modOp, Attributes mods ) throws NamingException + public void modify( LdapDN name, int modOp, Attributes mods ) throws NamingException { List items = new ArrayList( mods.size() ); NamingEnumeration e = mods.getAll(); @@ -241,14 +240,14 @@ /** - * This method calls {@link DirectoryPartition#move(Name, Name)} and - * {@link DirectoryPartition#modifyRn(Name, String, boolean)} subsequently + * This method calls {@link DirectoryPartition#move(org.apache.directory.shared.ldap.name.LdapDN,org.apache.directory.shared.ldap.name.LdapDN)} and + * {@link DirectoryPartition#modifyRn(org.apache.directory.shared.ldap.name.LdapDN,String,boolean)} subsequently * by default. Please override this method if there is more effactive * way for your implementation. */ - public void move( Name oldName, Name newParentName, String newRn, boolean deleteOldRn ) throws NamingException + public void move( LdapDN oldName, LdapDN newParentName, String newRn, boolean deleteOldRn ) throws NamingException { - Name newName = ( Name ) newParentName.clone(); + LdapDN newName = ( LdapDN ) newParentName.clone(); newName.add( newRn ); move( oldName, newParentName ); modifyRn( newName, newRn, deleteOldRn ); @@ -259,7 +258,7 @@ * This method throws {@link OperationNotSupportedException} by default. * Please override this method to implement move operation. */ - public void move( Name oldName, Name newParentName ) throws NamingException + public void move( LdapDN oldName, LdapDN newParentName ) throws NamingException { throw new OperationNotSupportedException( "Moving an entry to other parent entry is not supported." ); } Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DefaultDirectoryPartitionNexus.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DefaultDirectoryPartitionNexus.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DefaultDirectoryPartitionNexus.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DefaultDirectoryPartitionNexus.java Tue Jun 13 20:22:05 2006 @@ -30,7 +30,6 @@ import java.util.Set; import javax.naming.ConfigurationException; -import javax.naming.Name; import javax.naming.NameNotFoundException; import javax.naming.NamingEnumeration; import javax.naming.NamingException; @@ -60,7 +59,7 @@ import org.apache.directory.shared.ldap.message.PersistentSearchControl; import org.apache.directory.shared.ldap.message.SubentriesControl; import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect; -import org.apache.directory.shared.ldap.name.LdapName; +import org.apache.directory.shared.ldap.name.LdapDN; import org.apache.directory.shared.ldap.schema.AttributeType; import org.apache.directory.shared.ldap.schema.Normalizer; import org.apache.directory.shared.ldap.util.DateUtils; @@ -244,6 +243,7 @@ indexedSystemAttrs.add( Oid.ONEALIAS ); indexedSystemAttrs.add( Oid.SUBALIAS ); indexedSystemAttrs.add( Oid.UPDN ); + indexedSystemAttrs.add( "objectClass" ); systemCfg.setIndexedAttributes( indexedSystemAttrs ); // Add context entry for system partition @@ -259,7 +259,7 @@ systemCfg.setContextEntry( systemEntry ); system.init( factoryCfg, systemCfg ); - String key = system.getSuffix( true ).toString(); + String key = system.getSuffix().toString(); if ( partitions.containsKey( key ) ) { throw new ConfigurationException( "Duplicate partition suffix: " + key ); @@ -267,7 +267,7 @@ partitions.put( key, system ); Attribute namingContexts = rootDSE.get( NAMINGCTXS_ATTR ); - namingContexts.add( system.getSuffix( false ).toString() ); + namingContexts.add( system.getUpSuffix().toString() ); return systemCfg; } @@ -295,7 +295,7 @@ String suffix = ( String ) suffixes.next(); try { - removeContextPartition( new LdapName( suffix ) ); + removeContextPartition( new LdapDN( suffix ) ); } catch ( NamingException e ) { @@ -348,7 +348,7 @@ // ContextPartitionNexus Method Implementations // ------------------------------------------------------------------------ - public boolean compare( Name name, String oid, Object value ) throws NamingException + public boolean compare( LdapDN name, String oid, Object value ) throws NamingException { DirectoryPartition partition = getBackend( name ); AttributeTypeRegistry registry = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry(); @@ -425,14 +425,14 @@ } partition.init( factoryCfg, config ); - partitions.put( partition.getSuffix( true ).toString(), partition ); + partitions.put( partition.getSuffix().toString(), partition ); Attribute namingContexts = rootDSE.get( NAMINGCTXS_ATTR ); - namingContexts.add( partition.getSuffix( false ).toString() ); + namingContexts.add( partition.getUpSuffix() ); } - public synchronized void removeContextPartition( Name suffix ) throws NamingException + public synchronized void removeContextPartition( LdapDN suffix ) throws NamingException { String key = suffix.toString(); DirectoryPartition partition = ( DirectoryPartition ) partitions.get( key ); @@ -442,7 +442,7 @@ } Attribute namingContexts = rootDSE.get( NAMINGCTXS_ATTR ); - namingContexts.remove( partition.getSuffix( false ).toString() ); + namingContexts.remove( partition.getUpSuffix() ); partitions.remove( key ); partition.sync(); @@ -466,11 +466,11 @@ /** - * @see DirectoryPartitionNexus#getMatchedName(javax.naming.Name, boolean) + * @see DirectoryPartitionNexus#getMatchedName(org.apache.directory.shared.ldap.name.LdapDN) */ - public Name getMatchedName( Name dn, boolean normalized ) throws NamingException + public LdapDN getMatchedName ( LdapDN dn ) throws NamingException { - dn = ( Name ) dn.clone(); + dn = ( LdapDN ) dn.clone(); while ( dn.size() > 0 ) { if ( hasEntry( dn ) ) @@ -478,33 +478,38 @@ return dn; } - dn = dn.getPrefix( 1 ); + dn.remove( dn.size() - 1 ); } return dn; } - public Name getSuffix( boolean normalized ) + public LdapDN getSuffix() { - return new LdapName(); + return LdapDN.EMPTY_LDAPDN; + } + + public LdapDN getUpSuffix() + { + return LdapDN.EMPTY_LDAPDN; } /** - * @see org.apache.directory.server.core.partition.DirectoryPartitionNexus#getSuffix(javax.naming.Name, boolean) + * @see DirectoryPartitionNexus#getSuffix(org.apache.directory.shared.ldap.name.LdapDN) */ - public Name getSuffix( Name dn, boolean normalized ) throws NamingException + public LdapDN getSuffix ( LdapDN dn ) throws NamingException { DirectoryPartition backend = getBackend( dn ); - return backend.getSuffix( normalized ); + return backend.getSuffix(); } /** - * @see org.apache.directory.server.core.partition.DirectoryPartitionNexus#listSuffixes(boolean) + * @see DirectoryPartitionNexus#listSuffixes() */ - public Iterator listSuffixes( boolean normalized ) throws NamingException + public Iterator listSuffixes () throws NamingException { return Collections.unmodifiableSet( partitions.keySet() ).iterator(); } @@ -531,8 +536,8 @@ private void unregister( DirectoryPartition partition ) throws NamingException { Attribute namingContexts = rootDSE.get( NAMINGCTXS_ATTR ); - namingContexts.remove( partition.getSuffix( false ).toString() ); - partitions.remove( partition.getSuffix( true ).toString() ); + namingContexts.remove( partition.getSuffix().toString() ); + partitions.remove( partition.getSuffix().toString() ); } @@ -540,14 +545,14 @@ // DirectoryPartition Interface Method Implementations // ------------------------------------------------------------------------ - public void bind( Name bindDn, byte[] credentials, List mechanisms, String saslAuthId ) throws NamingException + public void bind( LdapDN bindDn, byte[] credentials, List mechanisms, String saslAuthId ) throws NamingException { DirectoryPartition partition = getBackend( bindDn ); partition.bind( bindDn, credentials, mechanisms, saslAuthId ); } - public void unbind( Name bindDn ) throws NamingException + public void unbind( LdapDN bindDn ) throws NamingException { DirectoryPartition partition = getBackend( bindDn ); partition.unbind( bindDn ); @@ -555,9 +560,9 @@ /** - * @see DirectoryPartition#delete(javax.naming.Name) + * @see DirectoryPartition#delete(org.apache.directory.shared.ldap.name.LdapDN) */ - public void delete( Name dn ) throws NamingException + public void delete( LdapDN dn ) throws NamingException { DirectoryPartition backend = getBackend( dn ); backend.delete( dn ); @@ -571,19 +576,19 @@ * here so backend implementors do not have to worry about performing these * kinds of checks. * - * @see org.apache.directory.server.core.partition.DirectoryPartition#add(String, Name, Attributes) + * @see DirectoryPartition#add(org.apache.directory.shared.ldap.name.LdapDN,javax.naming.directory.Attributes) */ - public void add( String updn, Name dn, Attributes an_entry ) throws NamingException + public void add( LdapDN dn, Attributes entry ) throws NamingException { DirectoryPartition backend = getBackend( dn ); - backend.add( updn, dn, an_entry ); + backend.add( dn, entry ); } /** - * @see DirectoryPartition#modify(Name, int,Attributes) + * @see DirectoryPartition#modify(org.apache.directory.shared.ldap.name.LdapDN,int,javax.naming.directory.Attributes) */ - public void modify( Name dn, int modOp, Attributes mods ) throws NamingException + public void modify( LdapDN dn, int modOp, Attributes mods ) throws NamingException { DirectoryPartition backend = getBackend( dn ); backend.modify( dn, modOp, mods ); @@ -591,10 +596,9 @@ /** - * @see DirectoryPartition#modify(javax.naming.Name, - * javax.naming.directory.ModificationItem[]) + * @see DirectoryPartition#modify(org.apache.directory.shared.ldap.name.LdapDN,javax.naming.directory.ModificationItem[]) */ - public void modify( Name dn, ModificationItem[] mods ) throws NamingException + public void modify( LdapDN dn, ModificationItem[] mods ) throws NamingException { DirectoryPartition backend = getBackend( dn ); backend.modify( dn, mods ); @@ -602,9 +606,9 @@ /** - * @see DirectoryPartition#list(javax.naming.Name) + * @see DirectoryPartition#list(org.apache.directory.shared.ldap.name.LdapDN) */ - public NamingEnumeration list( Name base ) throws NamingException + public NamingEnumeration list( LdapDN base ) throws NamingException { DirectoryPartition backend = getBackend( base ); return backend.list( base ); @@ -612,16 +616,18 @@ /** - * @see DirectoryPartition#search(Name, Map, ExprNode, SearchControls) + * @see DirectoryPartition#search(org.apache.directory.shared.ldap.name.LdapDN,java.util.Map,org.apache.directory.shared.ldap.filter.ExprNode,javax.naming.directory.SearchControls) */ - public NamingEnumeration search( Name base, Map env, ExprNode filter, SearchControls searchCtls ) + public NamingEnumeration search( LdapDN base, Map env, ExprNode filter, SearchControls searchCtls ) throws NamingException { if ( base.size() == 0 ) { boolean isObjectScope = searchCtls.getSearchScope() == SearchControls.OBJECT_SCOPE; - boolean isSearchAll = ( ( PresenceNode ) filter ).getAttribute().equalsIgnoreCase( "objectclass" ); + + // test for (objectClass=*) + boolean isSearchAll = ( ( PresenceNode ) filter ).getAttribute().equalsIgnoreCase( "2.5.4.0" ); /* * if basedn is "", filter is "(objectclass=*)" and scope is object @@ -670,9 +676,9 @@ /** - * @see DirectoryPartition#lookup(javax.naming.Name) + * @see DirectoryPartition#lookup(org.apache.directory.shared.ldap.name.LdapDN) */ - public Attributes lookup( Name dn ) throws NamingException + public Attributes lookup( LdapDN dn ) throws NamingException { if ( dn.size() == 0 ) { @@ -685,9 +691,9 @@ /** - * @see org.apache.directory.server.core.partition.DirectoryPartition#lookup(javax.naming.Name, String[]) + * @see DirectoryPartition#lookup(org.apache.directory.shared.ldap.name.LdapDN,String[]) */ - public Attributes lookup( Name dn, String[] attrIds ) throws NamingException + public Attributes lookup( LdapDN dn, String[] attrIds ) throws NamingException { if ( dn.size() == 0 ) { @@ -708,9 +714,9 @@ /** - * @see DirectoryPartition#hasEntry(javax.naming.Name) + * @see DirectoryPartition#hasEntry(org.apache.directory.shared.ldap.name.LdapDN) */ - public boolean hasEntry( Name dn ) throws NamingException + public boolean hasEntry( LdapDN dn ) throws NamingException { if ( log.isDebugEnabled() ) { @@ -728,18 +734,18 @@ /** - * @see DirectoryPartition#isSuffix(javax.naming.Name) + * @see DirectoryPartition#isSuffix(org.apache.directory.shared.ldap.name.LdapDN) */ - public boolean isSuffix( Name dn ) + public boolean isSuffix( LdapDN dn ) { return partitions.containsKey( dn.toString() ); } /** - * @see DirectoryPartition#modifyRn(Name, String, boolean) + * @see DirectoryPartition#modifyRn(org.apache.directory.shared.ldap.name.LdapDN,String,boolean) */ - public void modifyRn( Name dn, String newRdn, boolean deleteOldRdn ) throws NamingException + public void modifyRn( LdapDN dn, String newRdn, boolean deleteOldRdn ) throws NamingException { DirectoryPartition backend = getBackend( dn ); backend.modifyRn( dn, newRdn, deleteOldRdn ); @@ -747,9 +753,9 @@ /** - * @see DirectoryPartition#move(Name, Name) + * @see DirectoryPartition#move(org.apache.directory.shared.ldap.name.LdapDN,org.apache.directory.shared.ldap.name.LdapDN) */ - public void move( Name oriChildName, Name newParentName ) throws NamingException + public void move( LdapDN oriChildName, LdapDN newParentName ) throws NamingException { DirectoryPartition backend = getBackend( oriChildName ); backend.move( oriChildName, newParentName ); @@ -757,10 +763,9 @@ /** - * @see DirectoryPartition#move(javax.naming.Name, - * javax.naming.Name, java.lang.String, boolean) + * @see DirectoryPartition#move(org.apache.directory.shared.ldap.name.LdapDN,org.apache.directory.shared.ldap.name.LdapDN,String,boolean) */ - public void move( Name oldChildDn, Name newParentDn, String newRdn, boolean deleteOldRdn ) throws NamingException + public void move( LdapDN oldChildDn, LdapDN newParentDn, String newRdn, boolean deleteOldRdn ) throws NamingException { DirectoryPartition backend = getBackend( oldChildDn ); backend.move( oldChildDn, newParentDn, newRdn, deleteOldRdn ); @@ -778,9 +783,9 @@ * @return the backend partition associated with the normalized dn * @throws NamingException if the name cannot be resolved to a backend */ - private DirectoryPartition getBackend( Name dn ) throws NamingException + private DirectoryPartition getBackend( LdapDN dn ) throws NamingException { - Name clonedDn = ( Name ) dn.clone(); + LdapDN clonedDn = ( LdapDN ) dn.clone(); while ( clonedDn.size() > 0 ) { if ( partitions.containsKey( clonedDn.toString() ) ) @@ -790,11 +795,11 @@ clonedDn.remove( clonedDn.size() - 1 ); } - throw new NameNotFoundException( dn.toString() ); + throw new LdapNameNotFoundException( dn.toUpName() ); } - public DirectoryPartition getPartition( Name dn ) throws NamingException + public DirectoryPartition getPartition( LdapDN dn ) throws NamingException { return getBackend( dn ); } Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DirectoryPartition.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DirectoryPartition.java?rev=414035&r1=414034&r2=414035&view=diff ============================================================================== --- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DirectoryPartition.java (original) +++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/partition/DirectoryPartition.java Tue Jun 13 20:22:05 2006 @@ -21,7 +21,6 @@ import java.util.Map; import javax.naming.Context; -import javax.naming.Name; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attributes; @@ -32,6 +31,7 @@ import org.apache.directory.server.core.DirectoryServiceConfiguration; import org.apache.directory.server.core.configuration.DirectoryPartitionConfiguration; import org.apache.directory.shared.ldap.filter.ExprNode; +import org.apache.directory.shared.ldap.name.LdapDN; /** @@ -50,7 +50,7 @@ /** The objectClass name for aliases: 'alias' */ String ALIAS_OBJECT = "alias"; - /** + /** * The aliased Dn attribute name: aliasedObjectName for LDAP and * aliasedEntryName or X.500. */ @@ -85,14 +85,19 @@ * Gets the distinguished/absolute name of the suffix for all entries * stored within this ContextPartition. * - * @param normalized boolean value used to control the normalization of the - * returned Name. If true the normalized Name is returned, otherwise the - * original user provided Name without normalization is returned. * @return Name representing the distinguished/absolute name of this * ContextPartitions root context. */ - Name getSuffix( boolean normalized ) throws NamingException; + LdapDN getSuffix() throws NamingException; + /** + * Gets the distinguished/absolute name of the suffix for all entries + * stored within this ContextPartition. + * + * @return Name representing the distinguished/absolute name of this + * ContextPartitions root context. + */ + LdapDN getUpSuffix() throws NamingException; /** * Deletes a leaf entry from this ContextPartition: non-leaf entries cannot be @@ -102,18 +107,17 @@ * delete from this ContextPartition. * @throws NamingException if there are any problems */ - void delete( Name name ) throws NamingException; + void delete( LdapDN name ) throws NamingException; /** * Adds an entry to this ContextPartition. * - * @param userProvidedName the user provided distinguished/absolute name of the entry - * @param normalizedName the normalized distinguished/absolute name of the entry + * @param name * @param entry the entry to add to this ContextPartition * @throws NamingException if there are any problems */ - void add( String userProvidedName, Name normalizedName, Attributes entry ) throws NamingException; + void add( LdapDN name, Attributes entry ) throws NamingException; /** @@ -132,7 +136,7 @@ * @see javax.naming.directory.DirContext#REMOVE_ATTRIBUTE * @see javax.naming.directory.DirContext#REPLACE_ATTRIBUTE */ - void modify( Name name, int modOp, Attributes attributes ) throws NamingException; + void modify( LdapDN name, int modOp, Attributes attributes ) throws NamingException; /** @@ -144,7 +148,7 @@ * @throws NamingException if there are any problems * @see ModificationItem */ - void modify( Name name, ModificationItem[] items ) throws NamingException; + void modify( LdapDN name, ModificationItem[] items ) throws NamingException; /** @@ -157,7 +161,7 @@ * @return a NamingEnumeration containing objects of type {@link SearchResult} * @throws NamingException if there are any problems */ - NamingEnumeration list( Name baseName ) throws NamingException; + NamingEnumeration list( LdapDN baseName ) throws NamingException; /** @@ -177,7 +181,7 @@ * SearchResult. */ - NamingEnumeration search( Name baseName, Map environment, ExprNode filter, SearchControls searchControls ) + NamingEnumeration search( LdapDN baseName, Map environment, ExprNode filter, SearchControls searchControls ) throws NamingException; @@ -190,7 +194,7 @@ * @return an Attributes object representing the entry * @throws NamingException if there are any problems */ - Attributes lookup( Name name ) throws NamingException; + Attributes lookup( LdapDN name ) throws NamingException; /** @@ -204,7 +208,7 @@ * @return an Attributes object representing the entry * @throws NamingException if there are any problems */ - Attributes lookup( Name name, String[] attrIds ) throws NamingException; + Attributes lookup( LdapDN name, String[] attrIds ) throws NamingException; /** @@ -215,7 +219,7 @@ * @return true if the entry exists, false if it does not * @throws NamingException if there are any problems */ - boolean hasEntry( Name name ) throws NamingException; + boolean hasEntry( LdapDN name ) throws NamingException; /** @@ -225,7 +229,7 @@ * @return true if the name is a context suffix, false if it is not. * @throws NamingException if there are any problems */ - boolean isSuffix( Name name ) throws NamingException; + boolean isSuffix( LdapDN name ) throws NamingException; /** @@ -241,20 +245,20 @@ * from the entry if set to true, and has no affect if set to false * @throws NamingException if there are any problems */ - void modifyRn( Name name, String newRn, boolean deleteOldRn ) throws NamingException; + void modifyRn( LdapDN name, String newRn, boolean deleteOldRn ) throws NamingException; /** * Transplants a child entry, to a position in the namespace under a new * parent entry. * - * @param newParentName the normalized distinguished/absolute name of the - * new parent to move the target entry to * @param oldName the normalized distinguished/absolute name of the * original child name representing the child entry to move + * @param newParentName the normalized distinguished/absolute name of the + * new parent to move the target entry to * @throws NamingException if there are any problems */ - void move( Name oldName, Name newParentName ) throws NamingException; + void move( LdapDN oldName, LdapDN newParentName ) throws NamingException; /** @@ -274,7 +278,7 @@ * from the entry if set to true, and has no affect if set to false * @throws NamingException if there are any problems */ - void move( Name oldName, Name newParentName, String newRn, boolean deleteOldRn ) throws NamingException; + void move( LdapDN oldName, LdapDN newParentName, String newRn, boolean deleteOldRn ) throws NamingException; /** @@ -282,14 +286,14 @@ * need not support this operation. This operation is here to enable those * interested in implementing virtual directories with ApacheDS. * - * @param bindDn the normalized dn of the principal + * @param bindDn the normalized dn of the principal * @param credentials the credentials of the principal * @param mechanisms the mechanisms requested by the JNDI caller or a single * mechanism representing the SASL bind mechanism used by a networked client (Strings) * @param saslAuthId the SASL authentication (may be null) * @throws NamingException if something goes wrong */ - void bind( Name bindDn, byte[] credentials, List mechanisms, String saslAuthId ) throws NamingException; + void bind( LdapDN bindDn, byte[] credentials, List mechanisms, String saslAuthId ) throws NamingException; /** @@ -300,5 +304,5 @@ * @param bindDn the normalized dn of the principal attempting to unbind * @throws NamingException if something goes wrong */ - void unbind( Name bindDn ) throws NamingException; + void unbind( LdapDN bindDn ) throws NamingException; }