directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject svn commit: r502850 - in /directory/apacheds/trunk: core/src/main/java/org/apache/directory/server/core/schema/ schema-bootstrap/src/main/schema/
Date Sat, 03 Feb 2007 03:05:31 GMT
Author: akarasulu
Date: Fri Feb  2 19:05:30 2007
New Revision: 502850

URL: http://svn.apache.org/viewvc?view=rev&rev=502850
Log:
cleaning up handler lookup code to make it more efficient rather than using a bunch of if
statements

Added:
    directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitContentRuleHandler.java
    directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitStructureRuleHandler.java
    directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleUseHandler.java
    directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNameFormHandler.java
Modified:
    directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaManager.java
    directory/apacheds/trunk/schema-bootstrap/src/main/schema/apachemeta.schema

Added: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitContentRuleHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitContentRuleHandler.java?view=auto&rev=502850
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitContentRuleHandler.java
(added)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitContentRuleHandler.java
Fri Feb  2 19:05:30 2007
@@ -0,0 +1,107 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.server.core.schema;
+
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+import org.apache.directory.server.schema.registries.Registries;
+import org.apache.directory.shared.ldap.name.LdapDN;
+
+
+/**
+ * A schema entity change handler for DitContentRules.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class MetaDitContentRuleHandler extends AbstractSchemaChangeHandler
+{
+
+    protected MetaDitContentRuleHandler( Registries targetRegistries, PartitionSchemaLoader
loader ) throws NamingException
+    {
+        super( targetRegistries, loader );
+        // TODO Auto-generated constructor stub
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.AbstractSchemaChangeHandler#modify(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, javax.naming.directory.Attributes)
+     */
+    @Override
+    protected void modify( LdapDN name, Attributes entry, Attributes targetEntry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#add(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void add( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#delete(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void delete( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, java.lang.String, boolean, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, String newRn, boolean deleteOldRn,
Attributes entry )
+        throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, Attributes entry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#rename(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, java.lang.String)
+     */
+    public void rename( LdapDN name, Attributes entry, String newRdn ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+}

Added: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitStructureRuleHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitStructureRuleHandler.java?view=auto&rev=502850
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitStructureRuleHandler.java
(added)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaDitStructureRuleHandler.java
Fri Feb  2 19:05:30 2007
@@ -0,0 +1,107 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.server.core.schema;
+
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+import org.apache.directory.server.schema.registries.Registries;
+import org.apache.directory.shared.ldap.name.LdapDN;
+
+
+/**
+ * A schema entity change handler for DitStructureRules.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class MetaDitStructureRuleHandler extends AbstractSchemaChangeHandler
+{
+
+    protected MetaDitStructureRuleHandler( Registries targetRegistries, PartitionSchemaLoader
loader ) throws NamingException
+    {
+        super( targetRegistries, loader );
+        // TODO Auto-generated constructor stub
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.AbstractSchemaChangeHandler#modify(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, javax.naming.directory.Attributes)
+     */
+    @Override
+    protected void modify( LdapDN name, Attributes entry, Attributes targetEntry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#add(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void add( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#delete(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void delete( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, java.lang.String, boolean, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, String newRn, boolean deleteOldRn,
Attributes entry )
+        throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, Attributes entry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#rename(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, java.lang.String)
+     */
+    public void rename( LdapDN name, Attributes entry, String newRdn ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+}

Added: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleUseHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleUseHandler.java?view=auto&rev=502850
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleUseHandler.java
(added)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleUseHandler.java
Fri Feb  2 19:05:30 2007
@@ -0,0 +1,107 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.server.core.schema;
+
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+import org.apache.directory.server.schema.registries.Registries;
+import org.apache.directory.shared.ldap.name.LdapDN;
+
+
+/**
+ * A schema entity change handler for DitMatchingRuleUses.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class MetaMatchingRuleUseHandler extends AbstractSchemaChangeHandler
+{
+
+    protected MetaMatchingRuleUseHandler( Registries targetRegistries, PartitionSchemaLoader
loader ) throws NamingException
+    {
+        super( targetRegistries, loader );
+        // TODO Auto-generated constructor stub
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.AbstractSchemaChangeHandler#modify(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, javax.naming.directory.Attributes)
+     */
+    @Override
+    protected void modify( LdapDN name, Attributes entry, Attributes targetEntry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#add(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void add( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#delete(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void delete( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, java.lang.String, boolean, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, String newRn, boolean deleteOldRn,
Attributes entry )
+        throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, Attributes entry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#rename(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, java.lang.String)
+     */
+    public void rename( LdapDN name, Attributes entry, String newRdn ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+}

