You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/07/13 01:37:40 UTC

svn commit: r963530 [2/3] - in /directory/apacheds/trunk: core-api/src/main/java/org/apache/directory/server/core/ core-api/src/main/java/org/apache/directory/server/core/event/ core-api/src/main/java/org/apache/directory/server/core/schema/ core-api/s...

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/FilterNormalizingVisitor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/FilterNormalizingVisitor.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/FilterNormalizingVisitor.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/FilterNormalizingVisitor.java Mon Jul 12 23:37:38 2010
@@ -26,7 +26,6 @@ import java.util.List;
 import org.apache.directory.shared.ldap.entry.StringValue;
 import org.apache.directory.shared.ldap.entry.Value;
 import org.apache.directory.shared.ldap.exception.LdapException;
-import org.apache.directory.shared.ldap.exception.LdapNoSuchAttributeException;
 import org.apache.directory.shared.ldap.filter.AndNode;
 import org.apache.directory.shared.ldap.filter.BranchNode;
 import org.apache.directory.shared.ldap.filter.ExprNode;
@@ -132,21 +131,19 @@ public class FilterNormalizingVisitor im
      * @param value The value to normalize
      * @return the normalized value
      */
-    private Value<?> normalizeValue( String attribute, Value<?> value )
+    private Value<?> normalizeValue( AttributeType attributeType, Value<?> value )
     {
         try
         {
             Value<?> normalized = null;
 
-            AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( attribute );
-
             if ( attributeType.getSyntax().isHumanReadable() )
             {
-                normalized = new StringValue( ( String ) ncn.normalizeByName( attribute, value.getString() ) );
+                normalized = new StringValue( ( String ) ncn.normalizeByName( attributeType.getOid(), value.getString() ) );
             }
             else
             {
-                normalized = ( Value<?> ) ncn.normalizeByName( attribute, value.getBytes() );
+                normalized = ( Value<?> ) ncn.normalizeByName( attributeType.getOid(), value.getBytes() );
             }
 
             return normalized;
@@ -168,15 +165,15 @@ public class FilterNormalizingVisitor im
      */
     private ExprNode visitPresenceNode( PresenceNode node ) throws LdapException
     {
-        try
-        {
-            node.setAttribute( schemaManager.getAttributeTypeRegistry().getOidByName( node.getAttribute() ) );
-        }
-        catch ( LdapNoSuchAttributeException lnsae )
+        // still need this check here in case the top level is a leaf node
+        // with an undefined attributeType for its attribute
+        if ( !ncn.isDefined( node.getAttribute() ) )
         {
             return null;
         }
 
+        node.setAttributeType( schemaManager.lookupAttributeTypeRegistry( node.getAttribute() ) );
+
         return node;
     }
 
@@ -194,7 +191,6 @@ public class FilterNormalizingVisitor im
      */
     private ExprNode visitSimpleNode( SimpleNode node ) throws LdapException
     {
-        
         // still need this check here in case the top level is a leaf node
         // with an undefined attributeType for its attribute
         if ( !ncn.isDefined( node.getAttribute() ) )
@@ -202,17 +198,9 @@ public class FilterNormalizingVisitor im
             return null;
         }
         
-        // Check that the AttributeType is valid
-        try
-        {
-            node.setAttribute( schemaManager.getAttributeTypeRegistry().getOidByName( node.getAttribute() ) );
-        }
-        catch ( LdapNoSuchAttributeException lnsae )
-        {
-            return null;
-        }
-
-        Value<?> normalized = normalizeValue( node.getAttribute(), node.getValue() );
+        node.setAttributeType( schemaManager.lookupAttributeTypeRegistry( node.getAttribute() ) );
+        
+        Value<?> normalized = normalizeValue( node.getAttributeType(), node.getValue() );
 
         if ( normalized == null )
         {
@@ -243,11 +231,13 @@ public class FilterNormalizingVisitor im
             return null;
         }
 
+        node.setAttributeType( schemaManager.lookupAttributeTypeRegistry( node.getAttribute() ) );
+
         Value<?> normInitial = null;
 
         if ( node.getInitial() != null )
         {
-            normInitial = normalizeValue( node.getAttribute(), new StringValue( node.getInitial() ) );
+            normInitial = normalizeValue( node.getAttributeType(), new StringValue( node.getInitial() ) );
 
             if ( normInitial == null )
             {
@@ -263,7 +253,7 @@ public class FilterNormalizingVisitor im
 
             for ( String any : node.getAny() )
             {
-                Value<?> normAny = normalizeValue( node.getAttribute(), new StringValue( any ) );
+                Value<?> normAny = normalizeValue( node.getAttributeType(), new StringValue( any ) );
 
                 if ( normAny != null )
                 {
@@ -281,7 +271,7 @@ public class FilterNormalizingVisitor im
 
         if ( node.getFinal() != null )
         {
-            normFinal = normalizeValue( node.getAttribute(), new StringValue( node.getFinal() ) );
+            normFinal = normalizeValue( node.getAttributeType(), new StringValue( node.getFinal() ) );
 
             if ( normFinal == null )
             {
@@ -289,8 +279,6 @@ public class FilterNormalizingVisitor im
             }
         }
 
-        node.setAttribute( schemaManager.getAttributeTypeRegistry().getOidByName( node.getAttribute() ) );
-
         if ( normInitial != null )
         {
             node.setInitial( normInitial.getString() );
@@ -326,16 +314,15 @@ public class FilterNormalizingVisitor im
      */
     private ExprNode visitExtensibleNode( ExtensibleNode node ) throws LdapException
     {
-        // Check that the AttributeType is valid
-        try
-        {
-            node.setAttribute( schemaManager.getAttributeTypeRegistry().getOidByName( node.getAttribute() ) );
-        }
-        catch ( LdapNoSuchAttributeException lnsae )
+        // still need this check here in case the top level is a leaf node
+        // with an undefined attributeType for its attribute
+        if ( !ncn.isDefined( node.getAttribute() ) )
         {
             return null;
         }
 
+        node.setAttributeType( schemaManager.lookupAttributeTypeRegistry( node.getAttribute() ) );
+
         return node;
     }
 

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java Mon Jul 12 23:37:38 2010
@@ -253,18 +253,23 @@ public class NormalizationInterceptor ex
 
         ExprNode filter = searchContext.getFilter();
 
+        if ( filter == null )
+        {
+            LOG.warn( "undefined filter based on undefined attributeType not evaluted at all.  Returning empty enumeration." );
+            return new BaseEntryFilteringCursor( new EmptyCursor<Entry>(), searchContext );
+        }
+
         // Normalize the filter
-        ExprNode result = ( ExprNode ) filter.accept( normVisitor );
+        filter = ( ExprNode ) filter.accept( normVisitor );
 
-        if ( result == null )
+        if ( filter == null )
         {
-            LOG
-                .warn( "undefined filter based on undefined attributeType not evaluted at all.  Returning empty enumeration." );
+            LOG.warn( "undefined filter based on undefined attributeType not evaluted at all.  Returning empty enumeration." );
             return new BaseEntryFilteringCursor( new EmptyCursor<Entry>(), searchContext );
         }
         else
         {
-            searchContext.setFilter( result );
+            searchContext.setFilter( filter );
 
             // TODO Normalize the returned Attributes, storing the UP attributes to format the returned values.
             return nextInterceptor.search( searchContext );

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/partition/DefaultPartitionNexus.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/partition/DefaultPartitionNexus.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/partition/DefaultPartitionNexus.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/partition/DefaultPartitionNexus.java Mon Jul 12 23:37:38 2010
@@ -144,7 +144,11 @@ public class DefaultPartitionNexus exten
     /** the closed state of this partition */
     private boolean initialized;
 
-    private static AttributeType ENTRY_CSN_ATTRIBUTE_TYPE;
+    /** A reference to the EntryCSN attributeType */
+    private static AttributeType ENTRY_CSN_AT;
+
+    /** A reference to the ObjectClass attributeType */
+    private static AttributeType OBJECT_CLASS_AT;
 
     final List<Modification> mods = new ArrayList<Modification>( 2 );
 
@@ -214,7 +218,8 @@ public class DefaultPartitionNexus exten
 
         //this.directoryService = directoryService;
         schemaManager = directoryService.getSchemaManager();
-        ENTRY_CSN_ATTRIBUTE_TYPE = schemaManager.getAttributeType( SchemaConstants.ENTRY_CSN_AT );
+        ENTRY_CSN_AT = schemaManager.getAttributeType( SchemaConstants.ENTRY_CSN_AT );
+        OBJECT_CLASS_AT = schemaManager.getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
 
         // Initialize and normalize the localy used DNs
         DN adminDn = new DN( ServerDNConstants.ADMIN_SYSTEM_DN );
@@ -672,7 +677,7 @@ public class DefaultPartitionNexus exten
         Partition backend = getPartition( modifyContext.getDn() );
 
         String csn = directoryService.getCSN().toString();
-        EntryAttribute attribute = new DefaultEntryAttribute( ENTRY_CSN_ATTRIBUTE_TYPE, csn );
+        EntryAttribute attribute = new DefaultEntryAttribute( ENTRY_CSN_AT, csn );
         Modification updatedCsn = new DefaultModification( ModificationOperation.REPLACE_ATTRIBUTE, attribute );
         modifyContext.getModItems().add( updatedCsn );
 
@@ -825,7 +830,7 @@ public class DefaultPartitionNexus exten
             // We have to be careful, as we may have a filter which is not a PresenceFilter
             if ( filter instanceof PresenceNode )
             {
-                isSearchAll = ( ( PresenceNode ) filter ).getAttribute().equals( SchemaConstants.OBJECT_CLASS_AT_OID );
+                isSearchAll = ( ( PresenceNode ) filter ).getAttributeType().equals( OBJECT_CLASS_AT );
             }
 
             /*

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java Mon Jul 12 23:37:38 2010
@@ -529,17 +529,15 @@ public class SchemaInterceptor extends B
     }
 
 
-    private Value<?> convert( String id, Object value ) throws LdapException
+    private Value<?> convert( AttributeType attributeType, Value<?> value ) throws LdapException
     {
-        AttributeType at = schemaManager.lookupAttributeTypeRegistry( id );
-
-        if ( at.getSyntax().isHumanReadable() )
+        if ( attributeType.getSyntax().isHumanReadable() )
         {
-            if ( value instanceof byte[] )
+            if ( value instanceof BinaryValue )
             {
                 try
                 {
-                    return new StringValue( new String( ( byte[] ) value, "UTF-8" ) );
+                    return new StringValue( attributeType, new String( (( BinaryValue ) value).getBytes(), "UTF-8" ) );
                 }
                 catch ( UnsupportedEncodingException uee )
                 {
@@ -551,18 +549,9 @@ public class SchemaInterceptor extends B
         }
         else
         {
-            if ( value instanceof String )
+            if ( value instanceof StringValue )
             {
-                try
-                {
-                    return new BinaryValue( ( ( String ) value ).getBytes( "UTF-8" ) );
-                }
-                catch ( UnsupportedEncodingException uee )
-                {
-                    String message = I18n.err( I18n.ERR_48 );
-                    LOG.error( message );
-                    throw new LdapException( message );
-                }
+                return new BinaryValue( attributeType, ( ( StringValue ) value ).getBytes() );
             }
         }
 
@@ -589,9 +578,9 @@ public class SchemaInterceptor extends B
             if ( filter instanceof EqualityNode )
             {
                 EqualityNode node = ( ( EqualityNode ) filter );
-                Object value = node.getValue();
+                Value<?> value = node.getValue();
 
-                Value<?> newValue = convert( node.getAttribute(), value );
+                Value<?> newValue = convert( node.getAttributeType(), value );
 
                 if ( newValue != null )
                 {
@@ -608,9 +597,9 @@ public class SchemaInterceptor extends B
             else if ( filter instanceof GreaterEqNode )
             {
                 GreaterEqNode node = ( ( GreaterEqNode ) filter );
-                Object value = node.getValue();
+                Value<?> value = node.getValue();
 
-                Value<?> newValue = convert( node.getAttribute(), value );
+                Value<?> newValue = convert( node.getAttributeType(), value );
 
                 if ( newValue != null )
                 {
@@ -621,9 +610,9 @@ public class SchemaInterceptor extends B
             else if ( filter instanceof LessEqNode )
             {
                 LessEqNode node = ( ( LessEqNode ) filter );
-                Object value = node.getValue();
+                Value<?> value = node.getValue();
 
-                Value<?> newValue = convert( node.getAttribute(), value );
+                Value<?> newValue = convert( node.getAttributeType(), value );
 
                 if ( newValue != null )
                 {
@@ -633,20 +622,13 @@ public class SchemaInterceptor extends B
             else if ( filter instanceof ExtensibleNode )
             {
                 ExtensibleNode node = ( ( ExtensibleNode ) filter );
-
-                if ( !schemaManager.lookupAttributeTypeRegistry( node.getAttribute() ).getSyntax().isHumanReadable() )
-                {
-                    String message = I18n.err( I18n.ERR_51 );
-                    LOG.error( message );
-                    throw new LdapException( message );
-                }
             }
             else if ( filter instanceof ApproximateNode )
             {
                 ApproximateNode node = ( ( ApproximateNode ) filter );
-                Object value = node.getValue();
+                Value<?> value = node.getValue();
 
-                Value<?> newValue = convert( node.getAttribute(), value );
+                Value<?> newValue = convert( node.getAttributeType(), value );
 
                 if ( newValue != null )
                 {
@@ -730,10 +712,10 @@ public class SchemaInterceptor extends B
                     return new BaseEntryFilteringCursor( new EmptyCursor<Entry>(), searchContext );
                 }
 
-                String nodeOid = schemaManager.getAttributeTypeRegistry().getOidByName( node.getAttribute() );
+                AttributeType nodeAt = node.getAttributeType();
 
                 // see if node attribute is objectClass
-                if ( nodeOid.equals( SchemaConstants.OBJECT_CLASS_AT_OID )
+                if ( nodeAt.equals( OBJECT_CLASS_AT )
                     && ( objectClassOid.equals( SchemaConstants.TOP_OC_OID ) || objectClassOid
                         .equals( SchemaConstants.SUBSCHEMA_OC_OID ) ) && ( node instanceof EqualityNode ) )
                 {
@@ -752,7 +734,7 @@ public class SchemaInterceptor extends B
                 PresenceNode node = ( PresenceNode ) filter;
 
                 // see if node attribute is objectClass
-                if ( node.getAttribute().equals( SchemaConstants.OBJECT_CLASS_AT_OID ) )
+                if ( node.getAttributeType().equals( OBJECT_CLASS_AT ) )
                 {
                     // call.setBypass( true );
                     Entry serverEntry = schemaService.getSubschemaEntry( searchCtls.getReturningAttributes() );

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/LdapClassLoader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/LdapClassLoader.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/LdapClassLoader.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/LdapClassLoader.java Mon Jul 12 23:37:38 2010
@@ -40,6 +40,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.filter.SearchScope;
 import org.apache.directory.shared.ldap.message.AliasDerefMode;
 import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -65,6 +66,9 @@ public class LdapClassLoader extends Cla
     private DN defaultSearchDn;
     private DirectoryService directoryService;
 
+    /** A storage for the ObjectClass attributeType */
+    private AttributeType OBJECT_CLASS_AT;
+
     
     public LdapClassLoader( DirectoryService directoryService ) throws LdapException
     {
@@ -72,6 +76,8 @@ public class LdapClassLoader extends Cla
         this.directoryService = directoryService;
         defaultSearchDn = new DN( DEFAULT_SEARCH_CONTEXTS_CONFIG );
         defaultSearchDn.normalize( directoryService.getSchemaManager().getNormalizerMapping() );
+        
+        OBJECT_CLASS_AT = directoryService.getSchemaManager().getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
     }
 
     
@@ -79,9 +85,9 @@ public class LdapClassLoader extends Cla
     {
         // Set up the search filter
         BranchNode filter = new AndNode( );
-        filter.addNode( new EqualityNode<String>( "fullyQualifiedJavaClassName", 
-            new StringValue( name ) ) );
-        filter.addNode( new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, 
+        AttributeType fqjcnAt = directoryService.getSchemaManager().getAttributeType( "fullyQualifiedJavaClassName" );
+        filter.addNode( new EqualityNode<String>( fqjcnAt, new StringValue( name ) ) );
+        filter.addNode( new EqualityNode<String>( OBJECT_CLASS_AT, 
             new StringValue( ApacheSchemaConstants.JAVA_CLASS_OC ) ) );
         
         try

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/StoredProcExecutionManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/StoredProcExecutionManager.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/StoredProcExecutionManager.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/sp/StoredProcExecutionManager.java Mon Jul 12 23:37:38 2010
@@ -31,8 +31,8 @@ import org.apache.directory.server.core.
 import org.apache.directory.server.core.filtering.EntryFilteringCursor;
 import org.apache.directory.server.i18n.I18n;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
-import org.apache.directory.shared.ldap.entry.StringValue;
 import org.apache.directory.shared.ldap.entry.Entry;
+import org.apache.directory.shared.ldap.entry.StringValue;
 import org.apache.directory.shared.ldap.exception.LdapException;
 import org.apache.directory.shared.ldap.filter.EqualityNode;
 import org.apache.directory.shared.ldap.filter.ExprNode;
@@ -86,9 +86,9 @@ public class StoredProcExecutionManager
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
         String spUnitName = StoredProcUtils.extractStoredProcUnitName( fullSPName );
         
-        AttributeType at = session.getDirectoryService()
+        AttributeType storeProcUnitNamAT = session.getDirectoryService()
             .getSchemaManager().lookupAttributeTypeRegistry( "storedProcUnitName" );
-        ExprNode filter = new EqualityNode<String>( "storedProcUnitName", new StringValue( at, spUnitName ) );
+        ExprNode filter = new EqualityNode<String>( storeProcUnitNamAT, new StringValue( storeProcUnitNamAT, spUnitName ) );
         DN dn = new DN( storedProcContainer );
         EntryFilteringCursor results = session.search( dn, SearchScope.SUBTREE, filter, 
             AliasDerefMode.DEREF_ALWAYS, EMPTY_ATTRIBS );

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java Mon Jul 12 23:37:38 2010
@@ -28,6 +28,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.exception.LdapException;
 import org.apache.directory.shared.ldap.filter.EqualityNode;
 import org.apache.directory.shared.ldap.filter.SimpleNode;
+import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.SchemaManager;
 
 
@@ -43,6 +44,9 @@ public class RefinementLeafEvaluator
     /** A SchemaManager instance */
     private final SchemaManager schemaManager;
 
+    /** A storage for the ObjectClass attributeType */
+    private AttributeType OBJECT_CLASS_AT;
+
 
     /**
      * Creates a refinement filter's leaf node evaluator.
@@ -52,6 +56,7 @@ public class RefinementLeafEvaluator
     public RefinementLeafEvaluator( SchemaManager schemaManager)
     {
         this.schemaManager = schemaManager;
+        OBJECT_CLASS_AT = schemaManager.getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
     }
 
 
@@ -77,10 +82,19 @@ public class RefinementLeafEvaluator
             throw new LdapException( I18n.err( I18n.ERR_301, node ) );
         }
         
-        if ( !node.getAttribute().equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT ) )
+        if ( node.isSchemaAware() )
+        {
+            if ( !node.getAttributeType().equals( OBJECT_CLASS_AT ) )
+            {
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_302, node.getAttribute() ) );
+            }
+        }
+        else if ( !node.getAttribute().equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT ) &&
+                  !node.getAttribute().equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT_OID ) )
         {
-            throw new LdapException( I18n.err( I18n.ERR_302, node.getAttribute() ) );
+            throw new IllegalArgumentException( I18n.err( I18n.ERR_302, node.getAttribute() ) );
         }
+            
 
         if ( null == objectClasses )
         {

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java Mon Jul 12 23:37:38 2010
@@ -126,6 +126,9 @@ public class SubentryInterceptor extends
 
     /** A reference to the ObjectClass AT */
     private static AttributeType OBJECT_CLASS_AT;
+    
+    /** A reference to the AdmiistrativeRole AT */
+    private static AttributeType ADMINISTRATIVE_ROLE_AT;
 
 
     /**
@@ -142,13 +145,14 @@ public class SubentryInterceptor extends
 
         // setup various attribute type values
         OBJECT_CLASS_AT = schemaManager.getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
+        ADMINISTRATIVE_ROLE_AT = schemaManager.getAttributeType( SchemaConstants.ADMINISTRATIVE_ROLE_AT );
 
         ssParser = new SubtreeSpecificationParser( schemaManager );
         evaluator = new SubtreeEvaluator( schemaManager );
 
         // prepare to find all subentries in all namingContexts
         Set<String> suffixes = nexus.listSuffixes();
-        ExprNode filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        ExprNode filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             SchemaConstants.SUBENTRY_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -478,7 +482,7 @@ public class SubentryInterceptor extends
             DN baseDn = ( DN ) apName.clone();
             baseDn.addAll( ss.getBase() );
 
-            ExprNode filter = new PresenceNode( SchemaConstants.OBJECT_CLASS_AT_OID ); // (objectClass=*)
+            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT ); // (objectClass=*)
             SearchControls controls = new SearchControls();
             controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
             controls.setReturningAttributes( new String[]
@@ -625,7 +629,7 @@ public class SubentryInterceptor extends
             DN baseDn = ( DN ) apName.clone();
             baseDn.addAll( ss.getBase() );
 
-            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT.getOid() );
+            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT );
             SearchControls controls = new SearchControls();
             controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
             controls.setReturningAttributes( new String[]
@@ -681,7 +685,7 @@ public class SubentryInterceptor extends
      */
     private boolean hasAdministrativeDescendant( OperationContext opContext, DN name ) throws LdapException
     {
-        ExprNode filter = new PresenceNode( SchemaConstants.ADMINISTRATIVE_ROLE_AT );
+        ExprNode filter = new PresenceNode( ADMINISTRATIVE_ROLE_AT );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
 
@@ -807,7 +811,7 @@ public class SubentryInterceptor extends
             next.rename( renameContext );
 
             subentry = subentryCache.getSubentry( newName );
-            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT.getName() );
+            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT );
             SearchControls controls = new SearchControls();
             controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
             controls.setReturningAttributes( new String[]
@@ -892,7 +896,7 @@ public class SubentryInterceptor extends
 
             subentry = subentryCache.getSubentry( newName );
 
-            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT.getOid() );
+            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT );
             SearchControls controls = new SearchControls();
             controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
             controls.setReturningAttributes( new String[]
@@ -978,7 +982,7 @@ public class SubentryInterceptor extends
 
             subentry = subentryCache.getSubentry( newName );
 
-            ExprNode filter = new PresenceNode( SchemaConstants.OBJECT_CLASS_AT );
+            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT );
             SearchControls controls = new SearchControls();
             controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
             controls.setReturningAttributes( new String[]
@@ -1128,7 +1132,7 @@ public class SubentryInterceptor extends
             DN apName = dn.getParent();
             DN oldBaseDn = ( DN ) apName.clone();
             oldBaseDn.addAll( ssOld.getBase() );
-            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT.getOid() );
+            ExprNode filter = new PresenceNode( OBJECT_CLASS_AT );
             SearchControls controls = new SearchControls();
             controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
             controls.setReturningAttributes( new String[]

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java Mon Jul 12 23:37:38 2010
@@ -55,6 +55,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.message.AliasDerefMode;
 import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.NormalizerMappingResolver;
 import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.apache.directory.shared.ldap.schema.normalizers.OidNormalizer;
@@ -117,10 +118,13 @@ public class TriggerSpecCache
         // add that subentry to the hash
         Set<String> suffixes = nexus.listSuffixes();
         
+        AttributeType objectClassAt = directoryService.getSchemaManager().
+            getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
+        
         for ( String suffix:suffixes )
         {
             DN baseDn = new DN( suffix );
-            ExprNode filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, 
+            ExprNode filter = new EqualityNode<String>( objectClassAt, 
                     new StringValue( ApacheSchemaConstants.TRIGGER_EXECUTION_SUBENTRY_OC ) );
             SearchControls ctls = new SearchControls();
             ctls.setSearchScope( SearchControls.SUBTREE_SCOPE );

Modified: directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilterTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilterTest.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilterTest.java (original)
+++ directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/MostSpecificProtectedItemFilterTest.java Mon Jul 12 23:37:38 2010
@@ -45,6 +45,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.filter.PresenceNode;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -81,7 +82,9 @@ public class MostSpecificProtectedItemFi
     private static final List<ACITuple> TUPLES_D = new ArrayList<ACITuple>();
     private static final List<ACITuple> TUPLES_E = new ArrayList<ACITuple>();
 
-    static
+    
+    @BeforeClass
+    public static void init()
     {
         Collection<ProtectedItem> attributeType = new ArrayList<ProtectedItem>();
         Collection<ProtectedItem> allAttributeValues = new ArrayList<ProtectedItem>();
@@ -95,7 +98,7 @@ public class MostSpecificProtectedItemFi
         allAttributeValues.add( new AllAttributeValuesItem( EMPTY_STRING_COLLECTION ) );
         selfValue.add( new SelfValueItem( EMPTY_STRING_COLLECTION ) );
         attributeValue.add( new AttributeValueItem( EMPTY_ATTRIBUTE_COLLECTION ) );
-        rangeOfValues.add( new RangeOfValuesItem( new PresenceNode( "objectClass" ) ) );
+        rangeOfValues.add( new RangeOfValuesItem( new PresenceNode( (String)null ) ) );
         allUserAttributeTypes.add( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES );
         allUserAttributeTypesAndValues.add( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES_AND_VALUES );
 
@@ -150,7 +153,6 @@ public class MostSpecificProtectedItemFi
         TUPLES_E.add( allUserAttributeTypesAndValuesTuple );
     }
 
-
     @Test
     public void testZeroOrOneTuple() throws Exception
     {

Modified: directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java (original)
+++ directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java Mon Jul 12 23:37:38 2010
@@ -58,7 +58,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.apache.directory.shared.ldap.schema.loader.ldif.JarLdifSchemaLoader;
 import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.apache.directory.shared.ldap.schema.registries.OidRegistry;
 import org.apache.directory.shared.ldap.util.LdapExceptionUtils;
 import org.junit.BeforeClass;
 import org.junit.Test;

Modified: directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java (original)
+++ directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java Mon Jul 12 23:37:38 2010
@@ -81,7 +81,7 @@ public class NormalizationVisitorTest
     @Test
     public void testSimpleFilter() throws ParseException
     {
-        ExprNode filter = FilterParser.parse( "(ou=  test  1 )" );
+        ExprNode filter = FilterParser.parse( schemaManager, "(ou=  test  1 )" );
         ExprNode result = ( ExprNode ) filter.accept( normVisitor );
         
         assertNotNull( result );
@@ -89,14 +89,14 @@ public class NormalizationVisitorTest
         EqualityNode<?> equalityNode = (EqualityNode<?>)result;
         
         assertEquals( "test 1", equalityNode.getValue().getNormalizedValue() );
-        assertEquals( "2.5.4.11", equalityNode.getAttribute() );
+        assertEquals( "2.5.4.11", equalityNode.getAttributeType().getOid() );
     }
     
     
     @Test
     public void testBranchNormalizedVisitor() throws Exception
     {
-        ExprNode filter = FilterParser.parse( "(!(|(uniqueMember=cn=user1,ou=Test,dc=example,dc=com)(member=cn=user2,ou=Test,dc=example,dc=com)))" );
+        ExprNode filter = FilterParser.parse( schemaManager, "(!(|(uniqueMember=cn=user1,ou=Test,dc=example,dc=com)(member=cn=user2,ou=Test,dc=example,dc=com)))" );
         ExprNode result = ( ExprNode ) filter.accept( normVisitor );
 
         assertNotNull( result );

Modified: directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java (original)
+++ directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java Mon Jul 12 23:37:38 2010
@@ -36,7 +36,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.apache.directory.shared.ldap.schema.loader.ldif.JarLdifSchemaLoader;
 import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.apache.directory.shared.ldap.schema.registries.Registries;
 import org.apache.directory.shared.ldap.util.LdapExceptionUtils;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -53,17 +52,17 @@ import org.junit.runner.RunWith;
 @Concurrent()
 public class RefinementEvaluatorTest
 {
-    /** the registries */
-    private static Registries registries;
+    /** the SchemaManager instance */
+    private static SchemaManager schemaManager;
     
     /** the refinement evaluator to test */
     private static RefinementEvaluator evaluator;
 
     /** The ObjectClass AttributeType */
-    private static AttributeType OBJECT_CLASS;
+    private static AttributeType OBJECT_CLASS_AT;
 
-    /** The CN AttributeType */
-    private static AttributeType CN;
+    /** The CN_AT AttributeType */
+    private static AttributeType CN_AT;
     
     
     /**
@@ -75,7 +74,7 @@ public class RefinementEvaluatorTest
     {
         JarLdifSchemaLoader loader = new JarLdifSchemaLoader();
 
-        SchemaManager schemaManager = new DefaultSchemaManager( loader );
+        schemaManager = new DefaultSchemaManager( loader );
 
         boolean loaded = schemaManager.loadAllEnabled();
 
@@ -84,13 +83,11 @@ public class RefinementEvaluatorTest
             fail( "Schema load failed : " + LdapExceptionUtils.printErrors( schemaManager.getErrors() ) );
         }
 
-        registries = schemaManager.getRegistries();
-
         RefinementLeafEvaluator leafEvaluator = new RefinementLeafEvaluator( schemaManager );
         evaluator = new RefinementEvaluator( leafEvaluator );
         
-        OBJECT_CLASS = registries.getAttributeTypeRegistry().lookup( "objectClass" );
-        CN = registries.getAttributeTypeRegistry().lookup( "cn" );
+        OBJECT_CLASS_AT = schemaManager.getAttributeType( "objectClass" );
+        CN_AT = schemaManager.getAttributeTypeRegistry().lookup( "cn" );
     }
 
 
@@ -113,7 +110,7 @@ public class RefinementEvaluatorTest
     {
         try
         {
-            assertFalse( evaluator.evaluate( null, new DefaultEntryAttribute( "objectClass", OBJECT_CLASS ) ) );
+            assertFalse( evaluator.evaluate( null, new DefaultEntryAttribute( OBJECT_CLASS_AT ) ) );
             fail( "should never get here due to an IAE" );
         }
         catch ( IllegalArgumentException iae )
@@ -122,7 +119,7 @@ public class RefinementEvaluatorTest
 
         try
         {
-            assertFalse( evaluator.evaluate( new EqualityNode( "", new StringValue( "" ) ), null ) );
+            assertFalse( evaluator.evaluate( new EqualityNode( (String)null, new StringValue( "" ) ), null ) );
             fail( "should never get here due to an IAE" );
         }
         catch ( IllegalArgumentException iae )
@@ -131,8 +128,8 @@ public class RefinementEvaluatorTest
 
         try
         {
-            assertFalse( evaluator.evaluate( new EqualityNode( "", new StringValue( "" ) ), 
-                new DefaultEntryAttribute( "cn", CN ) ) );
+            assertFalse( evaluator.evaluate( new EqualityNode( (String)null, new StringValue( "" ) ), 
+                new DefaultEntryAttribute( "cn", CN_AT ) ) );
             fail( "should never get here due to an IAE" );
         }
         catch ( IllegalArgumentException iae )
@@ -147,38 +144,38 @@ public class RefinementEvaluatorTest
         EntryAttribute objectClasses = null;
 
         // positive test
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "person" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "person" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person", "blah" );
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "person" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person", "blah" );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "person" ) ), objectClasses ) );
 
         // negative tests
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "blah" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "blah" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "blah" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "person" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "blah" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "person" ) ), objectClasses ) );
     }
 
 
     @Test 
     public void testMatchByOID() throws Exception
     {
-        EntryAttribute objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
+        EntryAttribute objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
         
         // positive test
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.6" ) ), objectClasses ) );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.6" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person", "blah" );
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.6" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person", "blah" );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.6" ) ), objectClasses ) );
 
         // negative tests
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.5" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.5" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "blah" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.5" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "blah" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.5" ) ), objectClasses ) );
     }
 
 
@@ -186,17 +183,17 @@ public class RefinementEvaluatorTest
     public void testComplexOrRefinement() throws Exception
     {
         ExprNode refinement = null;
-        EntryAttribute objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
+        EntryAttribute objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
         String refStr = "(|(objectClass=person)(objectClass=organizationalUnit))";
         
-        refinement = FilterParser.parse( refStr );
+        refinement = FilterParser.parse( schemaManager, refStr );
 
         assertTrue( evaluator.evaluate( refinement, objectClasses ) );
         
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "organizationalUnit" );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "organizationalUnit" );
         assertTrue( evaluator.evaluate( refinement, objectClasses ) );
         
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "domain" );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "domain" );
         assertFalse( evaluator.evaluate( refinement, objectClasses ) );
     }
 
@@ -205,21 +202,21 @@ public class RefinementEvaluatorTest
     public void testComplexAndRefinement() throws Exception
     {
         ExprNode refinement = null;
-        EntryAttribute objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
+        EntryAttribute objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
         objectClasses.add( "organizationalUnit" );
         String refStr = "(&(objectClass=person)(objectClass=organizationalUnit))";
         
-        refinement = FilterParser.parse( refStr );
+        refinement = FilterParser.parse( schemaManager,refStr );
 
         assertTrue( evaluator.evaluate( refinement, objectClasses ) );
         
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "organizationalUnit" );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "organizationalUnit" );
         assertFalse( evaluator.evaluate( refinement, objectClasses ) );
         
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
         assertFalse( evaluator.evaluate( refinement, objectClasses ) );
         
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "domain" );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "domain" );
         assertFalse( evaluator.evaluate( refinement, objectClasses ) );
     }
 
@@ -228,22 +225,22 @@ public class RefinementEvaluatorTest
     public void testComplexNotRefinement() throws Exception
     {
         ExprNode refinement = null;
-        EntryAttribute objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
+        EntryAttribute objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
         String refStr = "(!(objectClass=person))";
 
-        refinement = FilterParser.parse( refStr );
+        refinement = FilterParser.parse( schemaManager, refStr );
 
         assertFalse( evaluator.evaluate( refinement, objectClasses ) );
         
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "organizationalUnit" );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "organizationalUnit" );
         assertTrue( evaluator.evaluate( refinement, objectClasses ) );
         
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "domain" );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "domain" );
         assertTrue( evaluator.evaluate( refinement, objectClasses ) );
 
         try
         {
-            assertFalse( evaluator.evaluate( new NotNode(), new DefaultEntryAttribute( "objectClass", OBJECT_CLASS ) ) );
+            assertFalse( evaluator.evaluate( new NotNode(), new DefaultEntryAttribute( OBJECT_CLASS_AT ) ) );
             fail( "should never get here due to an IAE" );
         }
         catch ( IllegalArgumentException iae )

Modified: directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java (original)
+++ directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java Mon Jul 12 23:37:38 2010
@@ -37,7 +37,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.apache.directory.shared.ldap.schema.loader.ldif.JarLdifSchemaLoader;
 import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.apache.directory.shared.ldap.schema.registries.Registries;
 import org.apache.directory.shared.ldap.util.LdapExceptionUtils;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -54,12 +53,15 @@ import org.junit.runner.RunWith;
 @Concurrent()
 public class RefinementLeafEvaluatorTest
 {
+    /** the SchemaManager instance */
+    private static SchemaManager schemaManager;
+
     /** The ObjectClass AttributeType */
-    private static AttributeType OBJECT_CLASS;
+    private static AttributeType OBJECT_CLASS_AT;
+    
+    /** The CN AttributeType */
+    private static AttributeType CN_AT;
     
-    /** the registries */
-    private static Registries registries;
-
     /** the refinement leaf evaluator to test */
     private static RefinementLeafEvaluator evaluator;
 
@@ -73,7 +75,7 @@ public class RefinementLeafEvaluatorTest
     {
         JarLdifSchemaLoader loader = new JarLdifSchemaLoader();
 
-        SchemaManager schemaManager = new DefaultSchemaManager( loader );
+        schemaManager = new DefaultSchemaManager( loader );
 
         boolean loaded = schemaManager.loadAllEnabled();
 
@@ -81,10 +83,9 @@ public class RefinementLeafEvaluatorTest
         {
             fail( "Schema load failed : " + LdapExceptionUtils.printErrors( schemaManager.getErrors() ) );
         }
-
-        registries = schemaManager.getRegistries();
         
-        OBJECT_CLASS = schemaManager.getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
+        OBJECT_CLASS_AT = schemaManager.getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
+        CN_AT = schemaManager.getAttributeType( SchemaConstants.CN_AT );
 
         evaluator = new RefinementLeafEvaluator( schemaManager );
     }
@@ -132,13 +133,13 @@ public class RefinementLeafEvaluatorTest
             assertFalse( evaluator.evaluate( new EqualityNode( "", new StringValue( "" ) ), objectClasses ) );
             fail( "should never get here due to an NE" );
         }
-        catch ( LdapException ne )
+        catch ( IllegalArgumentException iae )
         {
         }
 
         try
         {
-            assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "" ) ), objectClasses ) );
+            assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "" ) ), objectClasses ) );
             fail( "should never get here due to an IAE" );
         }
         catch ( IllegalArgumentException iae )
@@ -147,8 +148,8 @@ public class RefinementLeafEvaluatorTest
 
         try
         {
-            objectClasses = new DefaultEntryAttribute( "cn", OBJECT_CLASS );
-            assertFalse( evaluator.evaluate( new EqualityNode( "cn", new StringValue( "" ) ), objectClasses ) );
+            objectClasses = new DefaultEntryAttribute( "cn", OBJECT_CLASS_AT.getName() );
+            assertFalse( evaluator.evaluate( new EqualityNode( CN_AT, new StringValue( "" ) ), objectClasses ) );
             fail( "should never get here due to an IAE" );
         }
         catch ( IllegalArgumentException iae )
@@ -162,41 +163,41 @@ public class RefinementLeafEvaluatorTest
     public void testMatchByName() throws Exception
     {
         // positive test
-        EntryAttribute objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "person" ) ), objectClasses ) );
+        EntryAttribute objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "person" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT );
         objectClasses.add( "person" );
         objectClasses.add( "blah" );
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "person" ) ), objectClasses ) );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "person" ) ), objectClasses ) );
 
         // negative tests
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "blah" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "blah" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "blah" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "person" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "blah" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "person" ) ), objectClasses ) );
     }
 
 
     @Test 
     public void testMatchByOID() throws Exception
     {
-        EntryAttribute objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
+        EntryAttribute objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
 
         // positive test
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.6" ) ), objectClasses ) );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.6" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT );
         objectClasses.add( "person" );
         objectClasses.add( "blah" );
