You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/07/31 18:28:07 UTC

svn commit: r427156 [2/5] - in /directory/branches/apacheds/1.0: benchmarks/ benchmarks/src/ benchmarks/src/main/ benchmarks/src/main/java/ benchmarks/src/main/java/org/ benchmarks/src/main/java/org/apache/ benchmarks/src/main/java/org/apache/directory...

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/AuthorizationService.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/AuthorizationService.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/AuthorizationService.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/AuthorizationService.java Mon Jul 31 09:27:52 2006
@@ -31,8 +31,8 @@
 import org.apache.directory.server.core.invocation.InvocationStack;
 import org.apache.directory.server.core.jndi.ServerContext;
 import org.apache.directory.server.core.jndi.ServerLdapContext;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.server.core.schema.AttributeTypeRegistry;
 import org.apache.directory.server.core.schema.ConcreteNameComponentNormalizer;
 import org.apache.directory.server.core.schema.OidRegistry;
@@ -175,7 +175,7 @@
         objectClassType = attrRegistry.lookup( objectClassOid );
         acSubentryType = attrRegistry.lookup( acSubentryOid );
         
-        aciParser = new ACIItemParser( new ConcreteNameComponentNormalizer( attrRegistry, oidRegistry ) );
+        aciParser = new ACIItemParser( new ConcreteNameComponentNormalizer( attrRegistry, oidRegistry ), attrRegistry.getNormalizerMapping() );
         engine = new ACDFEngine( factoryCfg.getGlobalRegistries().getOidRegistry(), attrRegistry );
         chain = factoryCfg.getInterceptorChain();
         enabled = factoryCfg.getStartupConfiguration().isAccessControlEnabled();
@@ -184,7 +184,7 @@
         String subschemaSubentry = ( String ) factoryCfg.getPartitionNexus().getRootDSE().get( "subschemaSubentry" )
             .get();
         LdapDN subschemaSubentryDnName = new LdapDN( subschemaSubentry );
-        subschemaSubentryDnName.normalize();
+        subschemaSubentryDnName.normalize( attrRegistry.getNormalizerMapping() );
         subschemaSubentryDn = subschemaSubentryDnName.toNormName();
     }
 
@@ -192,7 +192,7 @@
     private LdapDN parseNormalized( String name ) throws NamingException
     {
         LdapDN dn = new LdapDN( name );
-        dn.normalize();
+        dn.normalize( attrRegistry.getNormalizerMapping() );
         return dn;
     }
 
@@ -210,7 +210,7 @@
      * @param entry the target entry that access to is being controled
      * @throws NamingException if there are problems accessing attribute values
      */