Added: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNameFormHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNameFormHandler.java?view=auto&rev=502850
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNameFormHandler.java
(added)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNameFormHandler.java
Fri Feb  2 19:05:30 2007
@@ -0,0 +1,107 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.server.core.schema;
+
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+import org.apache.directory.server.schema.registries.Registries;
+import org.apache.directory.shared.ldap.name.LdapDN;
+
+
+/**
+ * A schema entity change handler for NameForms.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class MetaNameFormHandler extends AbstractSchemaChangeHandler
+{
+
+    protected MetaNameFormHandler( Registries targetRegistries, PartitionSchemaLoader loader
) throws NamingException
+    {
+        super( targetRegistries, loader );
+        // TODO Auto-generated constructor stub
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.AbstractSchemaChangeHandler#modify(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, javax.naming.directory.Attributes)
+     */
+    @Override
+    protected void modify( LdapDN name, Attributes entry, Attributes targetEntry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#add(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void add( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#delete(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes)
+     */
+    public void delete( LdapDN name, Attributes entry ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, java.lang.String, boolean, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, String newRn, boolean deleteOldRn,
Attributes entry )
+        throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#move(org.apache.directory.shared.ldap.name.LdapDN,
org.apache.directory.shared.ldap.name.LdapDN, javax.naming.directory.Attributes)
+     */
+    public void move( LdapDN oriChildName, LdapDN newParentName, Attributes entry ) throws
NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.server.core.schema.SchemaChangeHandler#rename(org.apache.directory.shared.ldap.name.LdapDN,
javax.naming.directory.Attributes, java.lang.String)
+     */
+    public void rename( LdapDN name, Attributes entry, String newRdn ) throws NamingException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+}

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaManager.java?view=diff&rev=502850&r1=502849&r2=502850
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaManager.java
(original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/SchemaManager.java
Fri Feb  2 19:05:30 2007
@@ -20,25 +20,32 @@
 package org.apache.directory.server.core.schema;
 
 
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import javax.naming.NamingException;
 import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
+import javax.naming.directory.DirContext;
 
 import org.apache.directory.server.constants.CoreSchemaConstants;
 import org.apache.directory.server.constants.MetaSchemaConstants;
 import org.apache.directory.server.constants.SystemSchemaConstants;
 import org.apache.directory.server.core.ServerUtils;
+import org.apache.directory.server.schema.registries.AttributeTypeRegistry;
+import org.apache.directory.server.schema.registries.ObjectClassRegistry;
 import org.apache.directory.server.schema.registries.Registries;
 import org.apache.directory.shared.ldap.NotImplementedException;
 import org.apache.directory.shared.ldap.exception.LdapInvalidNameException;
 import org.apache.directory.shared.ldap.exception.LdapNamingException;
+import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
 import org.apache.directory.shared.ldap.message.ModificationItemImpl;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.ObjectClass;
 import org.apache.directory.shared.ldap.util.AttributeUtils;
 
 
@@ -58,19 +65,42 @@
 public class SchemaManager
 {
     private static final Set<String> VALID_OU_VALUES = new HashSet<String>();
+    private static final String[] opAttrs = new String[] {
+        "comparators",
+        "normalizers",
+        "syntaxCheckers",
+        "ldapSyntaxes",
+        "matchingRules",
+        "attributeTypes",
+        "objectClasses",
+        "matchingRuleUse",
+        "dITStructureRules",
+        "dITContentRules",
+        "nameForms"
+    };
+    private static final String[] metaObjectClasses = new String[] {
+        "metaComparator",
+        "metaNormalizer",
+        "metaSyntaxChecker",
+        "metaSyntax",
+        "metaMatchingRule",
+        "metaAttributeType",
+        "metaObjectClass",
+        "metaMatchingRuleUse",
+        "metaDITStructureRule",
+        "metaDITContentRule",
+        "metaNameForm"
+    };
 
     private final PartitionSchemaLoader loader;
     private final MetaSchemaHandler metaSchemaHandler;
     private final Registries globalRegistries;
     private final AttributeType objectClassAT;
-    private final MetaComparatorHandler metaComparatorHandler;
-    private final MetaNormalizerHandler metaNormalizerHandler;
-    private final MetaSyntaxCheckerHandler metaSyntaxCheckerHandler;
-    private final MetaSyntaxHandler metaSyntaxHandler;
-    private final MetaMatchingRuleHandler metaMatchingRuleHandler;
-    private final MetaAttributeTypeHandler metaAttributeTypeHandler;
-    private final MetaObjectClassHandler metaObjectClassHandler;
     
+    private final SchemaChangeHandler[] schemaObjectHandlers = new SchemaChangeHandler[11];
+    
+    private Map<String, SchemaChangeHandler> opAttr2handlerMap = new HashMap<String,
SchemaChangeHandler>();
+    private Map<String, SchemaChangeHandler> objectClass2handlerMap = new HashMap<String,
SchemaChangeHandler>();
     
     static 
     {
@@ -94,14 +124,40 @@
         this.globalRegistries = globalRegistries;
         this.objectClassAT = this.globalRegistries.getAttributeTypeRegistry()
             .lookup( SystemSchemaConstants.OBJECT_CLASS_AT );
+        
         this.metaSchemaHandler = new MetaSchemaHandler( this.globalRegistries, this.loader
);
-        this.metaComparatorHandler = new MetaComparatorHandler( globalRegistries, loader
);
-        this.metaNormalizerHandler = new MetaNormalizerHandler( globalRegistries, loader
);
-        this.metaSyntaxCheckerHandler = new MetaSyntaxCheckerHandler( globalRegistries, loader
);
-        this.metaSyntaxHandler = new MetaSyntaxHandler( globalRegistries, loader, dao );
-        this.metaMatchingRuleHandler = new MetaMatchingRuleHandler( globalRegistries, loader,
dao );
-        this.metaAttributeTypeHandler = new MetaAttributeTypeHandler( globalRegistries, loader,
dao );
-        this.metaObjectClassHandler = new MetaObjectClassHandler( globalRegistries, loader,
dao );
+        
+        this.schemaObjectHandlers[0] =  new MetaComparatorHandler( globalRegistries, loader
); 
+        this.schemaObjectHandlers[1] =  new MetaNormalizerHandler( globalRegistries, loader
);
+        this.schemaObjectHandlers[2] =  new MetaSyntaxCheckerHandler( globalRegistries, loader
);
+        this.schemaObjectHandlers[3] =  new MetaSyntaxHandler( globalRegistries, loader,
dao );
+        this.schemaObjectHandlers[4] =  new MetaMatchingRuleHandler( globalRegistries, loader,
dao );
+        this.schemaObjectHandlers[5] =  new MetaAttributeTypeHandler( globalRegistries, loader,
dao );
+        this.schemaObjectHandlers[6] =  new MetaObjectClassHandler( globalRegistries, loader,
dao );
+        this.schemaObjectHandlers[7] =  new MetaMatchingRuleUseHandler( globalRegistries,
loader );
+        this.schemaObjectHandlers[8] =  new MetaDitStructureRuleHandler( globalRegistries,
loader ); 
+        this.schemaObjectHandlers[9] =  new MetaDitContentRuleHandler( globalRegistries,
loader ); 
+        this.schemaObjectHandlers[10] = new MetaNameFormHandler( globalRegistries, loader
); 
+        
+        initHandlerMaps();
+    }
+
+    
+    private void initHandlerMaps() throws NamingException
+    {
+        AttributeTypeRegistry atReg = globalRegistries.getAttributeTypeRegistry();
+        for ( int ii = 0; ii < opAttrs.length; ii++ )
+        {
+            AttributeType at = atReg.lookup( opAttrs[ii] );
+            opAttr2handlerMap.put( at.getOid(), schemaObjectHandlers[ii] );
+        }
+
+        ObjectClassRegistry ocReg = globalRegistries.getObjectClassRegistry();
+        for ( int ii = 0; ii < metaObjectClasses.length; ii++ )
+        {
+            ObjectClass oc = ocReg.lookup( metaObjectClasses[ii] );
+            objectClass2handlerMap.put( oc.getOid(), schemaObjectHandlers[ii] );
+        }
     }
     
     
@@ -121,54 +177,23 @@
     {
         Attribute oc = ServerUtils.getAttribute( objectClassAT, entry );
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
+        for ( int ii = 0; ii < oc.size(); ii++ )
         {
-            metaSchemaHandler.add( name, entry );
-            return;
+            String oid = globalRegistries.getOidRegistry().getOid( ( String ) oc.get( ii
) );
+            if ( objectClass2handlerMap.containsKey( oid ) )
+            {
+                SchemaChangeHandler handler = objectClass2handlerMap.get( oid );
+                handler.add( name, entry );
+                return;
+            }
         }
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_COMPARATOR_OC, objectClassAT
) )
-        {
-            metaComparatorHandler.add( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_NORMALIZER_OC, objectClassAT
) )
-        {
-            metaNormalizerHandler.add( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_CHECKER_OC,
objectClassAT ) )
-        {
-            metaSyntaxCheckerHandler.add( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_OC, objectClassAT
) )
-        {
-            metaSyntaxHandler.add( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_MATCHING_RULE_OC,
objectClassAT ) )
+        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
         {
-            metaMatchingRuleHandler.add( name, entry );
+            metaSchemaHandler.add( name, entry );
             return;
         }
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC,
objectClassAT ) )
-        {
-            metaAttributeTypeHandler.add( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_OBJECT_CLASS_OC,
objectClassAT ) )
-        {
-            metaObjectClassHandler.add( name, entry );
-            return;
-        }
-
         if ( AttributeUtils.containsValue( oc, CoreSchemaConstants.ORGANIZATIONAL_UNIT_OC,
objectClassAT ) )
         {
             if ( name.size() != 3 )
@@ -189,7 +214,7 @@
             return;
         }
 