-        assertTrue( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.6" ) ), objectClasses ) );
+        assertTrue( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.6" ) ), objectClasses ) );
 
         // negative tests
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "person" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.5" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "person" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.5" ) ), objectClasses ) );
 
-        objectClasses = new DefaultEntryAttribute( "objectClass", OBJECT_CLASS, "blah" );
-        assertFalse( evaluator.evaluate( new EqualityNode( "objectClass", new StringValue( "2.5.6.5" ) ), objectClasses ) );
+        objectClasses = new DefaultEntryAttribute( OBJECT_CLASS_AT, "blah" );
+        assertFalse( evaluator.evaluate( new EqualityNode( OBJECT_CLASS_AT, new StringValue( "2.5.6.5" ) ), objectClasses ) );
     }
 }

Modified: directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java (original)
+++ directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java Mon Jul 12 23:37:38 2010
@@ -256,7 +256,7 @@ public class SubtreeEvaluatorTest
     @Test
     public void testWithMinMaxAndSimpleRefinement() throws Exception
     {
-        ExprNode refinement = FilterParser.parse( "(objectClass=person)" );
+        ExprNode refinement = FilterParser.parse( schemaManager, "(objectClass=person)" );
         refinement.accept( visitor );
 
         SubtreeSpecificationModifier modifier = new SubtreeSpecificationModifier();
@@ -314,7 +314,7 @@ public class SubtreeEvaluatorTest
     @Test
     public void testWithFilter() throws Exception
     {
-        ExprNode filter = FilterParser.parse( "(&(cn=Ersin)(objectClass=person))" );
+        ExprNode filter = FilterParser.parse( schemaManager, "(&(cn=Ersin)(objectClass=person))" );
         filter.accept( visitor );
 
         SubtreeSpecificationModifier modifier = new SubtreeSpecificationModifier();

Modified: directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java (original)
+++ directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java Mon Jul 12 23:37:38 2010
@@ -396,7 +396,7 @@ public class LdifPartitionTest
         DN dn = new DN( "dc=test,ou=test,ou=system" );
         dn.normalize( schemaManager.getNormalizerMapping() );
         searchCtx.setDn( dn );
-        ExprNode filter = FilterParser.parse( "(ObjectClass=domain)" );
+        ExprNode filter = FilterParser.parse( schemaManager, "(ObjectClass=domain)" );
         NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( schemaManager );
         FilterNormalizingVisitor visitor = new FilterNormalizingVisitor( ncn, schemaManager );
         filter.accept( visitor );

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java Mon Jul 12 23:37:38 2010
@@ -53,6 +53,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.exception.LdapOperationException;
 import org.apache.directory.shared.ldap.exception.OperationAbandonedException;
 import org.apache.directory.shared.ldap.filter.EqualityNode;
+import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.filter.OrNode;
 import org.apache.directory.shared.ldap.filter.PresenceNode;
 import org.apache.directory.shared.ldap.filter.SearchScope;
@@ -89,7 +90,7 @@ public class SearchHandler extends LdapR
     private static final boolean IS_DEBUG = LOG.isDebugEnabled();
 
     /** cached to save redundant lookups into registries */ 
-    private AttributeType objectClassAttributeType;
+    private AttributeType OBJECT_CLASS_AT;
     
     protected ReplicationProvider replicationProvider;
     
@@ -103,14 +104,14 @@ public class SearchHandler extends LdapR
      */
     private EqualityNode<String> newIsReferralEqualityNode( LdapSession session ) throws Exception
     {
-        if ( objectClassAttributeType == null )
+        if ( OBJECT_CLASS_AT == null )
         {
-            objectClassAttributeType = session.getCoreSession().getDirectoryService().
-                getSchemaManager().lookupAttributeTypeRegistry( SchemaConstants.OBJECT_CLASS_AT );
+            OBJECT_CLASS_AT = session.getCoreSession().getDirectoryService().
+                getSchemaManager().getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
         }
         
-        EqualityNode<String> ocIsReferral = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT,
-            new StringValue( objectClassAttributeType, SchemaConstants.REFERRAL_OC ) );
+        EqualityNode<String> ocIsReferral = new EqualityNode<String>( OBJECT_CLASS_AT,
+            new StringValue( OBJECT_CLASS_AT, SchemaConstants.REFERRAL_OC ) );
         
         return ocIsReferral;
     }
@@ -938,12 +939,24 @@ public class SearchHandler extends LdapR
         {
             PresenceNode presenceNode = ( PresenceNode ) req.getFilter();
             
-            AttributeType at = session.getCoreSession().getDirectoryService()
-                .getSchemaManager().lookupAttributeTypeRegistry( presenceNode.getAttribute() );
-            
-            if ( at.getOid().equals( SchemaConstants.OBJECT_CLASS_AT_OID ) )
+            if ( presenceNode.isSchemaAware() )
             {
-                return;
+                AttributeType attributeType = presenceNode.getAttributeType();
+                
+                if ( attributeType.equals( OBJECT_CLASS_AT ) )
+                {
+                    return;
+                }
+            }
+            else
+            {
+                String attribute = presenceNode.getAttribute();
+                
+                if ( attribute.equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT ) ||
+                     attribute.equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT_OID ) )
+                {
+                    return;
+                }
             }
         }
 
