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 2009/11/07 08:57:42 UTC

svn commit: r833647 [17/17] - in /directory: apacheds/branches/apacheds-schema/avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/ apacheds/branches/apacheds-schema/avl-partition/src/test/java/org/apache/directory/server/core/pa...

Added: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleRegistry.java?rev=833647&view=auto
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleRegistry.java (added)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleRegistry.java Sat Nov  7 07:57:34 2009
@@ -0,0 +1,180 @@
+/*
+ *  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.shared.ldap.schema.registries;
+
+import java.util.Iterator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.schema.MatchingRule;
+import org.apache.directory.shared.ldap.schema.SchemaObjectType;
+
+
+
+
+/**
+ * An immutable wrapper of the MatchingRule registry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 828111 $
+ */
+public class ImmutableMatchingRuleRegistry implements MatchingRuleRegistry
+{
+    /** The wrapped MatchingRule registry */
+    MatchingRuleRegistry immutableMatchingRuleRegistry;
+    
+    /**
+     * Creates a new instance of ImmutableMatchingRuleRegistry.
+     *
+     * @param matchingRuleRegistry The wrapped MatchingRule registry
+     */
+    public ImmutableMatchingRuleRegistry( MatchingRuleRegistry matchingRuleRegistry )
+    {
+        immutableMatchingRuleRegistry = matchingRuleRegistry;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public ImmutableMatchingRuleRegistry clone() throws CloneNotSupportedException
+    {
+        return (ImmutableMatchingRuleRegistry)immutableMatchingRuleRegistry.clone();
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int size()
+    {
+        return immutableMatchingRuleRegistry.size();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean contains( String oid )
+    {
+        return immutableMatchingRuleRegistry.contains( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean containsName( String name )
+    {
+        return immutableMatchingRuleRegistry.containsName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getOidByName( String name ) throws NamingException
+    {
+        return immutableMatchingRuleRegistry.getOidByName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getSchemaName( String oid ) throws NamingException
+    {
+        return immutableMatchingRuleRegistry.getSchemaName( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public SchemaObjectType getType()
+    {
+        return immutableMatchingRuleRegistry.getType();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<MatchingRule> iterator()
+    {
+        return immutableMatchingRuleRegistry.iterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public MatchingRule lookup( String oid ) throws NamingException
+    {
+        return immutableMatchingRuleRegistry.lookup( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<String> oidsIterator()
+    {
+        return immutableMatchingRuleRegistry.oidsIterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void register( MatchingRule schemaObject ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public MatchingRule unregister( String numericOid ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void unregisterSchemaElements( String schemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+}

Added: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleUseRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleUseRegistry.java?rev=833647&view=auto
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleUseRegistry.java (added)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableMatchingRuleUseRegistry.java Sat Nov  7 07:57:34 2009
@@ -0,0 +1,179 @@
+/*
+ *  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.shared.ldap.schema.registries;
+
+
+import java.util.Iterator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.schema.MatchingRuleUse;
+import org.apache.directory.shared.ldap.schema.SchemaObjectType;
+
+
+/**
+ * An immutable wrapper of the MatchingRuleUse registry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 828111 $
+ */
+public class ImmutableMatchingRuleUseRegistry implements MatchingRuleUseRegistry
+{
+    /** The wrapped MatchingRuleUse registry */
+    MatchingRuleUseRegistry immutableMatchingRuleUseRegistry;
+    
+    /**
+     * Creates a new instance of ImmutableMatchingRuleUseRegistry.
+     *
+     * @param matchingRuleUseRegistry The wrapped MatchingRuleUse registry
+     */
+    public ImmutableMatchingRuleUseRegistry( MatchingRuleUseRegistry matchingRuleUseRegistry )
+    {
+        immutableMatchingRuleUseRegistry = matchingRuleUseRegistry;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public ImmutableMatchingRuleUseRegistry clone() throws CloneNotSupportedException
+    {
+        return (ImmutableMatchingRuleUseRegistry)immutableMatchingRuleUseRegistry.clone();
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int size()
+    {
+        return immutableMatchingRuleUseRegistry.size();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean contains( String oid )
+    {
+        return immutableMatchingRuleUseRegistry.contains( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean containsName( String name )
+    {
+        return immutableMatchingRuleUseRegistry.containsName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getOidByName( String name ) throws NamingException
+    {
+        return immutableMatchingRuleUseRegistry.getOidByName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getSchemaName( String oid ) throws NamingException
+    {
+        return immutableMatchingRuleUseRegistry.getSchemaName( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public SchemaObjectType getType()
+    {
+        return immutableMatchingRuleUseRegistry.getType();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<MatchingRuleUse> iterator()
+    {
+        return immutableMatchingRuleUseRegistry.iterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public MatchingRuleUse lookup( String oid ) throws NamingException
+    {
+        return immutableMatchingRuleUseRegistry.lookup( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<String> oidsIterator()
+    {
+        return immutableMatchingRuleUseRegistry.oidsIterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void register( MatchingRuleUse schemaObject ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleUseRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleUseRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public MatchingRuleUse unregister( String numericOid ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleUseRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void unregisterSchemaElements( String schemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the MatchingRuleUseRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+}

Added: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNameFormRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNameFormRegistry.java?rev=833647&view=auto
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNameFormRegistry.java (added)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNameFormRegistry.java Sat Nov  7 07:57:34 2009
@@ -0,0 +1,180 @@
+/*
+ *  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.shared.ldap.schema.registries;
+
+import java.util.Iterator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.schema.NameForm;
+import org.apache.directory.shared.ldap.schema.SchemaObjectType;
+
+
+
+
+/**
+ * An immutable wrapper of the NameForm registry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 828111 $
+ */
+public class ImmutableNameFormRegistry implements NameFormRegistry
+{
+    /** The wrapped NameForm registry */
+    NameFormRegistry immutableNameFormRegistry;
+    
+    /**
+     * Creates a new instance of ImmutableNameFormRegistry.
+     *
+     * @param nameFormRegistry The wrapped NameForm registry
+     */
+    public ImmutableNameFormRegistry( NameFormRegistry nameFormRegistry )
+    {
+        immutableNameFormRegistry = nameFormRegistry;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public ImmutableNameFormRegistry clone() throws CloneNotSupportedException
+    {
+        return (ImmutableNameFormRegistry)immutableNameFormRegistry.clone();
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int size()
+    {
+        return immutableNameFormRegistry.size();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean contains( String oid )
+    {
+        return immutableNameFormRegistry.contains( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean containsName( String name )
+    {
+        return immutableNameFormRegistry.containsName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getOidByName( String name ) throws NamingException
+    {
+        return immutableNameFormRegistry.getOidByName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getSchemaName( String oid ) throws NamingException
+    {
+        return immutableNameFormRegistry.getSchemaName( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public SchemaObjectType getType()
+    {
+        return immutableNameFormRegistry.getType();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<NameForm> iterator()
+    {
+        return immutableNameFormRegistry.iterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public NameForm lookup( String oid ) throws NamingException
+    {
+        return immutableNameFormRegistry.lookup( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<String> oidsIterator()
+    {
+        return immutableNameFormRegistry.oidsIterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void register( NameForm schemaObject ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NameFormRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NameFormRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public NameForm unregister( String numericOid ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NameFormRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void unregisterSchemaElements( String schemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NameFormRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+}

Added: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNormalizerRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNormalizerRegistry.java?rev=833647&view=auto
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNormalizerRegistry.java (added)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableNormalizerRegistry.java Sat Nov  7 07:57:34 2009
@@ -0,0 +1,180 @@
+/*
+ *  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.shared.ldap.schema.registries;
+
+
+import java.util.Iterator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.schema.Normalizer;
+import org.apache.directory.shared.ldap.schema.SchemaObjectType;
+
+
+/**
+ * An immutable wrapper of the Normalizer registry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 831344 $
+ */
+public class ImmutableNormalizerRegistry implements NormalizerRegistry
+{
+    /** The wrapped Normalizer registry */
+    NormalizerRegistry immutableNormalizerRegistry;
+    
+    
+    /**
+     * Creates a new immutable NormalizerRegistry instance.
+     * 
+     * @param The wrapped Normalizer registry 
+     */
+    public ImmutableNormalizerRegistry( NormalizerRegistry normalizerRegistry )
+    {
+        immutableNormalizerRegistry = normalizerRegistry;
+    }
+    
+    
+    /**
+     *  {@inheritDoc}
+     */
+    public void register( Normalizer normalizer ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NormalizerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public Normalizer unregister( String numericOid ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NormalizerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     *  {@inheritDoc}
+     */
+    public void unregisterSchemaElements( String schemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NormalizerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     *  {@inheritDoc}
+     */
+    public ImmutableNormalizerRegistry clone() throws CloneNotSupportedException
+    {
+        return (ImmutableNormalizerRegistry)immutableNormalizerRegistry.clone();
+    }
+    
+    
+    /**
+     *  {@inheritDoc}
+     */
+    public int size()
+    {
+        return immutableNormalizerRegistry.size();
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public boolean contains( String oid )
+    {
+        return immutableNormalizerRegistry.contains( oid );
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public boolean containsName( String name )
+    {
+        return immutableNormalizerRegistry.containsName( name );
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public String getOidByName( String name ) throws NamingException
+    {
+        return immutableNormalizerRegistry.getOidByName( name );
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public String getSchemaName( String oid ) throws NamingException
+    {
+        return immutableNormalizerRegistry.getSchemaName( oid );
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public SchemaObjectType getType()
+    {
+        return immutableNormalizerRegistry.getType();
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public Iterator<Normalizer> iterator()
+    {
+        return immutableNormalizerRegistry.iterator();
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public Normalizer lookup( String oid ) throws NamingException
+    {
+        return immutableNormalizerRegistry.lookup( oid );
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public Iterator<String> oidsIterator()
+    {
+        return immutableNormalizerRegistry.oidsIterator();
+    }
+
+
+    /**
+     *  {@inheritDoc}
+     */
+    public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the NormalizerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+}

Added: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableObjectClassRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableObjectClassRegistry.java?rev=833647&view=auto
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableObjectClassRegistry.java (added)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableObjectClassRegistry.java Sat Nov  7 07:57:34 2009
@@ -0,0 +1,218 @@
+/*
+ *  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.shared.ldap.schema.registries;
+
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.schema.ObjectClass;
+import org.apache.directory.shared.ldap.schema.SchemaObjectType;
+
+
+/**
+ * An immutable wrapper of the ObjectClass registry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 828111 $
+ */
+public class ImmutableObjectClassRegistry implements ObjectClassRegistry, Cloneable
+{
+    /** The wrapped ObjectClass registry */
+    private ObjectClassRegistry immutableObjectClassRegistry;
+
+    /**
+     * Creates a new instance of ImmutableAttributeTypeRegistry.
+     *
+     * @param atRegistry The wrapped Attrib uteType registry
+     */
+    public ImmutableObjectClassRegistry( ObjectClassRegistry ocRegistry )
+    {
+        immutableObjectClassRegistry = ocRegistry;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public boolean hasDescendants( String ancestorId ) throws NamingException
+    {
+        return immutableObjectClassRegistry.hasDescendants( ancestorId );
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<ObjectClass> descendants( String ancestorId ) throws NamingException
+    {
+        return immutableObjectClassRegistry.descendants( ancestorId );
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void registerDescendants( ObjectClass objectClass, List<ObjectClass> ancestors ) 
+        throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the ObjectClassRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void unregisterDescendants( ObjectClass attributeType, List<ObjectClass> ancestors ) 
+        throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the ObjectClassRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void register( ObjectClass objectClass ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the ObjectClassRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public ObjectClass unregister( String numericOid ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the ObjectClassRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     * Clone the ObjectClassRegistry
+     */
+    public ImmutableObjectClassRegistry clone() throws CloneNotSupportedException
+    {
+        return (ImmutableObjectClassRegistry)immutableObjectClassRegistry.clone();
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int size()
+    {
+        return immutableObjectClassRegistry.size();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean contains( String oid )
+    {
+        return immutableObjectClassRegistry.contains( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean containsName( String name )
+    {
+        return immutableObjectClassRegistry.containsName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getOidByName( String name ) throws NamingException
+    {
+        return immutableObjectClassRegistry.getOidByName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getSchemaName( String oid ) throws NamingException
+    {
+        return immutableObjectClassRegistry.getSchemaName( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public SchemaObjectType getType()
+    {
+        return immutableObjectClassRegistry.getType();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<ObjectClass> iterator()
+    {
+        return immutableObjectClassRegistry.iterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public ObjectClass lookup( String oid ) throws NamingException
+    {
+        return immutableObjectClassRegistry.lookup( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<String> oidsIterator()
+    {
+        return immutableObjectClassRegistry.oidsIterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the ObjectClassRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void unregisterSchemaElements( String schemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the ObjectClassRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+}

Added: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableSyntaxCheckerRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableSyntaxCheckerRegistry.java?rev=833647&view=auto
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableSyntaxCheckerRegistry.java (added)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableSyntaxCheckerRegistry.java Sat Nov  7 07:57:34 2009
@@ -0,0 +1,179 @@
+/*
+ *  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.shared.ldap.schema.registries;
+
+
+import java.util.Iterator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.schema.SchemaObjectType;
+import org.apache.directory.shared.ldap.schema.SyntaxChecker;
+
+
+/**
+ * An immutable wrapper of the SyntaxChecker registry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 831344 $
+ */
+public class ImmutableSyntaxCheckerRegistry implements SyntaxCheckerRegistry
+{
+    /** The wrapped SyntaxChecker registry */
+    SyntaxCheckerRegistry immutableSyntaxCheckerRegistry;
+    
+    /**
+     * Creates a new instance of ImmutableSyntaxCheckerRegistry.
+     *
+     * @param syntaxCheckerRegistry The wrapped SyntaxChecker registry
+     */
+    public ImmutableSyntaxCheckerRegistry( SyntaxCheckerRegistry syntaxCheckerRegistry )
+    {
+        immutableSyntaxCheckerRegistry = syntaxCheckerRegistry;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void register( SyntaxChecker syntaxChecker ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the SyntaxCheckerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public SyntaxChecker unregister( String numericOid ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the SyntaxCheckerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void unregisterSchemaElements( String schemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the SyntaxCheckerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public ImmutableSyntaxCheckerRegistry clone() throws CloneNotSupportedException
+    {
+        return (ImmutableSyntaxCheckerRegistry)immutableSyntaxCheckerRegistry.clone();
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int size()
+    {
+        return immutableSyntaxCheckerRegistry.size();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean contains( String oid )
+    {
+        return immutableSyntaxCheckerRegistry.contains( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean containsName( String name )
+    {
+        return immutableSyntaxCheckerRegistry.containsName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getOidByName( String name ) throws NamingException
+    {
+        return immutableSyntaxCheckerRegistry.getOidByName( name );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getSchemaName( String oid ) throws NamingException
+    {
+        return immutableSyntaxCheckerRegistry.getSchemaName( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public SchemaObjectType getType()
+    {
+        return immutableSyntaxCheckerRegistry.getType();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<SyntaxChecker> iterator()
+    {
+        return immutableSyntaxCheckerRegistry.iterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public SyntaxChecker lookup( String oid ) throws NamingException
+    {
+        return immutableSyntaxCheckerRegistry.lookup( oid );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public Iterator<String> oidsIterator()
+    {
+        return immutableSyntaxCheckerRegistry.oidsIterator();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException
+    {
+        throw new LdapOperationNotSupportedException( "Cannot modify the SyntaxCheckerRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION );
+    }
+}

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/LdapSyntaxRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/LdapSyntaxRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/LdapSyntaxRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/LdapSyntaxRegistry.java Sat Nov  7 07:57:34 2009
@@ -20,44 +20,25 @@
 package org.apache.directory.shared.ldap.schema.registries;
 
 import org.apache.directory.shared.ldap.schema.LdapSyntax;
-import org.apache.directory.shared.ldap.schema.SchemaObjectType;
 
 
 /**
- * Manages the lookup and registration of LdapSyntaxes within the system by OID.
+ * An LdapSyntax registry service interface.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class LdapSyntaxRegistry extends SchemaObjectRegistry<LdapSyntax>
+public interface LdapSyntaxRegistry extends SchemaObjectRegistry<LdapSyntax>,
+    Iterable<LdapSyntax>, Cloneable
 {
     /**
-     * Creates a new default LdapSyntaxRegistry instance.
-     * 
-     * @param oidRegistry The global OID registry 
-     */
-    public LdapSyntaxRegistry( OidRegistry oidRegistry )
-    {
-        super( SchemaObjectType.LDAP_SYNTAX, oidRegistry );
-    }
-    
-    
-    /**
      * Clone the LdapSyntaxRegistry
      */
-    public LdapSyntaxRegistry clone() throws CloneNotSupportedException
-    {
-        LdapSyntaxRegistry clone = (LdapSyntaxRegistry)super.clone();
-        
-        return clone;
-    }
+    LdapSyntaxRegistry clone() throws CloneNotSupportedException;
     
     
     /**
      *  @return The number of Syntaxes stored
      */
-    public int size()
-    {
-        return oidRegistry.size();
-    }
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleRegistry.java Sat Nov  7 07:57:34 2009
@@ -21,44 +21,25 @@
 
 
 import org.apache.directory.shared.ldap.schema.MatchingRule;
-import org.apache.directory.shared.ldap.schema.SchemaObjectType;
 
 
 /**
- * A registry used to track system matchingRules.
+ * An AttributeType registry service interface.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class MatchingRuleRegistry extends SchemaObjectRegistry<MatchingRule>
+public interface MatchingRuleRegistry extends SchemaObjectRegistry<MatchingRule>,
+    Iterable<MatchingRule>, Cloneable
 {
     /**
-     * Creates a new default MatchingRuleRegistry instance.
-     * 
-     * @param oidRegistry The global OID registry 
-     */
-    public MatchingRuleRegistry( OidRegistry oidRegistry )
-    {
-        super( SchemaObjectType.MATCHING_RULE, oidRegistry );
-    }
-    
-    
-    /**
      * Clone the MatchingRuleRegistry
      */
-    public MatchingRuleRegistry clone() throws CloneNotSupportedException
-    {
-        MatchingRuleRegistry clone = (MatchingRuleRegistry)super.clone();
-        
-        return clone;
-    }
+    MatchingRuleRegistry clone() throws CloneNotSupportedException;
     
     
     /**
-     *  @return The number of MatchingRule stored
+     * @return The number of MatchingRule stored
      */
-    public int size()
-    {
-        return oidRegistry.size();
-    }
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleUseRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleUseRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleUseRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/MatchingRuleUseRegistry.java Sat Nov  7 07:57:34 2009
@@ -21,7 +21,6 @@
 
 
 import org.apache.directory.shared.ldap.schema.MatchingRuleUse;
-import org.apache.directory.shared.ldap.schema.SchemaObjectType;
 
 
 /**
@@ -32,35 +31,17 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class MatchingRuleUseRegistry extends SchemaObjectRegistry<MatchingRuleUse>
+public interface MatchingRuleUseRegistry extends SchemaObjectRegistry<MatchingRuleUse>,
+    Iterable<MatchingRuleUse>, Cloneable
 {
     /**
-     * Creates a new default MatchingRuleUseRegistry instance.
-     * 
-     * @param oidRegistry The global OID registry 
-     */
-    public MatchingRuleUseRegistry( OidRegistry oidRegistry )
-    {
-        super( SchemaObjectType.MATCHING_RULE_USE, oidRegistry );
-    }
-    
-    
-    /**
      * Clone the MatchingRuleUseRegistry
      */
-    public MatchingRuleUseRegistry clone() throws CloneNotSupportedException
-    {
-        MatchingRuleUseRegistry clone = (MatchingRuleUseRegistry)super.clone();
-        
-        return clone;
-    }
+    MatchingRuleUseRegistry clone() throws CloneNotSupportedException;
     
     
     /**
      *  @return The number of MatchingRuleUse stored
      */
-    public int size()
-    {
-        return oidRegistry.size();
-    }
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NameFormRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NameFormRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NameFormRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NameFormRegistry.java Sat Nov  7 07:57:34 2009
@@ -21,7 +21,6 @@
 
 
 import org.apache.directory.shared.ldap.schema.NameForm;
-import org.apache.directory.shared.ldap.schema.SchemaObjectType;
 
 
 /**
@@ -30,35 +29,17 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class NameFormRegistry extends SchemaObjectRegistry<NameForm>
+public interface NameFormRegistry extends SchemaObjectRegistry<NameForm>,
+    Iterable<NameForm>, Cloneable
 {
     /**
-     * Creates a new default NameFormRegistry instance.
-     * 
-     * @param oidRegistry The global OID registry 
+     * Clone the NameFormRegistry
      */
-    public NameFormRegistry( OidRegistry oidRegistry )
-    {
-        super( SchemaObjectType.NAME_FORM, oidRegistry );
-    }
-    
-    
-    /**
-     * Clone the DITContentRuleRegistry
-     */
-    public NameFormRegistry clone() throws CloneNotSupportedException
-    {
-        NameFormRegistry clone = (NameFormRegistry)super.clone();
-        
-        return clone;
-    }
+    NameFormRegistry clone() throws CloneNotSupportedException;
     
     
     /**
      *  @return The number of NameForms stored
      */
-    public int size()
-    {
-        return oidRegistry.size();
-    }
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NormalizerRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NormalizerRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NormalizerRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/NormalizerRegistry.java Sat Nov  7 07:57:34 2009
@@ -22,13 +22,7 @@
 
 import javax.naming.NamingException;
 
-import org.apache.directory.shared.asn1.primitives.OID;
 import org.apache.directory.shared.ldap.schema.Normalizer;
-import org.apache.directory.shared.ldap.schema.SchemaObject;
-import org.apache.directory.shared.ldap.schema.SchemaObjectType;
-import org.apache.directory.shared.ldap.util.StringTools;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 
 /**
@@ -37,25 +31,9 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class NormalizerRegistry extends SchemaObjectRegistry<Normalizer>
+public interface NormalizerRegistry extends SchemaObjectRegistry<Normalizer>,
+    Iterable<Normalizer>, Cloneable
 {
-    /** static class logger */
-    private static final Logger LOG = LoggerFactory.getLogger( NormalizerRegistry.class );
-
-    /** A speedup for debug */
-    private static final boolean DEBUG = LOG.isDebugEnabled();
-    
-    /**
-     * Creates a new default NormalizerRegistry instance.
-     * 
-     * @param oidRegistry The global OID registry 
-     */
-    public NormalizerRegistry( OidRegistry oidRegistry )
-    {
-        super( SchemaObjectType.NORMALIZER, oidRegistry );
-    }
-    
-    
     /**
      * Registers a new Normalizer with this registry.
      *
@@ -63,33 +41,7 @@
      * @throws NamingException if the Normalizer is already registered or
      * the registration operation is not supported
      */
-    public void register( Normalizer normalizer ) throws NamingException
-    {
-        String oid = normalizer.getOid();
-        
-        if ( byName.containsKey( oid ) )
-        {
-            String msg = type.name() + " with OID " + oid + " already registered!";
-            LOG.warn( msg );
-            throw new NamingException( msg );
-        }
-
-        byName.put( oid, normalizer );
-        
-        /*
-         * add the aliases/names to the name map along with their toLowerCase
-         * versions of the name: this is used to make sure name lookups work
-         */
-        for ( String name : normalizer.getNames() )
-        {
-            byName.put( StringTools.trim( StringTools.toLowerCase( name ) ), normalizer );
-        }
-        
-        if ( LOG.isDebugEnabled() )
-        {
-            LOG.debug( "registered " + normalizer.getName() + " for OID {}", oid );
-        }
-    }
+    void register( Normalizer normalizer ) throws NamingException;
 
 
     /**
@@ -99,29 +51,7 @@
      * @param numericOid the numeric identifier
      * @throws NamingException if the numeric identifier is invalid
      */
-    public Normalizer unregister( String numericOid ) throws NamingException
-    {
-        if ( !OID.isOID( numericOid ) )
-        {
-            String msg = "OID " + numericOid + " is not a numeric OID";
-            LOG.error( msg );
-            throw new NamingException( msg );
-        }
-
-        Normalizer normalizer = byName.remove( numericOid );
-        
-        for ( String name : normalizer.getNames() )
-        {
-            byName.remove( name );
-        }
-        
-        if ( DEBUG )
-        {
-            LOG.debug( "Removed {} with oid {} from the registry", normalizer, numericOid );
-        }
-        
-        return normalizer;
-    }
+    Normalizer unregister( String numericOid ) throws NamingException;
     
     
     /**
@@ -130,47 +60,17 @@
      * 
      * @param schemaName the name of the schema whose Normalizers will be removed from
      */
-    public void unregisterSchemaElements( String schemaName ) throws NamingException
-    {
-        if ( schemaName == null )
-        {
-            return;
-        }
-        
-        // Loop on all the SchemaObjects stored and remove those associated
-        // with the give schemaName
-        for ( Normalizer normalizer : this )
-        {
-            if ( schemaName.equalsIgnoreCase( normalizer.getSchemaName() ) )
-            {
-                String oid = normalizer.getOid();
-                SchemaObject removed = unregister( oid );
-                
-                if ( DEBUG )
-                {
-                    LOG.debug( "Removed {} with oid {} from the registry", removed, oid );
-                }
-            }
-        }
-    }
+    void unregisterSchemaElements( String schemaName ) throws NamingException;
     
     
     /**
      * Clone the NormalizerRegistry
      */
-    public NormalizerRegistry clone() throws CloneNotSupportedException
-    {
-        NormalizerRegistry clone = (NormalizerRegistry)super.clone();
-        
-        return clone;
-    }
+    NormalizerRegistry clone() throws CloneNotSupportedException;
     
     
     /**
      *  @return The number of Normalizers stored
      */
-    public int size()
-    {
-        return byName.values().size();
-    }
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ObjectClassRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ObjectClassRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ObjectClassRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ObjectClassRegistry.java Sat Nov  7 07:57:34 2009
@@ -20,21 +20,12 @@
 package org.apache.directory.shared.ldap.schema.registries;
 
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
 import javax.naming.NamingException;
-import javax.naming.directory.NoSuchAttributeException;
 
 import org.apache.directory.shared.ldap.schema.ObjectClass;
-import org.apache.directory.shared.ldap.schema.SchemaObjectType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 
 /**
@@ -43,29 +34,9 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class ObjectClassRegistry extends SchemaObjectRegistry<ObjectClass>
+public interface ObjectClassRegistry extends SchemaObjectRegistry<ObjectClass>,
+    Iterable<ObjectClass>, Cloneable
 {
-    /** static class logger */
-    private static final Logger LOG = LoggerFactory.getLogger( ObjectClassRegistry.class );
-
-    /** Speedup for DEBUG mode */
-    private static final boolean IS_DEBUG = LOG.isDebugEnabled();
-
-    /** maps OIDs to a Set of descendants for that OID */
-    private Map<String,Set<ObjectClass>> oidToDescendants;
-
-    /**
-     * Creates a new default ObjectClassRegistry instance.
-     * 
-     * @param oidRegistry The global OID registry 
-     */
-    public ObjectClassRegistry( OidRegistry oidRegistry )
-    {
-        super( SchemaObjectType.OBJECT_CLASS, oidRegistry );
-        oidToDescendants = new HashMap<String,Set<ObjectClass>>();
-    }
-    
-    
     /**
      * Quick lookup to see if an objectClass has descendants.
      * 
@@ -75,19 +46,7 @@
      * @throws NamingException if the ancestor ObjectClass cannot be 
      * discerned from the ancestorId supplied
      */
-    public boolean hasDescendants( String ancestorId ) throws NamingException
-    {
-        try
-        {
-            String oid = getOidByName( ancestorId );
-            Set<ObjectClass> descendants = oidToDescendants.get( oid );
-            return (descendants != null) && !descendants.isEmpty();
-        }
-        catch ( NamingException ne )
-        {
-            throw new NoSuchAttributeException( ne.getMessage() );
-        }
-    }
+    boolean hasDescendants( String ancestorId ) throws NamingException;
     
     
     /**
@@ -100,26 +59,7 @@
      * @throws NamingException if the ancestor ObjectClass cannot be 
      * discerned from the ancestorId supplied
      */
-    @SuppressWarnings("unchecked")
-    public Iterator<ObjectClass> descendants( String ancestorId ) throws NamingException
-    {
-        try
-        {
-            String oid = getOidByName( ancestorId );
-            Set<ObjectClass> descendants = oidToDescendants.get( oid );
-            
-            if ( descendants == null )
-            {
-                return Collections.EMPTY_SET.iterator();
-            }
-            
-            return descendants.iterator();
-        }
-        catch ( NamingException ne )
-        {
-            throw new NoSuchAttributeException( ne.getMessage() );
-        }
-    }
+    Iterator<ObjectClass> descendants( String ancestorId ) throws NamingException;
 
     
     /**
@@ -129,41 +69,8 @@
      * @param attributeType The ObjectClass to register
      * @throws NamingException If something went wrong
      */
-    public void registerDescendants( ObjectClass objectClass, List<ObjectClass> ancestors ) 
-        throws NamingException
-    {
-        // add this attribute to descendant list of other attributes in superior chain
-        if ( ( ancestors == null ) || ( ancestors.size() == 0 ) ) 
-        {
-            return;
-        }
-        
-        for ( ObjectClass ancestor : ancestors )
-        {
-            // Get the ancestor's descendant, if any
-            Set<ObjectClass> descendants = oidToDescendants.get( ancestor.getOid() );
-    
-            // Initialize the descendant Set to store the descendants for the attributeType
-            if ( descendants == null )
-            {
-                descendants = new HashSet<ObjectClass>( 1 );
-                oidToDescendants.put( ancestor.getOid(), descendants );
-            }
-            
-            // Add the current ObjectClass as a descendant
-            descendants.add( objectClass );
-            
-            try
-            {
-                // And recurse until we reach the top of the hierarchy
-                registerDescendants( objectClass, ancestor.getSuperiors() );
-            }
-            catch ( NamingException ne )
-            {
-                throw new NoSuchAttributeException( ne.getMessage() );
-            }
-        }
-    }
+    void registerDescendants( ObjectClass objectClass, List<ObjectClass> ancestors ) 
+        throws NamingException;
     
     
     /**
@@ -174,41 +81,8 @@
      * @param ancestor its ancestor 
      * @throws NamingException If something went wrong
      */
-    public void unregisterDescendants( ObjectClass attributeType, List<ObjectClass> ancestors ) 
-        throws NamingException
-    {
-        // add this attribute to descendant list of other attributes in superior chain
-        if ( ( ancestors == null ) || ( ancestors.size() == 0 ) ) 
-        {
-            return;
-        }
-        
-        for ( ObjectClass ancestor : ancestors )
-        {
-            // Get the ancestor's descendant, if any
-            Set<ObjectClass> descendants = oidToDescendants.get( ancestor.getOid() );
-    
-            if ( descendants != null )
-            {
-                descendants.remove( attributeType );
-                
-                if ( descendants.size() == 0 )
-                {
-                    oidToDescendants.remove( descendants );
-                }
-            }
-            
-            try
-            {
-                // And recurse until we reach the top of the hierarchy
-                unregisterDescendants( attributeType, ancestor.getSuperiors() );
-            }
-            catch ( NamingException ne )
-            {
-                throw new NoSuchAttributeException( ne.getMessage() );
-            }
-        }
-    }
+    void unregisterDescendants( ObjectClass attributeType, List<ObjectClass> ancestors ) 
+        throws NamingException;
     
     
     /**
@@ -218,26 +92,7 @@
      * @throws NamingException if the ObjectClass is already registered or
      * the registration operation is not supported
      */
-    public void register( ObjectClass objectClass ) throws NamingException
-    {
-        try
-        {
-            super.register( objectClass );
-            
-            // Register this ObjectClass into the Descendant map
-            registerDescendants( objectClass, objectClass.getSuperiors() );
-            
-            // Internally associate the OID to the registered AttributeType
-            if ( IS_DEBUG )
-            {
-                LOG.debug( "registred objectClass: {}", objectClass );
-            }
-        }
-        catch ( NamingException ne )
-        {
-            throw new NoSuchAttributeException( ne.getMessage() );
-        }
-    }
+    void register( ObjectClass objectClass ) throws NamingException;
     
     
     /**
@@ -246,48 +101,17 @@
      * @param numericOid the numeric identifier
      * @throws NamingException if the numeric identifier is invalid
      */
-    public ObjectClass unregister( String numericOid ) throws NamingException
-    {
-        try
-        {
-            ObjectClass removed = super.unregister( numericOid );
-    
-            // Deleting an ObjectClass which might be used as a superior means we have
-            // to recursively update the descendant map. We also have to remove
-            // the at.oid -> descendant relation
-            oidToDescendants.remove( numericOid );
-            
-            // Now recurse if needed
-            unregisterDescendants( removed, removed.getSuperiors() );
-            
-            return removed;
-        }
-        catch ( NamingException ne )
-        {
-            throw new NoSuchAttributeException( ne.getMessage() );
-        }
-    }
+    ObjectClass unregister( String numericOid ) throws NamingException;
     
     
     /**
      * Clone the ObjectClassRegistry
      */
-    public ObjectClassRegistry clone() throws CloneNotSupportedException
-    {
-        ObjectClassRegistry clone = (ObjectClassRegistry)super.clone();
-        
-        // Clone the oidToDescendantSet (will be empty)
-        clone.oidToDescendants = new HashMap<String, Set<ObjectClass>>();
-        
-        return clone;
-    }
+    ObjectClassRegistry clone() throws CloneNotSupportedException;
     
     
     /**
      *  @return The number of ObjectClasses stored
      */
-    public int size()
-    {
-        return oidRegistry.size();
-    }
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/Registries.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/Registries.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/Registries.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/Registries.java Sat Nov  7 07:57:34 2009
@@ -137,17 +137,17 @@
     public Registries()
     {
         this.oidRegistry = new OidRegistry();
-        attributeTypeRegistry = new AttributeTypeRegistry( oidRegistry );
-        comparatorRegistry = new ComparatorRegistry( oidRegistry );
-        ditContentRuleRegistry = new DITContentRuleRegistry( oidRegistry );
-        ditStructureRuleRegistry = new DITStructureRuleRegistry( oidRegistry );
-        ldapSyntaxRegistry = new LdapSyntaxRegistry( oidRegistry );
-        matchingRuleRegistry = new MatchingRuleRegistry( oidRegistry );
-        matchingRuleUseRegistry = new MatchingRuleUseRegistry( oidRegistry );
-        nameFormRegistry = new NameFormRegistry( oidRegistry );
-        normalizerRegistry = new NormalizerRegistry( oidRegistry );
-        objectClassRegistry = new ObjectClassRegistry( oidRegistry );
-        syntaxCheckerRegistry = new SyntaxCheckerRegistry( oidRegistry );
+        attributeTypeRegistry = new DefaultAttributeTypeRegistry( oidRegistry );
+        comparatorRegistry = new DefaultComparatorRegistry( oidRegistry );
+        ditContentRuleRegistry = new DefaultDITContentRuleRegistry( oidRegistry );
+        ditStructureRuleRegistry = new DefaultDITStructureRuleRegistry( oidRegistry );
+        ldapSyntaxRegistry = new DefaultLdapSyntaxRegistry( oidRegistry );
+        matchingRuleRegistry = new DefaultMatchingRuleRegistry( oidRegistry );
+        matchingRuleUseRegistry = new DefaultMatchingRuleUseRegistry( oidRegistry );
+        nameFormRegistry = new DefaultNameFormRegistry( oidRegistry );
+        normalizerRegistry = new DefaultNormalizerRegistry( oidRegistry );
+        objectClassRegistry = new DefaultObjectClassRegistry( oidRegistry );
+        syntaxCheckerRegistry = new DefaultSyntaxCheckerRegistry( oidRegistry );
         schemaObjectsBySchemaName = new HashMap<String, Set<SchemaWrapper>>();
         usedBy = new HashMap<SchemaWrapper, Set<SchemaWrapper>>();
         using = new HashMap<SchemaWrapper, Set<SchemaWrapper>>();
@@ -977,6 +977,10 @@
 	    // First call the specific registry's register method
 	    switch ( schemaObject.getObjectType() )
 	    {
+	        case ATTRIBUTE_TYPE :
+	            attributeTypeRegistry.register( (AttributeType)schemaObject );
+	            break;
+	            
             case DIT_CONTENT_RULE : 
                 ditContentRuleRegistry.register( (DITContentRule)schemaObject );
                 break;
@@ -1046,57 +1050,58 @@
 	 * @param schemaObject The SchemaObject we want to deregister
 	 * @throws NamingException If the removal failed
 	 */
-    public void unregister( SchemaObject schemaObject ) throws NamingException
+    public SchemaObject unregister( SchemaObject schemaObject ) throws NamingException
     {
         LOG.debug( "Unregistering {}:{}", schemaObject.getObjectType(), schemaObject.getOid() );
 
         String oid = schemaObject.getOid();
+        SchemaObject unregistered = null;
         
         // First call the specific registry's register method
         switch ( schemaObject.getObjectType() )
         {
             case ATTRIBUTE_TYPE : 
-                attributeTypeRegistry.unregister( oid );
+                unregistered = attributeTypeRegistry.unregister( oid );
                 break;
                 
             case COMPARATOR : 
-                comparatorRegistry.unregister( oid );
+                unregistered = comparatorRegistry.unregister( oid );
                 break;
                 
             case DIT_CONTENT_RULE : 
-                ditContentRuleRegistry.unregister( oid );
+                unregistered = ditContentRuleRegistry.unregister( oid );
                 break;
                 
             case DIT_STRUCTURE_RULE : 
-                ditStructureRuleRegistry.unregister( oid );
+                unregistered = ditStructureRuleRegistry.unregister( oid );
                 break;
                 
             case LDAP_SYNTAX : 
-                ldapSyntaxRegistry.unregister( oid );
+                unregistered = ldapSyntaxRegistry.unregister( oid );
                 break;
                 
             case MATCHING_RULE : 
-                matchingRuleRegistry.unregister( oid );
+                unregistered = matchingRuleRegistry.unregister( oid );
                 break;
                 
             case MATCHING_RULE_USE : 
-                matchingRuleUseRegistry.unregister( oid );
+                unregistered = matchingRuleUseRegistry.unregister( oid );
                 break;
                 
             case NAME_FORM : 
-                nameFormRegistry.unregister( oid );
+                unregistered = nameFormRegistry.unregister( oid );
                 break;
                 
             case NORMALIZER : 
-                normalizerRegistry.unregister( oid );
+                unregistered = normalizerRegistry.unregister( oid );
                 break;
                 
             case OBJECT_CLASS : 
-                objectClassRegistry.unregister( oid );
+                unregistered = objectClassRegistry.unregister( oid );
                 break;
                 
             case SYNTAX_CHECKER : 
-                syntaxCheckerRegistry.unregister( oid );
+                unregistered = syntaxCheckerRegistry.unregister( oid );
                 break;
         }
         
@@ -1117,6 +1122,8 @@
             LOG.debug( "Unregistering of {}:{} failed, not found in Registries", 
                 schemaObject.getObjectType(), schemaObject.getOid() );
         }
+        
+        return unregistered;
     }
     
     
@@ -1779,7 +1786,7 @@
         Registries clone = (Registries)super.clone();
         
         // We have to clone every SchemaObject registries now
-        clone.attributeTypeRegistry = attributeTypeRegistry.clone();
+        clone.attributeTypeRegistry = (AttributeTypeRegistry)attributeTypeRegistry.clone();
         clone.comparatorRegistry = comparatorRegistry.clone();
         clone.ditContentRuleRegistry = ditContentRuleRegistry.clone();
         clone.ditStructureRuleRegistry = ditStructureRuleRegistry.clone();

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SchemaObjectRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SchemaObjectRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SchemaObjectRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SchemaObjectRegistry.java Sat Nov  7 07:57:34 2009
@@ -20,18 +20,12 @@
 package org.apache.directory.shared.ldap.schema.registries;
 
 
-import java.util.HashMap;
 import java.util.Iterator;
-import java.util.Map;
 
 import javax.naming.NamingException;
 
-import org.apache.directory.shared.asn1.primitives.OID;
 import org.apache.directory.shared.ldap.schema.SchemaObject;
 import org.apache.directory.shared.ldap.schema.SchemaObjectType;
-import org.apache.directory.shared.ldap.util.StringTools;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 
 /**
@@ -40,35 +34,8 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class SchemaObjectRegistry<T extends SchemaObject> implements Iterable<T>, Cloneable
+public interface SchemaObjectRegistry<T extends SchemaObject>
 {
-    /** static class logger */
-    private static final Logger LOG = LoggerFactory.getLogger( SchemaObjectRegistry.class );
-
-    /** A speedup for debug */
-    private static final boolean DEBUG = LOG.isDebugEnabled();
-    
-    /** a map of SchemaObject looked up by name */
-    protected Map<String, T> byName;
-    
-    /** The SchemaObject type */
-    protected SchemaObjectType type;
-
-    /** the global OID Registry */
-    protected OidRegistry oidRegistry;
-    
-
-    /**
-     * Creates a new SchemaObjectRegistry instance.
-     */
-    protected SchemaObjectRegistry( SchemaObjectType schemaObjectType, OidRegistry oidRegistry )
-    {
-        byName = new HashMap<String, T>();
-        type = schemaObjectType;
-        this.oidRegistry = oidRegistry;
-    }
-    
-    
     /**
      * Checks to see if an SchemaObject exists in the registry, by its
      * OID or name. 
@@ -77,15 +44,7 @@
      * @return true if a SchemaObject definition exists for the oid, false
      * otherwise
      */
-    public boolean contains( String oid )
-    {
-        if ( !byName.containsKey( oid ) )
-        {
-            return byName.containsKey( StringTools.toLowerCase( oid ) );
-        }
-        
-        return true;
-    }
+    boolean contains( String oid );
     
     
     /**
@@ -95,26 +54,7 @@
      * @return the schema name
      * @throws NamingException if the schema object does not exist
      */
-    public String getSchemaName( String oid ) throws NamingException
-    {
-        if ( ! OID.isOID( oid ) )
-        {
-            String msg = "Looks like the arg is not a numeric OID";
-            LOG.warn( msg );
-            throw new NamingException( msg );
-        }
-        
-        SchemaObject schemaObject = byName.get( oid );
-
-        if ( schemaObject != null )
-        {
-            return schemaObject.getSchemaName();
-        }
-        
-        String msg = "OID " + oid + " not found in oid to schema name map!";
-        LOG.warn( msg );
-        throw new NamingException( msg );
-    }
+    String getSchemaName( String oid ) throws NamingException;
 
     
     /**
@@ -122,24 +62,9 @@
      *
      * @param originalSchemaName The original Schema name
      * @param newSchemaName The new Schema name
+     * @throws NamingException if the schema object does not exist
      */
-    public void renameSchema( String originalSchemaName, String newSchemaName )
-    {
-        // Loop on all the SchemaObjects stored and remove those associated
-        // with the give schemaName
-        for ( T schemaObject : this )
-        {
-            if ( originalSchemaName.equalsIgnoreCase( schemaObject.getSchemaName() ) )
-            {
-                schemaObject.setSchemaName( newSchemaName );
-                
-                if ( DEBUG )
-                {
-                    LOG.debug( "Renamed {} schemaName to {}", schemaObject, newSchemaName );
-                }
-            }
-        }
-    }
+    void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException;
     
     
     /**
@@ -147,10 +72,7 @@
      *
      * @return an Iterator of homogeneous schema objects
      */
-    public Iterator<T> iterator()
-    {
-        return byName.values().iterator();
-    }
+    Iterator<T> iterator();
 
     
     /**
@@ -158,10 +80,7 @@
      *
      * @return an Iterator of OIDs
      */
-    public Iterator<String> oidsIterator()
-    {
-        return byName.keySet().iterator();
-    }
+    Iterator<String> oidsIterator();
 
     
     /**
@@ -171,35 +90,7 @@
      * @return the SchemaObject instance for the id
      * @throws NamingException if the SchemaObject does not exist
      */
-    public T lookup( String oid ) throws NamingException
-    {
-        if ( oid == null )
-        {
-            return null;
-        }
-        
-        T schemaObject = byName.get( oid );
-        
-        if ( schemaObject == null )
-        {
-            // let's try with trimming and lowercasing now
-            schemaObject = byName.get( StringTools.trim( StringTools.toLowerCase( oid ) ) );
-        }
-
-        if ( schemaObject == null )
-        {
-            String msg = type.name() + " for OID " + oid + " does not exist!";
-            LOG.debug( msg );
-            throw new NamingException( msg );
-        }
-
-        if ( DEBUG )
-        {
-    		LOG.debug( "Found {} with oid: {}", schemaObject, oid );
-        }
-        
-        return schemaObject;
-    }
+    T lookup( String oid ) throws NamingException;
     
     
     /**
@@ -209,39 +100,7 @@
      * @throws NamingException if the SchemaObject is already registered or
      * the registration operation is not supported
      */
-    public void register( T schemaObject ) throws NamingException
-    {
-        String oid = schemaObject.getOid();
-        
-        if ( schemaObject.isEnabled() )
-        {
-            if ( byName.containsKey( oid ) )
-            {
-                String msg = type.name() + " with OID " + oid + " already registered!";
-                LOG.warn( msg );
-                throw new NamingException( msg );
-            }
-    
-            byName.put( oid, schemaObject );
-            
-            /*
-             * add the aliases/names to the name map along with their toLowerCase
-             * versions of the name: this is used to make sure name lookups work
-             */
-            for ( String name : schemaObject.getNames() )
-            {
-            	byName.put( StringTools.trim( StringTools.toLowerCase( name ) ), schemaObject );
-            }
-        }
-        
-        if ( LOG.isDebugEnabled() )
-        {
-            LOG.debug( "registered " + schemaObject.getName() + " for OID {}", oid );
-        }
-        
-        // And register the oid -> schemaObject relation
-        oidRegistry.register( schemaObject );
-    }
+    void register( T schemaObject ) throws NamingException;
 
 
     /**
@@ -251,32 +110,7 @@
      * @param numericOid the numeric identifier
      * @throws NamingException if the numeric identifier is invalid
      */
-    public T unregister( String numericOid ) throws NamingException
-    {
-        if ( !OID.isOID( numericOid ) )
-        {
-            String msg = "OID " + numericOid + " is not a numeric OID";
-            LOG.error( msg );
-            throw new NamingException( msg );
-        }
-
-        T schemaObject = byName.remove( numericOid );
-        
-        for ( String name : schemaObject.getNames() )
-        {
-            byName.remove( name );
-        }
-        
-        // And remove the SchemaObject from the oidRegistry
-        oidRegistry.unregister( numericOid );
-        
-        if ( DEBUG )
-        {
-            LOG.debug( "Removed {} with oid {} from the registry", schemaObject, numericOid );
-        }
-        
-        return schemaObject;
-    }
+    T unregister( String numericOid ) throws NamingException;
     
     
     /**
@@ -285,30 +119,7 @@
      * 
      * @param schemaName the name of the schema whose SchemaObjects will be removed from
      */
-    public void unregisterSchemaElements( String schemaName ) throws NamingException
-    {
-        if ( schemaName == null )
-        {
-            return;
-        }
-        
-        // Loop on all the SchemaObjects stored and remove those associated
-        // with the give schemaName
-        for ( T schemaObject : this )
-        {
-            if ( schemaName.equalsIgnoreCase( schemaObject.getSchemaName() ) )
-            {
-                String oid = schemaObject.getOid();
-                SchemaObject removed = unregister( oid );
-                oidRegistry.unregister( oid );
-                
-                if ( DEBUG )
-                {
-                    LOG.debug( "Removed {} with oid {} from the registry", removed, oid );
-                }
-            }
-        }
-    }
+    void unregisterSchemaElements( String schemaName ) throws NamingException;
     
     
     /**
@@ -322,27 +133,7 @@
      * @return The numericOID associated with this name
      * @throws NamingException If the OID can't be found
      */
-    public String getOidByName( String name ) throws NamingException
-    {
-        T schemaObject = byName.get( name );
-
-    	if ( schemaObject == null )
-    	{
-    		// last resort before giving up check with lower cased version
-        	String lowerCased = name.toLowerCase();
-    		
-        	schemaObject = byName.get( lowerCased );
-        	
-        	// ok this name is not for a schema object in the registry
-    		if ( schemaObject == null )
-    		{
-    	        throw new NamingException( "Can't find an OID for the name " + name );
-    		}
-    	}
-    	
-    	// we found the schema object by key on the first lookup attempt
-        return schemaObject.getOid();
-    }
+    String getOidByName( String name ) throws NamingException;
 
 
     /**
@@ -355,48 +146,23 @@
      * @return true if the name or it's cannonical form is mapped to a 
      * schemaObject in this registry, false otherwise.
      */
-    public boolean containsName( String name )
-    {
-    	if ( ! byName.containsKey( name ) )
-    	{
-    		// last resort before giving up check with lower cased version
-        	return byName.containsKey( name.toLowerCase() );
-    	}
-
-        return true;
-    }
+    boolean containsName( String name );
     
 
     /**
-     * Clone a SchemaObjectRegistry
-     */
-    protected SchemaObjectRegistry<T> clone() throws CloneNotSupportedException
-    {
-        // Clone the base object
-        SchemaObjectRegistry<T> clone = (SchemaObjectRegistry<T>)super.clone();
-        
-        // Clone the byName Map
-        clone.byName = new HashMap<String, T>();
-        
-        for ( String key : byName.keySet() )
-        {
-            // Clone each SchemaObject
-            SchemaObject value = byName.get( key );
-            clone.byName.put( key, (T)value.clone() );
-        }
-        
-        // Clone the oidRegistry
-        clone.oidRegistry = oidRegistry.clone();
-        
-        return clone;
-    }
+     * Clone a DefaultSchemaObjectRegistry
+     */
+    SchemaObjectRegistry<T> clone() throws CloneNotSupportedException;
 
 
     /**
      * @return the type
      */
-    public SchemaObjectType getType()
-    {
-        return type;
-    }
+    SchemaObjectType getType();
+
+
+    /**
+     *  @return The number of AttributeType stored
+     */
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SyntaxCheckerRegistry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SyntaxCheckerRegistry.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SyntaxCheckerRegistry.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/SyntaxCheckerRegistry.java Sat Nov  7 07:57:34 2009
@@ -22,13 +22,7 @@
 
 import javax.naming.NamingException;
 
-import org.apache.directory.shared.asn1.primitives.OID;
-import org.apache.directory.shared.ldap.schema.SchemaObject;
-import org.apache.directory.shared.ldap.schema.SchemaObjectType;
 import org.apache.directory.shared.ldap.schema.SyntaxChecker;
-import org.apache.directory.shared.ldap.util.StringTools;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 
 /**
@@ -37,25 +31,9 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class SyntaxCheckerRegistry extends  SchemaObjectRegistry<SyntaxChecker>
+public interface SyntaxCheckerRegistry extends SchemaObjectRegistry<SyntaxChecker>,
+    Iterable<SyntaxChecker>, Cloneable
 {
-    /** static class logger */
-    private static final Logger LOG = LoggerFactory.getLogger( SyntaxCheckerRegistry.class );
-
-    /** A speedup for debug */
-    private static final boolean DEBUG = LOG.isDebugEnabled();
-    
-    /**
-     * Creates a new default SyntaxCheckerRegistry instance.
-     * 
-     * @param oidRegistry The global OID registry 
-     */
-    public SyntaxCheckerRegistry( OidRegistry oidRegistry )
-    {
-        super( SchemaObjectType.SYNTAX_CHECKER, oidRegistry );
-    }
-    
-    
     /**
      * Registers a new SyntaxChecker with this registry.
      *
@@ -63,33 +41,7 @@
      * @throws NamingException if the SyntaxChecker is already registered or
      * the registration operation is not supported
      */
-    public void register( SyntaxChecker syntaxChecker ) throws NamingException
-    {
-        String oid = syntaxChecker.getOid();
-        
-        if ( byName.containsKey( oid ) )
-        {
-            String msg = type.name() + " with OID " + oid + " already registered!";
-            LOG.warn( msg );
-            //throw new NamingException( msg );
-        }
-
-        byName.put( oid, syntaxChecker );
-        
-        /*
-         * add the aliases/names to the name map along with their toLowerCase
-         * versions of the name: this is used to make sure name lookups work
-         */
-        for ( String name : syntaxChecker.getNames() )
-        {
-            byName.put( StringTools.trim( StringTools.toLowerCase( name ) ), syntaxChecker );
-        }
-        
-        if ( LOG.isDebugEnabled() )
-        {
-            LOG.debug( "registered " + syntaxChecker.getName() + " for OID {}", oid );
-        }
-    }
+    void register( SyntaxChecker syntaxChecker ) throws NamingException;
 
 
     /**
@@ -99,29 +51,7 @@
      * @param numericOid the numeric identifier
      * @throws NamingException if the numeric identifier is invalid
      */
-    public SyntaxChecker unregister( String numericOid ) throws NamingException
-    {
-        if ( !OID.isOID( numericOid ) )
-        {
-            String msg = "OID " + numericOid + " is not a numeric OID";
-            LOG.error( msg );
-            throw new NamingException( msg );
-        }
-
-        SyntaxChecker syntaxChecker = byName.remove( numericOid );
-        
-        for ( String name : syntaxChecker.getNames() )
-        {
-            byName.remove( name );
-        }
-        
-        if ( DEBUG )
-        {
-            LOG.debug( "Removed {} with oid {} from the registry", syntaxChecker, numericOid );
-        }
-        
-        return syntaxChecker;
-    }
+    SyntaxChecker unregister( String numericOid ) throws NamingException;
     
     
     /**
@@ -130,47 +60,17 @@
      * 
      * @param schemaName the name of the schema whose SyntaxCheckers will be removed from
      */
-    public void unregisterSchemaElements( String schemaName ) throws NamingException
-    {
-        if ( schemaName == null )
-        {
-            return;
-        }
-        
-        // Loop on all the SchemaObjects stored and remove those associated
-        // with the give schemaName
-        for ( SyntaxChecker syntaxChecker : this )
-        {
-            if ( schemaName.equalsIgnoreCase( syntaxChecker.getSchemaName() ) )
-            {
-                String oid = syntaxChecker.getOid();
-                SchemaObject removed = unregister( oid );
-                
-                if ( DEBUG )
-                {
-                    LOG.debug( "Removed {} with oid {} from the registry", removed, oid );
-                }
-            }
-        }
-    }
+    void unregisterSchemaElements( String schemaName ) throws NamingException;
     
     
     /**
      * Clone the SyntaxCheckerRegistry
      */
-    public SyntaxCheckerRegistry clone() throws CloneNotSupportedException
-    {
-        SyntaxCheckerRegistry clone = (SyntaxCheckerRegistry)super.clone();
-        
-        return clone;
-    }
+    SyntaxCheckerRegistry clone() throws CloneNotSupportedException;
     
     
     /**
      *  @return The number of SyntaxCheckers stored
      */
-    public int size()
-    {
-        return byName.values().size();
-    }
+    int size();
 }

Modified: directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistryTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistryTest.java?rev=833647&r1=833646&r2=833647&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistryTest.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistryTest.java Sat Nov  7 07:57:34 2009
@@ -27,8 +27,6 @@
 import javax.naming.NamingException;
 
 import org.apache.directory.shared.ldap.schema.AttributeType;
-import org.apache.directory.shared.ldap.schema.registries.AttributeTypeRegistry;
-import org.apache.directory.shared.ldap.schema.registries.OidRegistry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -46,7 +44,7 @@
     @Before
     public void setup()
     {
-        atRegistry = new AttributeTypeRegistry( new OidRegistry() );
+        atRegistry = new DefaultAttributeTypeRegistry( new OidRegistry() );
     }
     
     
@@ -114,7 +112,7 @@
         atRegistry.register( at1 );
         
         // Clone the ATRegistry
-        AttributeTypeRegistry clone = atRegistry.clone();
+        AttributeTypeRegistry clone = (AttributeTypeRegistry)atRegistry.clone();
         
         assertEquals( at0, clone.lookup( "1.1" ) );
         assertEquals( at1, clone.lookup( "1.2" ) );