-        throw new LdapNamingException( ResultCodeEnum.UNWILLING_TO_PERFORM );
+        throw new LdapOperationNotSupportedException( ResultCodeEnum.UNWILLING_TO_PERFORM
);
     }
     
 
@@ -197,54 +222,23 @@
     {
         Attribute oc = ServerUtils.getAttribute( objectClassAT, entry );
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
+        for ( int ii = 0; ii < oc.size(); ii++ )
         {
-            metaSchemaHandler.delete( name, entry );
-            return;
-        }
-        
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_COMPARATOR_OC, objectClassAT
) )
-        {
-            metaComparatorHandler.delete( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_NORMALIZER_OC, objectClassAT
) )
-        {
-            metaNormalizerHandler.delete( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_CHECKER_OC,
objectClassAT ) )
-        {
-            metaSyntaxCheckerHandler.delete( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_OC, objectClassAT
) )
-        {
-            metaSyntaxHandler.delete( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_MATCHING_RULE_OC,
objectClassAT ) )
-        {
-            metaMatchingRuleHandler.delete( name, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC,
objectClassAT ) )
-        {
-            metaAttributeTypeHandler.delete( name, entry );
-            return;
+            String oid = globalRegistries.getOidRegistry().getOid( ( String ) oc.get( ii
) );
+            if ( objectClass2handlerMap.containsKey( oid ) )
+            {
+                SchemaChangeHandler handler = objectClass2handlerMap.get( oid );
+                handler.delete( name, entry );
+                return;
+            }
         }
 
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_OBJECT_CLASS_OC,
objectClassAT ) )
+        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
         {
-            metaObjectClassHandler.delete( name, entry );
+            metaSchemaHandler.delete( name, entry );
             return;
         }