@@ -1281,9 +1294,18 @@ public class SearchHandler extends LdapR
         
         if ( req.getFilter() instanceof PresenceNode )
         {
-            String attribute = ( ( PresenceNode ) req.getFilter() ).getAttribute();
-            isRootDSEFilter = attribute.equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT ) ||
-                                attribute.equals( SchemaConstants.OBJECT_CLASS_AT_OID );
+            ExprNode filter = req.getFilter();
+            
+            if ( filter.isSchemaAware() )
+            {
+                AttributeType attributeType = ( ( PresenceNode ) req.getFilter() ).getAttributeType();
+                isRootDSEFilter = attributeType.equals( OBJECT_CLASS_AT );
+            }
+            else
+            {
+                String attribute = ( ( PresenceNode ) req.getFilter() ).getAttribute();
+                isRootDSEFilter = attribute.equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT ) || attribute.equals( SchemaConstants.OBJECT_CLASS_AT_OID );
+            }
         }
         
         return isBaseIsRoot && isBaseScope && isRootDSEFilter;

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/cramMD5/CramMd5CallbackHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/cramMD5/CramMd5CallbackHandler.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/cramMD5/CramMd5CallbackHandler.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/cramMD5/CramMd5CallbackHandler.java Mon Jul 12 23:37:38 2010
@@ -44,6 +44,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.name.DN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.AttributeTypeOptions;
+import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,7 +57,9 @@ public class CramMd5CallbackHandler exte
     private static final Logger LOG = LoggerFactory.getLogger( CramMd5CallbackHandler.class );
 
     private String bindDn;