-    private void addPerscriptiveAciTuples( DirectoryPartitionNexusProxy proxy, Collection tuples, LdapDN dn,
+    private void addPerscriptiveAciTuples( PartitionNexusProxy proxy, Collection tuples, LdapDN dn,
         Attributes entry ) throws NamingException
     {
         Attribute oc = ServerUtils.getAttribute( objectClassType, entry );
@@ -228,7 +228,7 @@
         {
             LdapDN parentDn = ( LdapDN ) dn.clone();
             parentDn.remove( dn.size() - 1 );
-            entry = proxy.lookup( parentDn, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+            entry = proxy.lookup( parentDn, PartitionNexusProxy.LOOKUP_BYPASS );
         }
 
         Attribute subentries = ServerUtils.getAttribute( acSubentryType, entry );
@@ -290,7 +290,7 @@
      * @param entry the target entry that access to is being regulated
      * @throws NamingException if there are problems accessing attribute values
      */
-    private void addSubentryAciTuples( DirectoryPartitionNexusProxy proxy, Collection tuples, LdapDN dn, Attributes entry )
+    private void addSubentryAciTuples( PartitionNexusProxy proxy, Collection tuples, LdapDN dn, Attributes entry )
         throws NamingException
     {
         // only perform this for subentries
@@ -304,7 +304,7 @@
         LdapDN parentDn = ( LdapDN ) dn.clone();
         parentDn.remove( dn.size() - 1 );
         Attributes administrativeEntry = proxy.lookup( parentDn, new String[]
-            { SUBENTRYACI_ATTR }, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+            { SUBENTRYACI_ATTR }, PartitionNexusProxy.LOOKUP_BYPASS );
         Attribute subentryAci = administrativeEntry.get( SUBENTRYACI_ATTR );
 
         if ( subentryAci == null )
@@ -359,7 +359,7 @@
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
 
         // bypass authz code if we are disabled
         if ( !enabled )
@@ -369,7 +369,7 @@
         }
 
         // bypass authz code but manage caches if operation is performed by the admin
-        if ( userName.toNormName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( userName.toNormName().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             next.add( normName, entry );
             tupleCache.subentryAdded( normName.toNormName(), normName, entry );
@@ -396,7 +396,7 @@
         addSubentryAciTuples( invocation.getProxy(), tuples, normName, subentryAttrs );
 
         // check if entry scope permission is granted
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
+        PartitionNexusProxy proxy = invocation.getProxy();
         engine.checkPermission( proxy, userGroups, userName, principal.getAuthenticationLevel(), normName, null, null,
             ADD_PERMS, tuples, subentryAttrs );
 
@@ -426,10 +426,10 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
 
         // bypass authz code if we are disabled
         if ( !enabled )
@@ -439,7 +439,7 @@
         }
 
         // bypass authz code but manage caches if operation is performed by the admin
-        if ( userName.toString().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( userName.toString().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             next.delete( name );
             tupleCache.subentryDeleted( name, entry );
@@ -466,10 +466,10 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
 
         // bypass authz code if we are disabled
         if ( !enabled )
@@ -479,7 +479,7 @@
         }
 
         // bypass authz code but manage caches if operation is performed by the admin
-        if ( userName.toString().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( userName.toString().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             next.modify( name, modOp, mods );
             tupleCache.subentryModified( name, modOp, mods, entry );
@@ -531,10 +531,10 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
 
         // bypass authz code if we are disabled
         if ( !enabled )
@@ -544,7 +544,7 @@
         }
 
         // bypass authz code but manage caches if operation is performed by the admin
-        if ( userName.toString().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( userName.toString().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             next.modify( name, mods );
             tupleCache.subentryModified( name, mods, entry );
@@ -594,12 +594,12 @@
     public boolean hasEntry( NextInterceptor next, LdapDN name ) throws NamingException
     {
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
 
-        if ( userName.toNormName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled
+        if ( userName.toNormName().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled
             || name.toString().trim().equals( "" ) ) // no checks on the rootdse
         {
             return next.hasEntry( name );
@@ -642,8 +642,8 @@
             return;
         }
 
-        DirectoryPartitionNexusProxy proxy = InvocationStack.getInstance().peek().getProxy();
-        LdapDN userName = parseNormalized( principal.getName() );
+        PartitionNexusProxy proxy = InvocationStack.getInstance().peek().getProxy();
+        LdapDN userName = principal.getJndiName();
         Set userGroups = groupCache.getGroups( userName.toNormName() );
         Collection tuples = new HashSet();
         addPerscriptiveAciTuples( proxy, tuples, dn, entry );
@@ -671,13 +671,13 @@
     public Attributes lookup( NextInterceptor next, LdapDN dn, String[] attrIds ) throws NamingException
     {
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( dn, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( dn, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
         LdapDN principalDn = new LdapDN( principal.getName() );
-        principalDn.normalize();
+        principalDn.normalize( attrRegistry.getNormalizerMapping() );
         
-        if ( principalDn.toNormName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
+        if ( principalDn.toNormName().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
         {
             return next.lookup( dn, attrIds );
         }
@@ -690,12 +690,13 @@
     public Attributes lookup( NextInterceptor next, LdapDN name ) throws NamingException
     {
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal user = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN principalDn = parseNormalized( user.getName() );
+        LdapDN principalDn = (LdapDN)user.getJndiName();
+        principalDn.normalize( attrRegistry.getNormalizerMapping() );
         
-        if ( principalDn.toNormName().equals( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
+        if ( principalDn.toString().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
         {
             return next.lookup( name );
         }
@@ -709,10 +710,10 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
         LdapDN newName = ( LdapDN ) name.clone();
         newName.remove( name.size() - 1 );
         newName.add( parseNormalized( newRn ).get( 0 ) );
@@ -725,7 +726,7 @@
         }
 
         // bypass authz code but manage caches if operation is performed by the admin
-        if ( userName.toString().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( userName.toString().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             next.modifyRn( name, newRn, deleteOldRn );
             tupleCache.subentryRenamed( name, newName );
@@ -782,10 +783,10 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( oriChildName, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( oriChildName, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
         LdapDN newName = ( LdapDN ) newParentName.clone();
         newName.add( newRn );
 
@@ -797,7 +798,7 @@
         }
 
         // bypass authz code but manage caches if operation is performed by the admin
-        if ( userName.toString().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( userName.toString().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             next.move( oriChildName, newParentName, newRn, deleteOldRn );
             tupleCache.subentryRenamed( oriChildName, newName );
@@ -858,12 +859,12 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( oriChildName, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( oriChildName, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapDN newName = ( LdapDN ) newParentName.clone();
         newName.add( oriChildName.get( oriChildName.size() - 1 ) );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
 
         // bypass authz code if we are disabled
         if ( !enabled )
@@ -873,7 +874,7 @@
         }
 
         // bypass authz code but manage caches if operation is performed by the admin
-        if ( userName.toString().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( userName.toString().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             next.move( oriChildName, newParentName );
             tupleCache.subentryRenamed( oriChildName, newName );
@@ -911,7 +912,7 @@
         ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
         LdapPrincipal user = ctx.getPrincipal();
         NamingEnumeration e = next.list( base );
-        if ( user.getName().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
+        if ( user.getName().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
         {
             return e;
         }
@@ -926,14 +927,12 @@
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
         LdapPrincipal user = ctx.getPrincipal();
-        LdapDN principalDn = new LdapDN( user.getName() );
-        principalDn.normalize();
-        
+        LdapDN principalDn = user.getJndiName();
         NamingEnumeration e = next.search( base, env, filter, searchCtls );
 
         boolean isSubschemaSubentryLookup = subschemaSubentryDn.equals( base.toNormName() );
         boolean isRootDSELookup = base.size() == 0 && searchCtls.getSearchScope() == SearchControls.OBJECT_SCOPE;
-        if ( principalDn.toNormName().equals( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled || 
+        if ( principalDn.toNormName().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled || 
             isRootDSELookup || isSubschemaSubentryLookup )
         {
             return e;
@@ -947,12 +946,12 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes entry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes entry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
+        LdapDN userName = principal.getJndiName();
 
-        if ( userName.toNormName().equals( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
+        if ( userName.toNormName().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
         {
             return next.compare( name, oid, value );
         }
@@ -976,10 +975,10 @@
     {
         // Access the principal requesting the operation, and bypass checks if it is the admin
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
+        PartitionNexusProxy proxy = invocation.getProxy();
         LdapPrincipal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
-        LdapDN userName = parseNormalized( principal.getName() );
-        if ( userName.toString().equalsIgnoreCase( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
+        LdapDN userName = principal.getJndiName();
+        if ( userName.toString().equalsIgnoreCase( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) || !enabled )
         {
             return next.getMatchedName( dn );
         }
@@ -993,7 +992,7 @@
         // that but if permission is granted then short the process and return the dn
         while ( matched.size() > 0 )
         {
-            entry = proxy.lookup( matched, DirectoryPartitionNexusProxy.GETMATCHEDDN_BYPASS );
+            entry = proxy.lookup( matched, PartitionNexusProxy.GETMATCHEDDN_BYPASS );
             Set userGroups = groupCache.getGroups( userName.toString() );
             Collection tuples = new HashSet();
             addPerscriptiveAciTuples( proxy, tuples, matched, entry );
@@ -1026,9 +1025,9 @@
          * tests.  If we hasPermission() returns false we immediately short the
          * process and return false.
          */
-        Attributes entry = invocation.getProxy().lookup( normName, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        Attributes entry = invocation.getProxy().lookup( normName, PartitionNexusProxy.LOOKUP_BYPASS );
         ServerLdapContext ctx = ( ServerLdapContext ) invocation.getCaller();
-        LdapDN userDn = parseNormalized( ctx.getPrincipal().getName() );
+        LdapDN userDn = ctx.getPrincipal().getJndiName();
         Set userGroups = groupCache.getGroups( userDn.toNormName() );
         Collection tuples = new HashSet();
         addPerscriptiveAciTuples( invocation.getProxy(), tuples, normName, entry );

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationService.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationService.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationService.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationService.java Mon Jul 31 09:27:52 2006
@@ -39,14 +39,14 @@
 import org.apache.directory.server.core.invocation.Invocation;
 import org.apache.directory.server.core.invocation.InvocationStack;
 import org.apache.directory.server.core.jndi.ServerContext;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexus;
 import org.apache.directory.shared.ldap.exception.LdapNoPermissionException;
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.name.LdapDN;
 
 
 /**
- * An {@link Interceptor} that controls access to {@link DirectoryPartitionNexus}.
+ * An {@link Interceptor} that controls access to {@link PartitionNexus}.
  * If a user tries to perform any operations that requires
  * permission he or she doesn't have, {@link NoPermissionException} will be
  * thrown and therefore the current invocation chain will terminate.
@@ -76,8 +76,10 @@
     /**
      * the name parser used by this service
      */
-    //private DnParser dnParser;
     private boolean enabled = true;
+    
+    private Map oidsMap;
+    
 
 
     /**
@@ -90,18 +92,18 @@
 
     public void init( DirectoryServiceConfiguration factoryCfg, InterceptorConfiguration cfg ) throws NamingException
     {
-        //AttributeTypeRegistry atr = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry();
+        oidsMap = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry().getNormalizerMapping();
         //dnParser = new DnParser( new ConcreteNameComponentNormalizer( atr ) );
 
         // disable this static module if basic access control mechanisms are enabled
         enabled = !factoryCfg.getStartupConfiguration().isAccessControlEnabled();
-        ADMIN_DN = DirectoryPartitionNexus.getAdminName(); 
+        ADMIN_DN = PartitionNexus.getAdminName(); 
         
-        USER_BASE_DN = DirectoryPartitionNexus.getUsersBaseName();
-        USER_BASE_DN_NORMALIZED = LdapDN.normalize( USER_BASE_DN );
+        USER_BASE_DN = PartitionNexus.getUsersBaseName();
+        USER_BASE_DN_NORMALIZED = LdapDN.normalize( USER_BASE_DN, oidsMap );
         
-        GROUP_BASE_DN = DirectoryPartitionNexus.getGroupsBaseName();
-        GROUP_BASE_DN_NORMALIZED = LdapDN.normalize( GROUP_BASE_DN );
+        GROUP_BASE_DN = PartitionNexus.getGroupsBaseName();
+        GROUP_BASE_DN_NORMALIZED = LdapDN.normalize( GROUP_BASE_DN, oidsMap );
     }
 
 
@@ -205,8 +207,7 @@
 
     private void protectModifyAlterations( LdapDN dn ) throws NamingException
     {
-        LdapDN principalDn = new LdapDN( getPrincipal().getJndiName() );
-        principalDn.normalize();
+        LdapDN principalDn = getPrincipal().getJndiName();
 
         if ( dn.size() == 0 )
         {
@@ -214,9 +215,9 @@
             throw new LdapNoPermissionException( msg );
         }
 
-        if ( !principalDn.toNormName().equals( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( !principalDn.toNormName().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
-            if ( dn.toNormName().equals( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+            if ( dn.toNormName().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
             {
                 String msg = "User " + principalDn;
                 msg += " does not have permission to modify the account of the";
@@ -238,7 +239,7 @@
             {
                 String msg = "User " + principalDn;
                 msg += " does not have permission to modify the group entry ";
-                msg += dn + ".\nGroups can only be modified by the admin.";
+                msg += dn.getUpName() + ".\nGroups can only be modified by the admin.";
                 throw new LdapNoPermissionException( msg );
             }
         }
@@ -288,7 +289,7 @@
 
     private void protectDnAlterations( Name dn ) throws LdapNoPermissionException
     {
-        Name principalDn = getPrincipal().getJndiName();
+        LdapDN principalDn = getPrincipal().getJndiName();
 
         if ( dn.toString().equals( "" ) )
         {
@@ -298,7 +299,7 @@
 
         if ( dn == ADMIN_DN || dn.equals( ADMIN_DN ) )
         {
-            String msg = "User '" + principalDn;
+            String msg = "User '" + principalDn.getUpName();
             msg += "' does not have permission to move or rename the admin";
             msg += " account.  No one not even the admin can move or";
             msg += " rename " + dn + "!";
@@ -350,18 +351,16 @@
     }
 
 
-    private void protectLookUp( Name normalizedDn ) throws NamingException
+    private void protectLookUp( LdapDN normalizedDn ) throws NamingException
     {
         LdapContext ctx = ( LdapContext ) InvocationStack.getInstance().peek().getCaller();
-        LdapDN principalDn = new LdapDN( ( ( ServerContext ) ctx ).getPrincipal().getJndiName() );
-        principalDn.normalize();
-
+        LdapDN principalDn = ( ( ServerContext ) ctx ).getPrincipal().getJndiName();
         if ( !principalDn.equals( ADMIN_DN ) )
         {
             if ( normalizedDn.size() > 2 && normalizedDn.startsWith( USER_BASE_DN ) )
             {
                 // allow for self reads
-                if ( normalizedDn.toString().equals( principalDn.toString() ) )
+                if ( normalizedDn.getNormName().equals( principalDn.getNormName() ) )
                 {
                     return;
                 }
@@ -375,7 +374,7 @@
             if ( normalizedDn.size() > 2 && normalizedDn.startsWith( GROUP_BASE_DN ) )
             {
                 // allow for self reads
-                if ( normalizedDn.toString().equals( principalDn.toString() ) )
+                if ( normalizedDn.getNormName().equals( principalDn.getNormName() ) )
                 {
                     return;
                 }
@@ -389,7 +388,7 @@
             if ( normalizedDn.equals( ADMIN_DN ) )
             {
                 // allow for self reads
-                if ( normalizedDn.toString().equals( principalDn.toString() ) )
+                if ( normalizedDn.getNormName().equals( principalDn.getNormName() ) )
                 {
                     return;
                 }
@@ -450,14 +449,12 @@
 
     private boolean isSearchable( Invocation invocation, SearchResult result ) throws NamingException
     {
-        LdapDN principalDn = ( LdapDN ) ( ( ServerContext ) invocation.getCaller() ).getPrincipal().getJndiName();
-        principalDn.normalize();
-
+        LdapDN principalDn = ( ( ServerContext ) invocation.getCaller() ).getPrincipal().getJndiName();
         LdapDN dn;
         dn = new LdapDN( result.getName() );
-        dn.normalize();
+        dn.normalize( oidsMap );
 
-        boolean isAdmin = principalDn.toNormName().equals( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED );
+        boolean isAdmin = principalDn.toNormName().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED );
         
         // Admin user gets full access to all entries
         if ( isAdmin )
@@ -486,7 +483,7 @@
         }
         
         // Non-admin users cannot read the admin entry
-        if ( dn.toNormName().equals( DirectoryPartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
+        if ( dn.toNormName().equals( PartitionNexus.ADMIN_PRINCIPAL_NORMALIZED ) )
         {
             return false;
         }

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/GroupCache.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/GroupCache.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/GroupCache.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/GroupCache.java Mon Jul 31 09:27:52 2006
@@ -18,7 +18,7 @@
 
 
 import org.apache.directory.server.core.DirectoryServiceConfiguration;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexus;
 import org.apache.directory.shared.ldap.filter.BranchNode;
 import org.apache.directory.shared.ldap.filter.SimpleNode;
 import org.apache.directory.shared.ldap.name.LdapDN;
@@ -53,14 +53,21 @@
     /** the logger for this class */
     private static final Logger log = LoggerFactory.getLogger( GroupCache.class );
 
+    /** Speedup for logs */
+    private static final boolean IS_DEBUG = log.isDebugEnabled();
+
     /** String key for the DN of a group to a Set (HashSet) for the Strings of member DNs */
     private final Map groups = new HashMap();
     /** a handle on the partition nexus */
-    private final DirectoryPartitionNexus nexus;
+    private final PartitionNexus nexus;
     /** the env to use for searching */
     private final Hashtable env;
 
-
+    /**
+     * The OIDs normalizer map
+     */
+    private Map normalizerMap;
+    
     /**
      * Creates a static group cache.
      *
@@ -68,6 +75,7 @@
      */
     public GroupCache(DirectoryServiceConfiguration factoryCfg) throws NamingException
     {
+    	normalizerMap = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry().getNormalizerMapping();
         this.nexus = factoryCfg.getPartitionNexus();
         this.env = ( Hashtable ) factoryCfg.getEnvironment().clone();
         initialize();
@@ -77,7 +85,7 @@
     private LdapDN parseNormalized( String name ) throws NamingException
     {
         LdapDN dn = new LdapDN( name );
-        dn.normalize();
+        dn.normalize( normalizerMap );
         return dn;
     }
 
@@ -121,7 +129,7 @@
             results.close();
         }
 
-        if ( log.isDebugEnabled() )
+        if ( IS_DEBUG )
         {
             log.debug( "group cache contents on startup:\n" + groups );
         }
@@ -245,7 +253,8 @@
         Set memberSet = new HashSet( members.size() );
         addMembers( memberSet, members );
         groups.put( normName.toString(), memberSet );
-        if ( log.isDebugEnabled() )
+        
+        if ( IS_DEBUG )
         {
             log.debug( "group cache contents after adding " + normName.toString() + ":\n" + groups );
         }
@@ -269,7 +278,8 @@
         }
 
         groups.remove( name.toString() );
-        if ( log.isDebugEnabled() )
+        
+        if ( IS_DEBUG )
         {
             log.debug( "group cache contents after deleting " + name.toString() + ":\n" + groups );
         }
@@ -353,7 +363,8 @@
                 break;
             }
         }
-        if ( log.isDebugEnabled() )
+        
+        if ( IS_DEBUG )
         {
             log.debug( "group cache contents after modifying " + name.toString() + ":\n" + groups );
         }
@@ -384,7 +395,8 @@
         {
             modify( memberSet, modOp, members );
         }
-        if ( log.isDebugEnabled() )
+        
+        if ( IS_DEBUG )
         {
             log.debug( "group cache contents after modifying " + name.toString() + ":\n" + groups );
         }
@@ -454,7 +466,8 @@
         if ( members != null )
         {
             groups.put( newName.toString(), members );
-            if ( log.isDebugEnabled() )
+            
+            if ( IS_DEBUG )
             {
                 log.debug( "group cache contents after renaming " + oldName.toString() + ":\n" + groups );
             }

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/TupleCache.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/TupleCache.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/TupleCache.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/TupleCache.java Mon Jul 31 09:27:52 2006
@@ -30,7 +30,7 @@
 import javax.naming.directory.SearchResult;
 
 import org.apache.directory.server.core.DirectoryServiceConfiguration;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexus;
 import org.apache.directory.server.core.schema.AttributeTypeRegistry;
 import org.apache.directory.server.core.schema.ConcreteNameComponentNormalizer;
 import org.apache.directory.server.core.schema.OidRegistry;
@@ -71,10 +71,14 @@
     /** a map of strings to ACITuple collections */
     private final Map tuples = new HashMap();
     /** a handle on the partition nexus */
-    private final DirectoryPartitionNexus nexus;
+    private final PartitionNexus nexus;
     /** a normalizing ACIItem parser */
     private final ACIItemParser aciParser;
 
+    /**
+     * The OIDs normalizer map
+     */
+    private Map normalizerMap;
 
     /**
      * Creates a ACITuple cache.
@@ -83,11 +87,12 @@
      */
     public TupleCache(DirectoryServiceConfiguration factoryCfg) throws NamingException
     {
+    	normalizerMap = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry().getNormalizerMapping();
         this.nexus = factoryCfg.getPartitionNexus();
         AttributeTypeRegistry attributeRegistry = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry();
         OidRegistry oidRegistry = factoryCfg.getGlobalRegistries().getOidRegistry();
         NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( attributeRegistry, oidRegistry );
-        aciParser = new ACIItemParser( ncn );
+        aciParser = new ACIItemParser( ncn, normalizerMap );
         env = ( Hashtable ) factoryCfg.getEnvironment().clone();
         initialize();
     }
@@ -96,7 +101,7 @@
     private LdapDN parseNormalized( String name ) throws NamingException
     {
         LdapDN dn = new LdapDN( name );
-        dn.normalize();
+        dn.normalize( normalizerMap );
         return dn;
     }
 
@@ -209,7 +214,7 @@
         if ( isAciModified )
         {
             subentryDeleted( normName, entry );
-            subentryAdded( normName.toUpName(), normName, entry );
+            subentryAdded( normName.getUpName(), normName, entry );
         }
     }
 
@@ -224,7 +229,7 @@
         if ( mods.get( ACI_ATTR ) != null )
         {
             subentryDeleted( normName, entry );
-            subentryAdded( normName.toUpName(), normName, entry );
+            subentryAdded( normName.getUpName(), normName, entry );
         }
     }
 

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java Mon Jul 31 09:27:52 2006
@@ -26,7 +26,7 @@
 
 import org.apache.directory.server.core.event.Evaluator;
 import org.apache.directory.server.core.event.ExpressionEvaluator;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.server.core.schema.AttributeTypeRegistry;
 import org.apache.directory.server.core.schema.OidRegistry;
 import org.apache.directory.server.core.subtree.RefinementEvaluator;
@@ -107,7 +107,7 @@
      * @param aciTuples {@link org.apache.directory.shared.ldap.aci.ACITuple}s translated from {@link org.apache.directory.shared.ldap.aci.ACIItem}s in the subtree entries
      * @throws NamingException if failed to evaluate ACI items
      */
-    public void checkPermission( DirectoryPartitionNexusProxy proxy, Collection userGroupNames, LdapDN username,
+    public void checkPermission( PartitionNexusProxy proxy, Collection userGroupNames, LdapDN username,
                                  AuthenticationLevel authenticationLevel, LdapDN entryName, String attrId, Object attrValue,
                                  Collection microOperations, Collection aciTuples, Attributes entry ) throws NamingException
     {
@@ -150,7 +150,7 @@
      * @param microOperations the {@link org.apache.directory.shared.ldap.aci.MicroOperation}s to perform
      * @param aciTuples {@link org.apache.directory.shared.ldap.aci.ACITuple}s translated from {@link org.apache.directory.shared.ldap.aci.ACIItem}s in the subtree entries
      */
-    public boolean hasPermission( DirectoryPartitionNexusProxy proxy, Collection userGroupNames, LdapDN userName,
+    public boolean hasPermission( PartitionNexusProxy proxy, Collection userGroupNames, LdapDN userName,
                                   AuthenticationLevel authenticationLevel, LdapDN entryName, String attrId, Object attrValue,
                                   Collection microOperations, Collection aciTuples, Attributes entry ) throws NamingException
     {

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACITupleFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACITupleFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACITupleFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/ACITupleFilter.java Mon Jul 31 09:27:52 2006
@@ -25,7 +25,7 @@
 import javax.naming.NamingException;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.aci.MicroOperation;
 import org.apache.directory.shared.ldap.name.LdapDN;
@@ -61,7 +61,7 @@
      * @return the collection of filtered tuples
      * @throws NamingException if failed to filter the specifiec tuples
      */
-    Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                        Collection userGroupNames, LdapDN userName, Attributes userEntry,
                        AuthenticationLevel authenticationLevel, LdapDN entryName, String attrId,
                        Object attrValue, Attributes entry, Collection microOperations )

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/HighestPrecedenceFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/HighestPrecedenceFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/HighestPrecedenceFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/HighestPrecedenceFilter.java Mon Jul 31 09:27:52 2006
@@ -25,7 +25,7 @@
 import javax.naming.NamingException;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.name.LdapDN;
@@ -40,7 +40,7 @@
  */
 public class HighestPrecedenceFilter implements ACITupleFilter
 {
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
                               LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxImmSubFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxImmSubFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxImmSubFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxImmSubFilter.java Mon Jul 31 09:27:52 2006
@@ -26,7 +26,7 @@
 import javax.naming.directory.Attributes;
 import javax.naming.directory.SearchControls;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.aci.ProtectedItem;
@@ -56,7 +56,7 @@
     }
 
 
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
                               LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException
@@ -125,7 +125,7 @@
     }
 
 
-    private int getImmSubCount( DirectoryPartitionNexusProxy proxy, LdapDN entryName ) throws NamingException
+    private int getImmSubCount( PartitionNexusProxy proxy, LdapDN entryName ) throws NamingException
     {
         int cnt = 0;
         NamingEnumeration e = null;

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxValueCountFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxValueCountFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxValueCountFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MaxValueCountFilter.java Mon Jul 31 09:27:52 2006
@@ -26,7 +26,7 @@
 import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.aci.ProtectedItem;
@@ -43,7 +43,7 @@
  */
 public class MaxValueCountFilter implements ACITupleFilter
 {
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
                               LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MicroOperationFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MicroOperationFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MicroOperationFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MicroOperationFilter.java Mon Jul 31 09:27:52 2006
@@ -25,7 +25,7 @@
 import javax.naming.NamingException;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.aci.MicroOperation;
@@ -42,7 +42,7 @@
  */
 public class MicroOperationFilter implements ACITupleFilter
 {
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
                               LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilter.java Mon Jul 31 09:27:52 2006
@@ -26,7 +26,7 @@
 import javax.naming.NamingException;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.aci.ProtectedItem;
@@ -50,7 +50,7 @@
  */
 public class MostSpecificProtectedItemFilter implements ACITupleFilter
 {
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
                               LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificUserClassFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificUserClassFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificUserClassFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/MostSpecificUserClassFilter.java Mon Jul 31 09:27:52 2006
@@ -26,7 +26,7 @@
 import javax.naming.NamingException;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.aci.UserClass;
@@ -48,7 +48,7 @@
  */
 public class MostSpecificUserClassFilter implements ACITupleFilter
 {
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
                               LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java Mon Jul 31 09:27:52 2006
@@ -28,7 +28,7 @@
 
 import org.apache.directory.server.core.ServerUtils;
 import org.apache.directory.server.core.event.Evaluator;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.server.core.schema.AttributeTypeRegistry;
 import org.apache.directory.server.core.schema.OidRegistry;
 import org.apache.directory.server.core.subtree.RefinementEvaluator;
@@ -67,7 +67,7 @@
     }
 
 
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry,
                               AuthenticationLevel authenticationLevel, LdapDN entryName, String attrId,
                               Object attrValue, Attributes entry, Collection microOperations )
@@ -249,7 +249,7 @@
                     {
                         AttributeType attrType = attrRegistry.lookup( oid );
                         Attribute attr = ServerUtils.getAttribute( attrType, entry );
-                        if ( attr != null && ( ( attr.contains( userName.toNormName() ) || attr.contains( userName.toUpName() ) ) ) )
+                        if ( attr != null && ( ( attr.contains( userName.toNormName() ) || attr.contains( userName.getUpName() ) ) ) )
                         {
                             return true;
                         }

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedUserClassFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedUserClassFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedUserClassFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RelatedUserClassFilter.java Mon Jul 31 09:27:52 2006
@@ -25,7 +25,7 @@
 import javax.naming.NamingException;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.server.core.subtree.SubtreeEvaluator;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
@@ -54,7 +54,7 @@
     }
 
 
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
         Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
         LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RestrictedByFilter.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RestrictedByFilter.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RestrictedByFilter.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/authz/support/RestrictedByFilter.java Mon Jul 31 09:27:52 2006
@@ -26,7 +26,7 @@
 import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.aci.ACITuple;
 import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
 import org.apache.directory.shared.ldap.aci.ProtectedItem;
@@ -43,7 +43,7 @@
  */
 public class RestrictedByFilter implements ACITupleFilter
 {
-    public Collection filter( Collection tuples, OperationScope scope, DirectoryPartitionNexusProxy proxy,
+    public Collection filter( Collection tuples, OperationScope scope, PartitionNexusProxy proxy,
                               Collection userGroupNames, LdapDN userName, Attributes userEntry, AuthenticationLevel authenticationLevel,
                               LdapDN entryName, String attrId, Object attrValue, Attributes entry, Collection microOperations )
         throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeService.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeService.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeService.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeService.java Mon Jul 31 09:27:52 2006
@@ -25,7 +25,7 @@
 import org.apache.directory.server.core.interceptor.NextInterceptor;
 import org.apache.directory.server.core.invocation.Invocation;
 import org.apache.directory.server.core.invocation.InvocationStack;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexus;
 import org.apache.directory.server.core.schema.AttributeTypeRegistry;
 import org.apache.directory.server.core.subtree.SubentryService;
 import org.apache.directory.shared.ldap.filter.ExprNode;
@@ -71,7 +71,7 @@
     };
 
     private AttributeTypeRegistry registry = null;
-    private DirectoryPartitionNexus nexus = null;
+    private PartitionNexus nexus = null;
 
 
     public void init( DirectoryServiceConfiguration factoryCfg, InterceptorConfiguration cfg ) throws NamingException

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/MutableStartupConfiguration.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/MutableStartupConfiguration.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/MutableStartupConfiguration.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/MutableStartupConfiguration.java Mon Jul 31 09:27:52 2006
@@ -44,7 +44,7 @@
     {
     }
 
-
+    
     /**
      * Creates a new instance that operates on the {@link DirectoryService} with
      * the specified ID.
@@ -54,6 +54,30 @@
         super( instanceId );
     }
 
+
+    public void setSystemPartitionConfiguration( PartitionConfiguration systemPartitionConfiguration )
+    {
+        super.setSystemPartitionConfiguration( systemPartitionConfiguration );
+    }
+    
+    
+    public void setMaxThreads( int maxThreads )
+    {
+        super.setMaxThreads( maxThreads );
+    }
+    
+    
+    public void setMaxTimeLimit( int maxTimeLimit )
+    {
+        super.setMaxTimeLimit( maxTimeLimit );
+    }
+    
+    
+    public void setMaxSizeLimit( int maxSizeLimit )
+    {
+        super.setMaxSizeLimit( maxSizeLimit );
+    }
+    
 
     public void setInstanceId( String instanceId )
     {

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java Mon Jul 31 09:27:52 2006
@@ -56,14 +56,21 @@
 {
     private static final long serialVersionUID = 4826762196566871677L;
 
+    public static final int MAX_THREADS_DEFAULT = 4;
+    public static final int MAX_SIZE_LIMIT_DEFAULT = 100;
+    public static final int MAX_TIME_LIMIT_DEFAULT = 10000;
+
     private File workingDirectory = new File( "server-work" );
     private boolean exitVmOnShutdown = true; // allow by default
     private boolean shutdownHookEnabled = true; // allow by default
     private boolean allowAnonymousAccess = true; // allow by default
     private boolean accessControlEnabled = false; // turn off by default
+    private int maxThreads = MAX_THREADS_DEFAULT; // set to default value
+    private int maxSizeLimit = MAX_SIZE_LIMIT_DEFAULT; // set to default value
+    private int maxTimeLimit = MAX_TIME_LIMIT_DEFAULT; // set to default value (milliseconds)
     private Set authenticatorConfigurations; // Set<AuthenticatorConfiguration>
     private List interceptorConfigurations; // Set<InterceptorConfiguration>
-
+    private PartitionConfiguration systemPartitionConfiguration; 
     private Set bootstrapSchemas; // Set<BootstrapSchema>
     private Set contextPartitionConfigurations = new HashSet(); // Set<ContextPartitionConfiguration>
     private List testEntries = new ArrayList(); // List<Attributes>
@@ -255,7 +262,7 @@
 
 
     /**
-     * Returns {@link DirectoryPartitionConfiguration}s to configure context partitions.
+     * Returns {@link PartitionConfiguration}s to configure context partitions.
      */
     public Set getContextPartitionConfigurations()
     {
@@ -264,18 +271,18 @@
 
 
     /**
-     * Sets {@link DirectoryPartitionConfiguration}s to configure context partitions.
+     * Sets {@link PartitionConfiguration}s to configure context partitions.
      */
     protected void setContextPartitionConfigurations( Set contextParitionConfigurations )
     {
         Set newSet = ConfigurationUtil.getTypeSafeSet( contextParitionConfigurations,
-            DirectoryPartitionConfiguration.class );
+            PartitionConfiguration.class );
 
         Set names = new HashSet();
         Iterator i = newSet.iterator();
         while ( i.hasNext() )
         {
-            DirectoryPartitionConfiguration cfg = ( DirectoryPartitionConfiguration ) i.next();
+            PartitionConfiguration cfg = ( PartitionConfiguration ) i.next();
             cfg.validate();
 
             String name = cfg.getName();
@@ -443,5 +450,57 @@
     public boolean isExitVmOnShutdown()
     {
         return exitVmOnShutdown;
+    }
+
+
+    protected void setMaxThreads( int maxThreads )
+    {
+        this.maxThreads = maxThreads;
+        if ( maxThreads < 1 )
+        {
+            throw new IllegalArgumentException( "Number of max threads should be greater than 0" );
+        }
+    }
+
+
+    public int getMaxThreads()
+    {
+        return maxThreads;
+    }
+
+
+    protected void setMaxSizeLimit( int maxSizeLimit )
+    {
+        this.maxSizeLimit = maxSizeLimit;
+    }
+
+
+    public int getMaxSizeLimit()
+    {
+        return maxSizeLimit;
+    }
+
+
+    protected void setMaxTimeLimit( int maxTimeLimit )
+    {
+        this.maxTimeLimit = maxTimeLimit;
+    }
+
+
+    public int getMaxTimeLimit()
+    {
+        return maxTimeLimit;
+    }
+
+
+    protected void setSystemPartitionConfiguration( PartitionConfiguration systemPartitionConfiguration )
+    {
+        this.systemPartitionConfiguration = systemPartitionConfiguration;
+    }
+
+
+    public PartitionConfiguration getSystemPartitionConfiguration()
+    {
+        return systemPartitionConfiguration;
     }
 }

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/ReferralHandlingEnumeration.java Mon Jul 31 09:27:52 2006
@@ -19,6 +19,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.NoSuchElementException;
 
 import javax.naming.NamingEnumeration;
@@ -27,7 +28,7 @@
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
 
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexus;
 import org.apache.directory.server.core.referral.ReferralLut;
 import org.apache.directory.server.core.schema.AttributeTypeRegistry;
 import org.apache.directory.shared.ldap.codec.util.LdapURL;
@@ -52,16 +53,21 @@
     private final List referrals = new ArrayList();
     private final NamingEnumeration underlying;
     private final ReferralLut lut;
-    private final DirectoryPartitionNexus nexus;
+    private final PartitionNexus nexus;
     private final boolean doThrow;
     private final int scope;
     private SearchResult prefetched;
     private int refIndex = -1;
 
+    /**
+     * The OIDs normalizer map
+     */
+    private Map normalizerMap;
 
     public ReferralHandlingEnumeration( NamingEnumeration underlying, ReferralLut lut, AttributeTypeRegistry registry,
-        DirectoryPartitionNexus nexus, int scope, boolean doThrow ) throws NamingException
+        PartitionNexus nexus, int scope, boolean doThrow ) throws NamingException
     {
+    	normalizerMap = registry.getNormalizerMapping();
         this.underlying = underlying;
         this.doThrow = doThrow;
         this.lut = lut;
@@ -77,7 +83,7 @@
         {
             SearchResult result = ( SearchResult ) underlying.next();
             LdapDN dn = new LdapDN( result.getName() );
-            dn.normalize();
+            dn.normalize( normalizerMap );
             
             if ( lut.isReferral( dn ) )
             {
@@ -165,7 +171,7 @@
         if ( refs == null )
         {
             LdapDN prefetchedDn = new LdapDN( prefetched.getName() );
-            prefetchedDn.normalize();
+            prefetchedDn.normalize( normalizerMap );
             refs = nexus.lookup( prefetchedDn ).get( REF_ATTR );
         }
 

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/enumeration/SearchResultFilteringEnumeration.java Mon Jul 31 09:27:52 2006
@@ -87,8 +87,8 @@
      * creating this enumeration
      * @param invocation the invocation representing the seach that created this enumeration
      */
-    public SearchResultFilteringEnumeration(NamingEnumeration decorated, SearchControls searchControls,
-        Invocation invocation, SearchResultFilter filter) throws NamingException
+    public SearchResultFilteringEnumeration( NamingEnumeration decorated, SearchControls searchControls,
+        Invocation invocation, SearchResultFilter filter ) throws NamingException
     {
         this.searchControls = searchControls;
         this.invocation = invocation;
@@ -116,8 +116,8 @@
      * creating this enumeration
      * @param invocation the invocation representing the seach that created this enumeration
      */
-    public SearchResultFilteringEnumeration(NamingEnumeration decorated, SearchControls searchControls,
-        Invocation invocation, List filters) throws NamingException
+    public SearchResultFilteringEnumeration( NamingEnumeration decorated, SearchControls searchControls,
+        Invocation invocation, List filters ) throws NamingException
     {
         this.searchControls = searchControls;
         this.invocation = invocation;

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/event/EventService.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/event/EventService.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/event/EventService.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/event/EventService.java Mon Jul 31 09:27:52 2006
@@ -24,8 +24,8 @@
 import org.apache.directory.server.core.invocation.Invocation;
 import org.apache.directory.server.core.invocation.InvocationStack;
 import org.apache.directory.server.core.normalization.NormalizingVisitor;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.PartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.server.core.schema.AttributeTypeRegistry;
 import org.apache.directory.server.core.schema.ConcreteNameComponentNormalizer;
 import org.apache.directory.server.core.schema.OidRegistry;
@@ -62,7 +62,7 @@
 public class EventService extends BaseInterceptor
 {
     private static Logger log = LoggerFactory.getLogger( EventService.class );
-    private DirectoryPartitionNexus nexus;
+    private PartitionNexus nexus;
     private Map sources = new HashMap();
     private Evaluator evaluator = null;
     private AttributeTypeRegistry attributeRegistry;
@@ -95,7 +95,7 @@
         NamingListener namingListener ) throws NamingException
     {
         LdapDN normalizedBaseDn = new LdapDN( name );
-        normalizedBaseDn.normalize();
+        normalizedBaseDn.normalize( attributeRegistry.getNormalizerMapping() );
         
         // -------------------------------------------------------------------
         // must normalize the filter here: need to handle special cases
@@ -231,7 +231,7 @@
             if ( listener instanceof NamespaceChangeListener )
             {
                 NamespaceChangeListener nclistener = ( NamespaceChangeListener ) listener;
-                Binding binding = new Binding( normName.toUpName(), entry, false );
+                Binding binding = new Binding( normName.getUpName(), entry, false );
                 nclistener.objectAdded( new NamingEvent( rec.getEventContext(), NamingEvent.OBJECT_ADDED, binding,
                     null, entry ) );
             }
@@ -258,7 +258,7 @@
             if ( listener instanceof NamespaceChangeListener )
             {
                 NamespaceChangeListener nclistener = ( NamespaceChangeListener ) listener;
-                Binding binding = new Binding( name.toUpName(), entry, false );
+                Binding binding = new Binding( name.getUpName(), entry, false );
                 nclistener.objectRemoved( new NamingEvent( rec.getEventContext(), NamingEvent.OBJECT_REMOVED, null,
                     binding, entry ) );
             }
@@ -284,8 +284,8 @@
             if ( listener instanceof ObjectChangeListener )
             {
                 ObjectChangeListener oclistener = ( ObjectChangeListener ) listener;
-                Binding before = new Binding( name.toUpName(), oriEntry, false );
-                Binding after = new Binding( name.toUpName(), entry, false );
+                Binding before = new Binding( name.getUpName(), oriEntry, false );
+                Binding after = new Binding( name.getUpName(), entry, false );
                 oclistener.objectChanged( new NamingEvent( rec.getEventContext(), NamingEvent.OBJECT_CHANGED, after,
                     before, mods ) );
             }
@@ -296,8 +296,8 @@
     public void modify( NextInterceptor next, LdapDN name, int modOp, Attributes mods ) throws NamingException
     {
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes oriEntry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes oriEntry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         super.modify( next, name, modOp, mods );
 
         // package modifications in ModItem format for event delivery
@@ -314,8 +314,8 @@
     public void modify( NextInterceptor next, LdapDN name, ModificationItem[] mods ) throws NamingException
     {
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
-        Attributes oriEntry = proxy.lookup( name, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+        PartitionNexusProxy proxy = invocation.getProxy();
+        Attributes oriEntry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
         super.modify( next, name, mods );
         notifyOnModify( name, mods, oriEntry );
     }
@@ -339,8 +339,8 @@
             if ( listener instanceof NamespaceChangeListener )
             {
                 NamespaceChangeListener nclistener = ( NamespaceChangeListener ) listener;
-                Binding oldBinding = new Binding( oldName.toUpName(), entry, false );
-                Binding newBinding = new Binding( newName.toUpName(), entry, false );
+                Binding oldBinding = new Binding( oldName.getUpName(), entry, false );
+                Binding newBinding = new Binding( newName.getUpName(), entry, false );
                 nclistener.objectRenamed( new NamingEvent( rec.getEventContext(), NamingEvent.OBJECT_RENAMED,
                     newBinding, oldBinding, entry ) );
             }
@@ -354,7 +354,7 @@
         LdapDN newName = ( LdapDN ) name.clone();
         newName.remove( newName.size() - 1 );
         newName.add( newRn );
-        newName.normalize();
+        newName.normalize( attributeRegistry.getNormalizerMapping() );
         notifyOnNameChange( name, newName );
     }
 

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/exception/ExceptionService.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/exception/ExceptionService.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/exception/ExceptionService.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/exception/ExceptionService.java Mon Jul 31 09:27:52 2006
@@ -29,9 +29,9 @@
 import org.apache.directory.server.core.interceptor.NextInterceptor;
 import org.apache.directory.server.core.invocation.Invocation;
 import org.apache.directory.server.core.invocation.InvocationStack;
-import org.apache.directory.server.core.partition.DirectoryPartition;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.server.core.partition.Partition;
+import org.apache.directory.server.core.partition.PartitionNexus;
+import org.apache.directory.server.core.partition.PartitionNexusProxy;
 import org.apache.directory.shared.ldap.exception.*;
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
@@ -40,7 +40,7 @@
 
 /**
  * An {@link org.apache.directory.server.core.interceptor.Interceptor} that detects any operations that breaks integrity
- * of {@link DirectoryPartition} and terminates the current invocation chain by
+ * of {@link Partition} and terminates the current invocation chain by
  * throwing a {@link NamingException}. Those operations include when an entry
  * already exists at a DN and is added once again to the same DN.
  *
@@ -49,8 +49,12 @@
  */
 public class ExceptionService extends BaseInterceptor
 {
-    private DirectoryPartitionNexus nexus;
+    private PartitionNexus nexus;
 
+    /**
+     * The OIDs normalizer map
+     */
+    private Map normalizerMap;
 
     /**
      * Creates an interceptor that is also the exception handling service.
@@ -60,9 +64,10 @@
     }
 
 
-    public void init( DirectoryServiceConfiguration factoryCfg, InterceptorConfiguration cfg )
+    public void init( DirectoryServiceConfiguration factoryCfg, InterceptorConfiguration cfg ) throws NamingException
     {
         nexus = factoryCfg.getPartitionNexus();
+        normalizerMap = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry().getNormalizerMapping();
     }
 
 
@@ -82,7 +87,7 @@
         if ( nextInterceptor.hasEntry( normName ) )
         {
             NamingException ne = new LdapNameAlreadyBoundException( normName.toString() + " already exists!" );
-            ne.setResolvedName( new LdapDN( normName.toUpName() ) );
+            ne.setResolvedName( new LdapDN( normName.getUpName() ) );
             throw ne;
         }
 
@@ -98,19 +103,19 @@
         }
         catch ( Exception e )
         {
-            LdapNameNotFoundException e2 = new LdapNameNotFoundException( "Parent " + parentDn.toUpName() 
+            LdapNameNotFoundException e2 = new LdapNameNotFoundException( "Parent " + parentDn.getUpName() 
                 + " not found" );
-            e2.setResolvedName( new LdapDN( nexus.getMatchedName( parentDn ).toUpName() ) );
+            e2.setResolvedName( new LdapDN( nexus.getMatchedName( parentDn ).getUpName() ) );
             throw e2;
         }
         
         Attribute objectClass = attrs.get( "objectClass" );
         if ( objectClass.contains( "alias" ) )
         {
-            String msg = "Attempt to add entry to alias '" + normName.toUpName() + "' not allowed.";
+            String msg = "Attempt to add entry to alias '" + normName.getUpName() + "' not allowed.";
             ResultCodeEnum rc = ResultCodeEnum.ALIASPROBLEM;
             NamingException e = new LdapNamingException( msg, rc );
-            e.setResolvedName( new LdapDN( parentDn.toUpName() ) );
+            e.setResolvedName( new LdapDN( parentDn.getUpName() ) );
             throw e;
         }
 
@@ -140,7 +145,7 @@
         if ( hasChildren )
         {
             LdapContextNotEmptyException e = new LdapContextNotEmptyException();
-            e.setResolvedName( new LdapDN( name.toUpName() ) );
+            e.setResolvedName( new LdapDN( name.getUpName() ) );
             throw e;
         }
 
@@ -246,7 +251,7 @@
                     {
                         if ( entryAttr.contains( modAttr.get( jj ) ) )
                         {
-                            throw new LdapAttributeInUseException( "Trying to add existing value '" + modAttr.get( ii )
+                            throw new LdapAttributeInUseException( "Trying to add existing value '" + modAttr.get( jj )
                                 + "' to attribute " + modAttr.getID() );
                         }
                     }
@@ -271,12 +276,12 @@
         LdapDN newDn = ( LdapDN ) dn.clone();
         newDn.remove( dn.size() - 1 );
         newDn.add( newRn );
-        newDn.normalize();
+        newDn.normalize( normalizerMap );
         if ( nextInterceptor.hasEntry( newDn ) )
         {
             LdapNameAlreadyBoundException e;
-            e = new LdapNameAlreadyBoundException( "target entry " + newDn.toUpName() + " already exists!" );
-            e.setResolvedName( new LdapDN( newDn.toUpName() ) );
+            e = new LdapNameAlreadyBoundException( "target entry " + newDn.getUpName() + " already exists!" );
+            e.setResolvedName( new LdapDN( newDn.getUpName() ) );
             throw e;
         }
 
@@ -305,13 +310,13 @@
         if ( nextInterceptor.hasEntry( target ) )
         {
             // we must calculate the resolved name using the user provided Rdn value
-            String upRdn = new LdapDN( oriChildName.toUpName() ).get( oriChildName.size() - 1 );
+            String upRdn = new LdapDN( oriChildName.getUpName() ).get( oriChildName.size() - 1 );
             LdapDN upTarget = ( LdapDN ) newParentName.clone();
             upTarget.add( upRdn );
 
             LdapNameAlreadyBoundException e;
-            e = new LdapNameAlreadyBoundException( "target entry " + upTarget.toUpName() + " already exists!" );
-            e.setResolvedName( new LdapDN( upTarget.toUpName() ) );
+            e = new LdapNameAlreadyBoundException( "target entry " + upTarget.getUpName() + " already exists!" );
+            e.setResolvedName( new LdapDN( upTarget.getUpName() ) );
             throw e;
         }
 
@@ -337,7 +342,7 @@
         // check to see if target entry exists
         LdapDN target = ( LdapDN ) newParentName.clone();
         target.add( newRn );
-        target.normalize();
+        target.normalize( normalizerMap );
         if ( nextInterceptor.hasEntry( target ) )
         {
             // we must calculate the resolved name using the user provided Rdn value
@@ -345,8 +350,8 @@
             upTarget.add( newRn );
 
             LdapNameAlreadyBoundException e;
-            e = new LdapNameAlreadyBoundException( "target entry " + upTarget.toUpName() + " already exists!" );
-            e.setResolvedName( new LdapDN( upTarget.toUpName() ) );
+            e = new LdapNameAlreadyBoundException( "target entry " + upTarget.getUpName() + " already exists!" );
+            e.setResolvedName( new LdapDN( upTarget.getUpName() ) );
             throw e;
         }
 
@@ -390,7 +395,7 @@
     private void assertHasEntry( NextInterceptor nextInterceptor, String msg, LdapDN dn ) throws NamingException
     {
         Invocation invocation = InvocationStack.getInstance().peek();
-        DirectoryPartitionNexusProxy proxy = invocation.getProxy();
+        PartitionNexusProxy proxy = invocation.getProxy();
         if ( !nextInterceptor.hasEntry( dn ) )
         {
             LdapNameNotFoundException e;
@@ -404,7 +409,7 @@
                 e = new LdapNameNotFoundException( dn.toString() );
             }
 
-            e.setResolvedName( new LdapDN( proxy.getMatchedName( dn ).toUpName() ) );
+            e.setResolvedName( new LdapDN( proxy.getMatchedName( dn ).getUpName() ) );
             throw e;
         }
     }

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/interceptor/BaseInterceptor.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/interceptor/BaseInterceptor.java?rev=427156&r1=427155&r2=427156&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/interceptor/BaseInterceptor.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/interceptor/BaseInterceptor.java Mon Jul 31 09:27:52 2006
@@ -31,7 +31,7 @@
 
 import org.apache.directory.server.core.DirectoryServiceConfiguration;
 import org.apache.directory.server.core.authn.LdapPrincipal;
-import org.apache.directory.server.core.configuration.DirectoryPartitionConfiguration;
+import org.apache.directory.server.core.configuration.PartitionConfiguration;
 import org.apache.directory.server.core.configuration.InterceptorConfiguration;
 import org.apache.directory.server.core.invocation.InvocationStack;
 import org.apache.directory.server.core.jndi.ServerContext;
@@ -200,7 +200,7 @@
     }
 
 
-    public void addContextPartition( NextInterceptor next, DirectoryPartitionConfiguration cfg ) throws NamingException
+    public void addContextPartition( NextInterceptor next, PartitionConfiguration cfg ) throws NamingException
     {
         next.addContextPartition( cfg );
     }