-
+        
         if ( AttributeUtils.containsValue( oc, CoreSchemaConstants.ORGANIZATIONAL_UNIT_OC,
objectClassAT ) )
         {
             if ( name.size() != 3 )
@@ -265,7 +259,7 @@
             return;
         }
 
-        throw new LdapNamingException( ResultCodeEnum.UNWILLING_TO_PERFORM );
+        throw new LdapOperationNotSupportedException( ResultCodeEnum.UNWILLING_TO_PERFORM
);
     }
     
 
@@ -274,55 +268,24 @@
     {
         Attribute oc = ServerUtils.getAttribute( objectClassAT, entry );
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
-        {
-            metaSchemaHandler.modify( name, modOp, mods, entry, targetEntry );
-            return;
-        }
-        
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_COMPARATOR_OC, objectClassAT
) )
-        {
-            metaComparatorHandler.modify( name, modOp, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_NORMALIZER_OC, objectClassAT
) )
-        {
-            metaNormalizerHandler.modify( name, modOp, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_CHECKER_OC,
objectClassAT ) )
-        {
-            metaSyntaxCheckerHandler.modify( name, modOp, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_OC, objectClassAT
) )
-        {
-            metaSyntaxHandler.modify( name, modOp, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_MATCHING_RULE_OC,
objectClassAT ) )
-        {
-            metaMatchingRuleHandler.modify( name, modOp, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC,
objectClassAT ) )
+        for ( int ii = 0; ii < oc.size(); ii++ )
         {
-            metaAttributeTypeHandler.modify( name, modOp, mods, entry, targetEntry );
-            return;
+            String oid = globalRegistries.getOidRegistry().getOid( ( String ) oc.get( ii
) );
+            if ( objectClass2handlerMap.containsKey( oid ) )
+            {
+                SchemaChangeHandler handler = objectClass2handlerMap.get( oid );
+                handler.modify( name, modOp, mods, entry, targetEntry );
+                return;
+            }
         }
 
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_OBJECT_CLASS_OC,
objectClassAT ) )
+        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
         {
-            metaObjectClassHandler.modify( name, modOp, mods, entry, targetEntry );
+            metaSchemaHandler.modify( name, modOp, mods, entry, targetEntry );
             return;
         }