-    //private String userPassword;
+    
+    /** A SchemaManager instance */
+    private SchemaManager schemaManager;
 
 
     /**
@@ -71,6 +74,7 @@ public class CramMd5CallbackHandler exte
         super( adminSession.getDirectoryService(), bindRequest );
         this.ldapSession = ldapSession;
         this.adminSession = adminSession;
+        schemaManager = adminSession.getDirectoryService().getSchemaManager();
     }
 
 
@@ -78,7 +82,7 @@ public class CramMd5CallbackHandler exte
     {
         try
         {
-            ExprNode filter = FilterParser.parse( "(uid=" + username + ")" );
+            ExprNode filter = FilterParser.parse( schemaManager, "(uid=" + username + ")" );
             Set<AttributeTypeOptions> returningAttributes = new HashSet<AttributeTypeOptions>();
             
             AttributeType passwordAT = adminSession.getDirectoryService().getSchemaManager().lookupAttributeTypeRegistry( SchemaConstants.USER_PASSWORD_AT );

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/digestMD5/DigestMd5CallbackHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/digestMD5/DigestMd5CallbackHandler.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/digestMD5/DigestMd5CallbackHandler.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/bind/digestMD5/DigestMd5CallbackHandler.java Mon Jul 12 23:37:38 2010
@@ -44,6 +44,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.name.DN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.AttributeTypeOptions;
+import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,7 +57,10 @@ public class DigestMd5CallbackHandler ex
     private static final Logger LOG = LoggerFactory.getLogger( DigestMd5CallbackHandler.class );
 
     private String bindDn;
-    private String userPassword;
+    
+    /** A SchemaManager instance */
+    private SchemaManager schemaManager;
+
 
 
     /**
@@ -71,6 +75,7 @@ public class DigestMd5CallbackHandler ex
         super( adminSession.getDirectoryService(), bindRequest );
         this.ldapSession = ldapSession;
         this.adminSession = adminSession;
+        schemaManager = adminSession.getDirectoryService().getSchemaManager();
     }
 
 
@@ -79,7 +84,7 @@ public class DigestMd5CallbackHandler ex
     {
         try
         {
-            ExprNode filter = FilterParser.parse( "(uid=" + username + ")" );
+            ExprNode filter = FilterParser.parse( schemaManager, "(uid=" + username + ")" );
             Set<AttributeTypeOptions> returningAttributes = new HashSet<AttributeTypeOptions>();
             
             AttributeType passwordAT = adminSession.getDirectoryService().getSchemaManager().lookupAttributeTypeRegistry( SchemaConstants.USER_PASSWORD_AT );
@@ -122,7 +127,7 @@ public class DigestMd5CallbackHandler ex
     {
         if ( LOG.isDebugEnabled() )
         {
-            LOG.debug( "Converted username " + getUsername() + " to DN " + bindDn + " with password " + userPassword + "." );
+            LOG.debug( "Converted username " + getUsername() + " to DN " + bindDn );
         }
 
         ldapSession.putSaslProperty( Context.SECURITY_PRINCIPAL, bindDn );

Modified: directory/apacheds/trunk/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/catalog/GetCatalog.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/catalog/GetCatalog.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/catalog/GetCatalog.java (original)
+++ directory/apacheds/trunk/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/catalog/GetCatalog.java Mon Jul 12 23:37:38 2010
@@ -28,8 +28,8 @@ import org.apache.directory.server.const
 import org.apache.directory.server.core.CoreSession;
 import org.apache.directory.server.core.filtering.EntryFilteringCursor;
 import org.apache.directory.server.protocol.shared.store.DirectoryServiceOperation;
-import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.entry.Entry;
+import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.filter.FilterParser;
 import org.apache.directory.shared.ldap.filter.SearchScope;
 import org.apache.directory.shared.ldap.message.AliasDerefMode;
@@ -56,7 +56,7 @@ public class GetCatalog implements Direc
         EntryFilteringCursor list = session.search( 
             DN.EMPTY_DN, 
             SearchScope.SUBTREE, 
-            FilterParser.parse( filter ), 
+            FilterParser.parse( session.getDirectoryService().getSchemaManager(), filter ), 
             AliasDerefMode.DEREF_ALWAYS,
             null );
 

Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java Mon Jul 12 23:37:38 2010
@@ -86,6 +86,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.ldif.LdifReader;
 import org.apache.directory.shared.ldap.message.AliasDerefMode;
 import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -110,6 +111,9 @@ public class ConfigPartitionReader
     /** the schema manager set in the config partition */
     private SchemaManager schemaManager;
 