-
-        throw new LdapNamingException( ResultCodeEnum.UNWILLING_TO_PERFORM );
+        
+        throw new LdapOperationNotSupportedException( ResultCodeEnum.UNWILLING_TO_PERFORM
);
     }
 
 
@@ -331,55 +294,24 @@
     {
         Attribute oc = ServerUtils.getAttribute( objectClassAT, entry );
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
-        {
-            metaSchemaHandler.modify( name, mods, entry, targetEntry );
-            return;
-        }
-        
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_COMPARATOR_OC, objectClassAT
) )
-        {
-            metaComparatorHandler.modify( name, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_NORMALIZER_OC, objectClassAT
) )
-        {
-            metaNormalizerHandler.modify( name, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_CHECKER_OC,
objectClassAT ) )
-        {
-            metaSyntaxCheckerHandler.modify( name, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_OC, objectClassAT
) )
-        {
-            metaSyntaxHandler.modify( name, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_MATCHING_RULE_OC,
objectClassAT ) )
-        {
-            metaMatchingRuleHandler.modify( name, mods, entry, targetEntry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC,
objectClassAT ) )
+        for ( int ii = 0; ii < oc.size(); ii++ )
         {
-            metaAttributeTypeHandler.modify( name, mods, entry, targetEntry );
-            return;
+            String oid = globalRegistries.getOidRegistry().getOid( ( String ) oc.get( ii
) );
+            if ( objectClass2handlerMap.containsKey( oid ) )
+            {
+                SchemaChangeHandler handler = objectClass2handlerMap.get( oid );
+                handler.modify( name, mods, entry, targetEntry );
+                return;
+            }
         }
 
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_OBJECT_CLASS_OC,
objectClassAT ) )
+        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
         {
-            metaObjectClassHandler.modify( name, mods, entry, targetEntry );
+            metaSchemaHandler.modify( name, mods, entry, targetEntry );
             return;
         }
-
-        throw new LdapNamingException( ResultCodeEnum.UNWILLING_TO_PERFORM );
+        
+        throw new LdapOperationNotSupportedException( ResultCodeEnum.UNWILLING_TO_PERFORM
);
     }
 
 
@@ -387,55 +319,24 @@
     {
         Attribute oc = ServerUtils.getAttribute( objectClassAT, entry );
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
-        {
-            metaSchemaHandler.rename( name, entry, newRdn );
-            return;
-        }
-        
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_COMPARATOR_OC, objectClassAT
) )
-        {
-            metaComparatorHandler.rename( name, entry, newRdn );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_NORMALIZER_OC, objectClassAT
) )
-        {
-            metaNormalizerHandler.rename( name, entry, newRdn );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_CHECKER_OC,
objectClassAT ) )
+        for ( int ii = 0; ii < oc.size(); ii++ )
         {
-            metaSyntaxCheckerHandler.rename( name, entry, newRdn );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_OC, objectClassAT
) )
-        {
-            metaSyntaxHandler.rename( name, entry, newRdn );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_MATCHING_RULE_OC,
objectClassAT ) )
-        {
-            metaMatchingRuleHandler.rename( name, entry, newRdn );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC,
objectClassAT ) )
-        {
-            metaAttributeTypeHandler.rename( name, entry, newRdn );
-            return;
+            String oid = globalRegistries.getOidRegistry().getOid( ( String ) oc.get( ii
) );
+            if ( objectClass2handlerMap.containsKey( oid ) )
+            {
+                SchemaChangeHandler handler = objectClass2handlerMap.get( oid );
+                handler.rename( name, entry, newRdn );
+                return;
+            }
         }
 
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_OBJECT_CLASS_OC,
objectClassAT ) )
+        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
         {
-            metaObjectClassHandler.rename( name, entry, newRdn );
+            metaSchemaHandler.rename( name, entry, newRdn );
             return;
         }
-
-        throw new LdapNamingException( ResultCodeEnum.UNWILLING_TO_PERFORM );
+        
+        throw new LdapOperationNotSupportedException( ResultCodeEnum.UNWILLING_TO_PERFORM
);
     }
 
 
@@ -443,55 +344,24 @@
     {
         Attribute oc = ServerUtils.getAttribute( objectClassAT, entry );
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
+        for ( int ii = 0; ii < oc.size(); ii++ )
         {
-            metaSchemaHandler.move( oriChildName, newParentName, entry );
-            return;
-        }
-        
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_COMPARATOR_OC, objectClassAT
) )
-        {
-            metaComparatorHandler.move( oriChildName, newParentName, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_NORMALIZER_OC, objectClassAT
) )
-        {
-            metaNormalizerHandler.move( oriChildName, newParentName, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_CHECKER_OC,
objectClassAT ) )
-        {
-            metaSyntaxCheckerHandler.move( oriChildName, newParentName, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_OC, objectClassAT
) )
-        {
-            metaSyntaxHandler.move( oriChildName, newParentName, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_MATCHING_RULE_OC,
objectClassAT ) )
-        {
-            metaMatchingRuleHandler.move( oriChildName, newParentName, entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC,
objectClassAT ) )
-        {
-            metaAttributeTypeHandler.move( oriChildName, newParentName, entry );
-            return;
+            String oid = globalRegistries.getOidRegistry().getOid( ( String ) oc.get( ii
) );
+            if ( objectClass2handlerMap.containsKey( oid ) )
+            {
+                SchemaChangeHandler handler = objectClass2handlerMap.get( oid );
+                handler.move( oriChildName, newParentName, entry );
+                return;
+            }
         }
 
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_OBJECT_CLASS_OC,
objectClassAT ) )
+        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
         {
-            metaObjectClassHandler.move( oriChildName, newParentName, entry );
+            metaSchemaHandler.move( oriChildName, newParentName, entry );
             return;
         }
-
-        throw new LdapNamingException( ResultCodeEnum.UNWILLING_TO_PERFORM );
+        
+        throw new LdapOperationNotSupportedException( ResultCodeEnum.UNWILLING_TO_PERFORM
);
     }
 
 
@@ -500,58 +370,27 @@
     {
         Attribute oc = ServerUtils.getAttribute( objectClassAT, entry );
         
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
-        {
-            metaSchemaHandler.move( oriChildName, newParentName, newRn, deleteOldRn, entry
);
-            return;
-        }
-        
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_COMPARATOR_OC, objectClassAT
) )
-        {
-            metaComparatorHandler.move( oriChildName, newParentName, newRn, deleteOldRn,
entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_NORMALIZER_OC, objectClassAT
) )
+        for ( int ii = 0; ii < oc.size(); ii++ )
         {
-            metaNormalizerHandler.move( oriChildName, newParentName, newRn, deleteOldRn,
entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_CHECKER_OC,
objectClassAT ) )
-        {
-            metaSyntaxCheckerHandler.move( oriChildName, newParentName, newRn, deleteOldRn,
entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SYNTAX_OC, objectClassAT
) )
-        {
-            metaSyntaxHandler.move( oriChildName, newParentName, newRn, deleteOldRn, entry
);
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_MATCHING_RULE_OC,
objectClassAT ) )
-        {
-            metaMatchingRuleHandler.move( oriChildName, newParentName, newRn, deleteOldRn,
entry );
-            return;
-        }
-
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC,
objectClassAT ) )
-        {
-            metaAttributeTypeHandler.move( oriChildName, newParentName, newRn, deleteOldRn,
entry );
-            return;
+            String oid = globalRegistries.getOidRegistry().getOid( ( String ) oc.get( ii
) );
+            if ( objectClass2handlerMap.containsKey( oid ) )
+            {
+                SchemaChangeHandler handler = objectClass2handlerMap.get( oid );
+                handler.move( oriChildName, newParentName, newRn, deleteOldRn, entry );
+                return;
+            }
         }
 