+    /** A reference to the ObjectClass AT */
+    private static AttributeType OBJECT_CLASS_AT;
+
     /** the parent directory of the config partition's working directory */
     private File workDir;
 
@@ -150,6 +154,9 @@ public class ConfigPartitionReader
         se = configPartition.getSearchEngine();
         this.schemaManager = configPartition.getSchemaManager();
         workDir = configPartition.getPartitionDir().getParentFile();
+        
+        // setup ObjectClass attribute type value
+        OBJECT_CLASS_AT = schemaManager.getAttributeType( SchemaConstants.OBJECT_CLASS_AT );
     }
 
 
@@ -161,7 +168,7 @@ public class ConfigPartitionReader
      */
     public LdapServer getLdapServer() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_LDAP_SERVER_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -219,7 +226,7 @@ public class ConfigPartitionReader
         }
         
         // read the SASL mechanism handlers' configuration
-        filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_LDAP_SERVER_SASL_MECH_HANDLER_OC ) );
         cursor = se.cursor( ldapServerEntry.getDn(), AliasDerefMode.NEVER_DEREF_ALIASES, filter, controls );
         
@@ -237,7 +244,7 @@ public class ConfigPartitionReader
         cursor.close();
         
         // read the extnded operation handlers' config
-        filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_LDAP_SERVER_EXT_OP_HANDLER_OC ) );
         cursor = se.cursor( ldapServerEntry.getDn(), AliasDerefMode.NEVER_DEREF_ALIASES, filter, controls );
         
@@ -264,7 +271,7 @@ public class ConfigPartitionReader
 
     public KdcServer getKdcServer() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_KERBEROS_SERVER_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -411,7 +418,7 @@ public class ConfigPartitionReader
 
     public DnsServer getDnsServer() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_DNS_SERVER_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -451,7 +458,7 @@ public class ConfigPartitionReader
     //TODO making this method invisible cause there is no DhcpServer exists as of now
     private DhcpService getDhcpServer() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_DHCP_SERVER_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -486,7 +493,7 @@ public class ConfigPartitionReader
 
     public NtpServer getNtpServer() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_NTP_SERVER_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -525,7 +532,7 @@ public class ConfigPartitionReader
     
     public ChangePasswordServer getChangePwdServer() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_CHANGEPWD_SERVER_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -629,7 +636,7 @@ public class ConfigPartitionReader
     
     public HttpServer getHttpServer() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_HTTP_SERVER_OC ) );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -694,8 +701,8 @@ public class ConfigPartitionReader
      */
     public DirectoryService getDirectoryService() throws Exception
     {
-
-        PresenceNode filter = new PresenceNode( ConfigSchemaConstants.ADS_DIRECTORYSERVICE_ID );
+        AttributeType adsDirectoryServiceidAt = schemaManager.getAttributeType( ConfigSchemaConstants.ADS_DIRECTORYSERVICE_ID );
+        PresenceNode filter = new PresenceNode( adsDirectoryServiceidAt );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
 
@@ -827,7 +834,7 @@ public class ConfigPartitionReader
 
     private List<SyncreplConfiguration> getReplProviderConfigs() throws Exception
     {
-        EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.OBJECT_CLASS_AT, new StringValue(
+        EqualityNode<String> filter = new EqualityNode<String>( OBJECT_CLASS_AT, new StringValue(
             ConfigSchemaConstants.ADS_REPL_PROVIDER_OC ) );
 
         SearchControls controls = new SearchControls();
@@ -964,7 +971,8 @@ public class ConfigPartitionReader
      */
     private List<Interceptor> getInterceptors( DN dirServiceDN ) throws Exception
     {
-        PresenceNode filter = new PresenceNode( ConfigSchemaConstants.ADS_INTERCEPTOR_ID );
+        AttributeType adsInterceptorIdAt = schemaManager.getAttributeType( ConfigSchemaConstants.ADS_INTERCEPTOR_ID );
+        PresenceNode filter = new PresenceNode( adsInterceptorIdAt );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
         IndexCursor<Long, Entry, Long> cursor = se.cursor( dirServiceDN, AliasDerefMode.NEVER_DEREF_ALIASES,
@@ -1015,7 +1023,8 @@ public class ConfigPartitionReader
 
     private Map<String, Partition> getPartitions( DN dirServiceDN ) throws Exception
     {
-        PresenceNode filter = new PresenceNode( ConfigSchemaConstants.ADS_PARTITION_ID );
+        AttributeType adsPartitionIdeAt = schemaManager.getAttributeType( ConfigSchemaConstants.ADS_PARTITION_ID );
+        PresenceNode filter = new PresenceNode( adsPartitionIdeAt );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
         IndexCursor<Long, Entry, Long> cursor = se.cursor( dirServiceDN, AliasDerefMode.NEVER_DEREF_ALIASES,
@@ -1033,7 +1042,7 @@ public class ConfigPartitionReader
             {
                 continue;
             }
-            EntryAttribute ocAttr = partitionEntry.get( SchemaConstants.OBJECT_CLASS_AT );
+            EntryAttribute ocAttr = partitionEntry.get( OBJECT_CLASS_AT );
 
             if ( ocAttr.contains( ConfigSchemaConstants.ADS_JDBMPARTITION ) )
             {
@@ -1094,7 +1103,8 @@ public class ConfigPartitionReader
 
     private Set<Index<?, Entry, Long>> getIndexes( DN partitionDN ) throws Exception
     {
-        PresenceNode filter = new PresenceNode( ConfigSchemaConstants.ADS_INDEX_ATTRIBUTE_ID );
+        AttributeType adsIndexAttributeIdAt = schemaManager.getAttributeType( ConfigSchemaConstants.ADS_INDEX_ATTRIBUTE_ID );
+        PresenceNode filter = new PresenceNode( adsIndexAttributeIdAt );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
         IndexCursor<Long, Entry, Long> cursor = se.cursor( partitionDN, AliasDerefMode.NEVER_DEREF_ALIASES, filter,
@@ -1113,7 +1123,7 @@ public class ConfigPartitionReader
                 continue;
             }
 
-            EntryAttribute ocAttr = indexEntry.get( SchemaConstants.OBJECT_CLASS_AT );
+            EntryAttribute ocAttr = indexEntry.get( OBJECT_CLASS_AT );
 
             if ( ocAttr.contains( ConfigSchemaConstants.ADS_JDBMINDEX ) )
             {
@@ -1153,7 +1163,8 @@ public class ConfigPartitionReader
 
     private Transport[] getTransports( DN adsServerDN ) throws Exception
     {
-        PresenceNode filter = new PresenceNode( ConfigSchemaConstants.ADS_TRANSPORT_ID );
+        AttributeType adsTransportIdAt = schemaManager.getAttributeType( ConfigSchemaConstants.ADS_TRANSPORT_ID );
+        PresenceNode filter = new PresenceNode( adsTransportIdAt );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
         IndexCursor<Long, Entry, Long> cursor = se.cursor( adsServerDN, AliasDerefMode.NEVER_DEREF_ALIASES,
@@ -1186,7 +1197,7 @@ public class ConfigPartitionReader
     {
         Transport transport = null;
 
-        EntryAttribute ocAttr = transportEntry.get( SchemaConstants.OBJECT_CLASS_AT );
+        EntryAttribute ocAttr = transportEntry.get( OBJECT_CLASS_AT );
 
         if ( ocAttr.contains( ConfigSchemaConstants.ADS_TCP_TRANSPORT ) )
         {
@@ -1336,7 +1347,8 @@ public class ConfigPartitionReader
 
     private Set<WebApp> getWebApps( DN webAppsDN ) throws Exception
     {
-        PresenceNode filter = new PresenceNode( ConfigSchemaConstants.ADS_HTTP_WARFILE );
+        AttributeType adsHttpWarFileAt = schemaManager.getAttributeType( ConfigSchemaConstants.ADS_HTTP_WARFILE );
+        PresenceNode filter = new PresenceNode( adsHttpWarFileAt );
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.ONELEVEL_SCOPE );
         IndexCursor<Long, Entry, Long> cursor = se.cursor( webAppsDN, AliasDerefMode.NEVER_DEREF_ALIASES, filter,

Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java Mon Jul 12 23:37:38 2010
@@ -20,12 +20,12 @@
 package org.apache.directory.server.xdbm.search.impl;
 
 
+import org.apache.directory.server.i18n.I18n;
+import org.apache.directory.server.xdbm.AbstractIndexCursor;
 import org.apache.directory.server.xdbm.Index;
+import org.apache.directory.server.xdbm.IndexCursor;
 import org.apache.directory.server.xdbm.IndexEntry;
 import org.apache.directory.server.xdbm.Store;
-import org.apache.directory.server.xdbm.AbstractIndexCursor;
-import org.apache.directory.server.xdbm.IndexCursor;
-import org.apache.directory.server.i18n.I18n;
 import org.apache.directory.shared.ldap.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.entry.Entry;
 import org.apache.directory.shared.ldap.entry.Value;

Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateEvaluator.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateEvaluator.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateEvaluator.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateEvaluator.java Mon Jul 12 23:37:38 2010
@@ -27,8 +27,8 @@ import org.apache.directory.server.xdbm.
 import org.apache.directory.server.xdbm.IndexEntry;
 import org.apache.directory.server.xdbm.Store;
 import org.apache.directory.server.xdbm.search.Evaluator;
-import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.entry.Entry;
+import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.entry.Value;
 import org.apache.directory.shared.ldap.filter.ApproximateNode;
 import org.apache.directory.shared.ldap.schema.AttributeType;
@@ -73,7 +73,7 @@ public class ApproximateEvaluator<T, ID 
         else
         {
             idx = null;
-            type = schemaManager.lookupAttributeTypeRegistry( node.getAttribute() );
+            type = node.getAttributeType();
 
             MatchingRule mr = type.getEquality();
 

Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java?rev=963530&r1=963529&r2=963530&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultOptimizer.java Mon Jul 12 23:37:38 2010
@@ -22,6 +22,10 @@ package org.apache.directory.server.xdbm
 
 import java.util.List;
 
+import org.apache.directory.server.i18n.I18n;
+import org.apache.directory.server.xdbm.Index;
+import org.apache.directory.server.xdbm.Store;
+import org.apache.directory.server.xdbm.search.Optimizer;
 import org.apache.directory.shared.ldap.filter.AndNode;
 import org.apache.directory.shared.ldap.filter.ApproximateNode;
 import org.apache.directory.shared.ldap.filter.AssertionNode;
@@ -38,10 +42,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.filter.ScopeNode;
 import org.apache.directory.shared.ldap.filter.SimpleNode;
 import org.apache.directory.shared.ldap.filter.SubstringNode;
-import org.apache.directory.server.i18n.I18n;
-import org.apache.directory.server.xdbm.Index;
-import org.apache.directory.server.xdbm.search.Optimizer;
-import org.apache.directory.server.xdbm.Store;
 
 
 /**