-        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_OBJECT_CLASS_OC,
objectClassAT ) )
+        if ( AttributeUtils.containsValue( oc, MetaSchemaConstants.META_SCHEMA_OC, objectClassAT
) )
         {
-            metaObjectClassHandler.move( oriChildName, newParentName, newRn, deleteOldRn,
entry );
+            metaSchemaHandler.move( oriChildName, newParentName, newRn, deleteOldRn, entry
);
             return;
         }
-
-        throw new LdapNamingException( ResultCodeEnum.UNWILLING_TO_PERFORM );
+        
+        throw new LdapOperationNotSupportedException( ResultCodeEnum.UNWILLING_TO_PERFORM
);
     }
 
-
+    
     /**
      * Translates modify operations on schema subentries into one or more operations 
      * on meta schema entities within the ou=schema partition and updates the registries
@@ -565,6 +404,20 @@
     public void modifySchemaSubentry( LdapDN name, ModificationItemImpl[] mods, Attributes
subentry, 
         Attributes targetSubentry ) throws NamingException
     {
+        for ( int ii = 0; ii < mods.length; ii++ )
+        {
+            switch ( mods[ii].getModificationOp() )
+            {
+                case( DirContext.ADD_ATTRIBUTE ):
+                    break;
+                case( DirContext.REMOVE_ATTRIBUTE ):
+                    break;
+                case( DirContext.REPLACE_ATTRIBUTE ):
+                    break;
+                default:
+                    throw new IllegalStateException( "Undefined modify operation: " + mods[ii].getModificationOp()
);
+            }
+        }
     }
 
 
@@ -582,5 +435,16 @@
     public void modifySchemaSubentry( LdapDN name, int modOp, Attributes mods, Attributes
subentry, 
         Attributes targetSubentry ) throws NamingException
     {
+        switch ( modOp )
+        {
+            case( DirContext.ADD_ATTRIBUTE ):
+                break;
+            case( DirContext.REMOVE_ATTRIBUTE ):
+                break;
+            case( DirContext.REPLACE_ATTRIBUTE ):
+                break;
+            default:
+                throw new IllegalStateException( "Undefined modify operation: " + modOp );
+        }
     }
 }

Modified: directory/apacheds/trunk/schema-bootstrap/src/main/schema/apachemeta.schema
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/schema-bootstrap/src/main/schema/apachemeta.schema?view=diff&rev=502850&r1=502849&r2=502850
==============================================================================
--- directory/apacheds/trunk/schema-bootstrap/src/main/schema/apachemeta.schema (original)
+++ directory/apacheds/trunk/schema-bootstrap/src/main/schema/apachemeta.schema Fri Feb  2
19:05:30 2007
@@ -564,3 +564,31 @@
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
 )
 
+#
+# These operational attributes need a syntax!
+#
+
+# --- comparators AttributeType -----------------------------------
+attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.39 NAME 'comparators'
+    DESC 'A multivalued comparator description attribute'
+    EQUALITY caseIgnoreMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+    USAGE directoryOperation
+)
+
+# --- normalizers AttributeType -----------------------------------
+attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.40 NAME 'normalizers'
+    DESC 'A multivalued normalizer description attribute'
+    EQUALITY caseIgnoreMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+    USAGE directoryOperation
+)
+
+# --- syntaxCheckers AttributeType -----------------------------------
+attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.41 NAME 'syntaxCheckers'
+    DESC 'A multivalued syntaxCheckers description attribute'
+    EQUALITY caseIgnoreMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+    USAGE directoryOperation
+)
+



Mime
View raw message