Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 27254 invoked from network); 7 Dec 2009 14:07:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 Dec 2009 14:07:26 -0000 Received: (qmail 70282 invoked by uid 500); 7 Dec 2009 14:07:26 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 70217 invoked by uid 500); 7 Dec 2009 14:07:25 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 70201 invoked by uid 99); 7 Dec 2009 14:07:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Dec 2009 14:07:25 +0000 X-ASF-Spam-Status: No, hits=-4.0 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Dec 2009 14:07:19 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 3EA8C23889ED; Mon, 7 Dec 2009 14:06:59 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r887926 [3/4] - in /directory: apacheds/branches/apacheds-schema/core-api/src/main/java/org/apache/directory/server/core/schema/ apacheds/branches/apacheds-schema/core-api/src/main/java/org/apache/directory/server/core/schema/registries/syn... Date: Mon, 07 Dec 2009 14:06:57 -0000 To: commits@directory.apache.org From: elecharny@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20091207140659.3EA8C23889ED@eris.apache.org> Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameForm.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameForm.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameForm.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameForm.java Mon Dec 7 14:06:56 2009 @@ -95,17 +95,17 @@ * @author Apache Directory Project * @version $Rev$ */ -public class NameForm extends SchemaObject +public class NameForm extends AbstractSchemaObject { /** The serialVersionUID */ private static final long serialVersionUID = 1L; /** The structural object class OID this rule applies to */ private String structuralObjectClassOid; - + /** The structural object class this rule applies to */ private ObjectClass structuralObjectClass; - + /** The set of required attribute OIDs for this name form */ private List mustAttributeTypeOids; @@ -114,10 +114,10 @@ /** The set of allowed attribute OIDs for this name form */ private List mayAttributeTypeOids; - + /** The set of allowed AttributeTypes for this name form */ private List mayAttributeTypes; - + /** * Creates a new instance of MatchingRule. @@ -128,33 +128,33 @@ public NameForm( String oid ) { super( SchemaObjectType.NAME_FORM, oid ); - + mustAttributeTypeOids = new ArrayList(); mayAttributeTypeOids = new ArrayList(); mustAttributeTypes = new ArrayList(); mayAttributeTypes = new ArrayList(); } - - + + /** - * Inject the registries into this Object, updating the references to + * Inject the NameForm into the registries, updating the references to * other SchemaObject * * @param registries The Registries */ - public void setRegistries( Registries registries ) throws NamingException + public void addToRegistries( Registries registries ) throws NamingException { if ( registries != null ) { AttributeTypeRegistry atRegistry = registries.getAttributeTypeRegistry(); structuralObjectClass = registries.getObjectClassRegistry().lookup( structuralObjectClassOid ); - + if ( mayAttributeTypeOids != null ) { mayAttributeTypes = new ArrayList( mayAttributeTypeOids.size() ); - + for ( String oid : mayAttributeTypeOids ) { mayAttributeTypes.add( atRegistry.lookup( oid ) ); @@ -164,7 +164,7 @@ if ( mustAttributeTypeOids != null ) { mustAttributeTypes = new ArrayList( mustAttributeTypeOids.size() ); - + for ( String oid : mustAttributeTypeOids ) { mustAttributeTypes.add( atRegistry.lookup( oid ) ); @@ -268,7 +268,7 @@ } } - + /** * Sets the list of required AttributeTypes * @@ -279,10 +279,10 @@ if ( !isReadOnly ) { this.mustAttributeTypes = mustAttributeTypes; - + // update the OIDS now mustAttributeTypeOids.clear(); - + for ( AttributeType may : mustAttributeTypes ) { mustAttributeTypeOids.add( may.getOid() ); @@ -290,7 +290,7 @@ } } - + /** * Add a required AttributeType OID * @@ -314,15 +314,15 @@ { if ( !isReadOnly ) { - if ( ! mustAttributeTypeOids.contains( attributeType.getOid() ) ) + if ( !mustAttributeTypeOids.contains( attributeType.getOid() ) ) { mustAttributeTypes.add( attributeType ); mustAttributeTypeOids.add( attributeType.getOid() ); } } } - - + + /** * Gets all the AttributeTypes OIDs of the attribute this NameForm specifies as * being usable without requirement in the given objectClass for naming: as @@ -336,7 +336,7 @@ return Collections.unmodifiableList( mayAttributeTypeOids ); } - + /** * Gets all the AttributeTypes of the attribute this NameForm specifies as * being useable without requirement in the given objectClass for naming: as @@ -348,8 +348,8 @@ { return Collections.unmodifiableList( mayAttributeTypes ); } - - + + /** * Sets the list of allowed AttributeTypes * @@ -362,8 +362,8 @@ this.mayAttributeTypeOids = mayAttributeTypeOids; } } - - + + /** * Sets the list of allowed AttributeTypes * @@ -374,18 +374,18 @@ if ( !isReadOnly ) { this.mayAttributeTypes = mayAttributeTypes; - + // update the OIDS now mayAttributeTypeOids.clear(); - + for ( AttributeType may : mayAttributeTypes ) { mayAttributeTypeOids.add( may.getOid() ); } } } - - + + /** * Add an allowed AttributeType * @@ -409,7 +409,7 @@ { if ( !isReadOnly ) { - if ( ! mayAttributeTypeOids.contains( attributeType.getOid() ) ) + if ( !mayAttributeTypeOids.contains( attributeType.getOid() ) ) { mayAttributeTypes.add( attributeType ); mayAttributeTypeOids.add( attributeType.getOid() ); @@ -425,8 +425,8 @@ { return objectType + " " + DescriptionUtils.getDescription( this ); } - - + + /** * Copy a NameForm */ @@ -436,39 +436,39 @@ // Copy the SchemaObject common data copy.copy( this ); - + // Copy the MAY AttributeTypes OIDs copy.mayAttributeTypeOids = new ArrayList(); - + for ( String oid : mayAttributeTypeOids ) { copy.mayAttributeTypeOids.add( oid ); } - + // Copy the MAY AttributeTypes (will be empty) copy.mayAttributeTypes = new ArrayList(); - + // Copy the MUST AttributeTypes OIDs copy.mustAttributeTypeOids = new ArrayList(); - + for ( String oid : mustAttributeTypeOids ) { copy.mustAttributeTypeOids.add( oid ); } - + // Copy the MUST AttributeTypes ( will be empty ) copy.mustAttributeTypes = new ArrayList(); // Copy the Structural ObjectClass OID copy.structuralObjectClassOid = structuralObjectClassOid; - + // All the references to other Registries object are set to null. copy.structuralObjectClass = null; - + return copy; } - - + + /** * @see Object#equals(Object) */ @@ -483,14 +483,14 @@ { return false; } - - NameForm that = (NameForm)o; - + + NameForm that = ( NameForm ) o; + // TODO : complete the checks return true; } - - + + /** * {@inheritDoc} */ @@ -498,7 +498,7 @@ { // Clear the common elements super.clear(); - + // Clear the references mayAttributeTypes.clear(); mayAttributeTypeOids.clear(); Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java Mon Dec 7 14:06:56 2009 @@ -36,6 +36,7 @@ /** The serialversionUID */ private static final long serialVersionUID = 1L; + /** * The Normalizer base constructor. We use it's MR OID to * initialize the SchemaObject instance @@ -58,7 +59,7 @@ } - /** + /** * Gets the normalized value. * * @param value the value to normalize. It must *not* be null ! @@ -67,6 +68,7 @@ */ public abstract Value normalize( Value value ) throws NamingException; + /** * Gets the normalized value. * @@ -75,8 +77,8 @@ * @throws NamingException if an error results during normalization */ public abstract String normalize( String value ) throws NamingException; - - + + /** * Store the SchemaManager in this instance. It may be necessary for some * normalizer which needs to have access to the oidNormalizer Map. @@ -87,8 +89,8 @@ { // Do nothing (general case). } - - + + /** * @see Object#equals() */ @@ -101,7 +103,7 @@ return o instanceof Normalizer; } - + /** * @see Object#toString() Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClass.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClass.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClass.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClass.java Mon Dec 7 14:06:56 2009 @@ -74,14 +74,14 @@ * @author Apache Directory Project * @version $Rev$ */ -public class ObjectClass extends SchemaObject +public class ObjectClass extends AbstractSchemaObject { /** The serialVersionUID */ private static final long serialVersionUID = 1L; /** The ObjectClass type : ABSTRACT, AUXILIARY or STRUCTURAL */ private ObjectClassTypeEnum objectClassType = ObjectClassTypeEnum.STRUCTURAL; - + /** The ObjectClass superior OIDs */ private List superiorOids; @@ -100,14 +100,15 @@ /** The list of required AttributeTypes */ private List mustAttributeTypes; + /** * Creates a new instance of MatchingRuleUseDescription * @param oid the OID for this objectClass */ public ObjectClass( String oid ) { - super( SchemaObjectType.OBJECT_CLASS, oid ); - + super( SchemaObjectType.OBJECT_CLASS, oid ); + mayAttributeTypeOids = new ArrayList(); mustAttributeTypeOids = new ArrayList(); superiorOids = new ArrayList(); @@ -117,27 +118,27 @@ superiors = new ArrayList(); objectClassType = ObjectClassTypeEnum.STRUCTURAL; } - - + + /** - * Inject the registries into this Object, updating the references to + * Inject the ObjectClass into the registries, updating the references to * other SchemaObject * * @param registries The Registries * @throws Exception on failure * */ - public void applyRegistries( List errors, Registries registries ) throws NamingException + public void addToRegistries( List errors, Registries registries ) throws NamingException { if ( registries != null ) { AttributeTypeRegistry atRegistry = registries.getAttributeTypeRegistry(); ObjectClassRegistry ocRegistry = registries.getObjectClassRegistry(); - + if ( superiorOids != null ) { superiors = new ArrayList( superiorOids.size() ); - + for ( String superiorName : superiorOids ) { superiors.add( ocRegistry.lookup( ocRegistry.getOidByName( superiorName ) ) ); @@ -147,7 +148,7 @@ if ( mayAttributeTypeOids != null ) { mayAttributeTypes = new ArrayList( mayAttributeTypeOids.size() ); - + for ( String mayAttributeTypeName : mayAttributeTypeOids ) { mayAttributeTypes.add( atRegistry.lookup( atRegistry.getOidByName( mayAttributeTypeName ) ) ); @@ -157,13 +158,13 @@ if ( mustAttributeTypeOids != null ) { mustAttributeTypes = new ArrayList( mustAttributeTypeOids.size() ); - + for ( String mustAttributeTypeName : mustAttributeTypeOids ) { mustAttributeTypes.add( atRegistry.lookup( atRegistry.getOidByName( mustAttributeTypeName ) ) ); } } - + /** * Add the OC references (using and usedBy) : * OC -> AT (MAY and MUST) @@ -178,7 +179,7 @@ { registries.addReference( this, mustAttributeType ); } - + for ( ObjectClass superiorObjectClass : superiors ) { registries.addReference( this, superiorObjectClass ); @@ -186,7 +187,7 @@ } } - + /** * @return the mayAttributeTypeOids */ @@ -204,7 +205,7 @@ return mayAttributeTypes; } - + /** * Add an allowed AttributeType * @@ -228,7 +229,7 @@ { if ( !isReadOnly ) { - if ( ! mayAttributeTypeOids.contains( attributeType.getOid() ) ) + if ( !mayAttributeTypeOids.contains( attributeType.getOid() ) ) { mayAttributeTypes.add( attributeType ); mayAttributeTypeOids.add( attributeType.getOid() ); @@ -236,7 +237,7 @@ } } - + /** * @param mayAttributeTypeOids the mayAttributeTypeOids to set */ @@ -247,8 +248,8 @@ this.mayAttributeTypeOids = mayAttributeTypeOids; } } - - + + /** * Sets the list of allowed AttributeTypes * @@ -259,18 +260,18 @@ if ( !isReadOnly ) { this.mayAttributeTypes = mayAttributeTypes; - + // update the OIDS now mayAttributeTypeOids.clear(); - + for ( AttributeType may : mayAttributeTypes ) { mayAttributeTypeOids.add( may.getOid() ); } } } - - + + /** * Update the associated MAY AttributeType, even if the SchemaObject is readOnly * @@ -280,10 +281,10 @@ { this.mayAttributeTypes.clear(); this.mayAttributeTypes.addAll( mayAttributeTypes ); - + // update the OIDS now mayAttributeTypeOids.clear(); - + for ( AttributeType may : mayAttributeTypes ) { mayAttributeTypeOids.add( may.getOid() ); @@ -308,7 +309,7 @@ return mustAttributeTypes; } - + /** * Add a required AttributeType OID * @@ -332,7 +333,7 @@ { if ( !isReadOnly ) { - if ( ! mustAttributeTypeOids.contains( attributeType.getOid() ) ) + if ( !mustAttributeTypeOids.contains( attributeType.getOid() ) ) { mustAttributeTypes.add( attributeType ); mustAttributeTypeOids.add( attributeType.getOid() ); @@ -352,7 +353,7 @@ } } - + /** * Sets the list of required AttributeTypes * @@ -363,18 +364,18 @@ if ( !isReadOnly ) { this.mustAttributeTypes = mustAttributeTypes; - + // update the OIDS now mustAttributeTypeOids.clear(); - + for ( AttributeType may : mustAttributeTypes ) { mustAttributeTypeOids.add( may.getOid() ); } } } - - + + /** * Update the associated MUST AttributeType, even if the SchemaObject is readOnly * @@ -384,17 +385,17 @@ { this.mustAttributeTypes.clear(); this.mustAttributeTypes.addAll( mustAttributeTypes ); - + // update the OIDS now mustAttributeTypeOids.clear(); - + for ( AttributeType must : mustAttributeTypes ) { mustAttributeTypeOids.add( must.getOid() ); } } - + /** * Gets the superclasses of this ObjectClass. * @@ -406,7 +407,7 @@ return superiors; } - + /** * Gets the superclasses OIDsof this ObjectClass. * @@ -458,7 +459,7 @@ } } - + /** * Sets the superior object classes * @@ -469,10 +470,10 @@ if ( !isReadOnly ) { this.superiors = superiors; - + // update the OIDS now superiorOids.clear(); - + for ( ObjectClass oc : superiors ) { superiorOids.add( oc.getOid() ); @@ -480,7 +481,7 @@ } } - + /** * Update the associated SUPERIORS ObjectClasses, even if the SchemaObject is readOnly * @@ -490,17 +491,17 @@ { this.superiors.clear(); this.superiors.addAll( superiors ); - + // update the OIDS now superiorOids.clear(); - + for ( ObjectClass oc : superiors ) { superiorOids.add( oc.getOid() ); } } - + /** * Sets the superior object class OIDs * @@ -513,7 +514,7 @@ this.superiorOids = superiorOids; } } - + /** * Gets the type of this ObjectClass as a type safe enum. @@ -524,8 +525,8 @@ { return objectClassType; } - - + + /** * Set the ObjectClass type, one of ABSTRACT, AUXILIARY or STRUCTURAL. * @@ -538,8 +539,8 @@ this.objectClassType = objectClassType; } } - - + + /** * Tells if the current ObjectClass is STRUCTURAL * @@ -549,7 +550,7 @@ { return objectClassType == ObjectClassTypeEnum.STRUCTURAL; } - + /** * Tells if the current ObjectClass is ABSTRACT @@ -560,7 +561,7 @@ { return objectClassType == ObjectClassTypeEnum.ABSTRACT; } - + /** * Tells if the current ObjectClass is AUXILIARY @@ -581,57 +582,57 @@ return objectType + " " + DescriptionUtils.getDescription( this ); } - + /** * Copy an ObjectClass */ public ObjectClass copy() { ObjectClass copy = new ObjectClass( oid ); - + // Copy the SchemaObject common data copy.copy( this ); - + // Copy the ObjectClass type copy.objectClassType = objectClassType; - + // Copy the Superiors ObjectClasses OIDs copy.superiorOids = new ArrayList(); - + for ( String oid : superiorOids ) { copy.superiorOids.add( oid ); } - + // Copy the Superiors ObjectClasses ( will be empty ) copy.superiors = new ArrayList(); - + // Copy the MAY AttributeTypes OIDs copy.mayAttributeTypeOids = new ArrayList(); - + for ( String oid : mayAttributeTypeOids ) { copy.mayAttributeTypeOids.add( oid ); } - + // Copy the MAY AttributeTypes ( will be empty ) copy.mayAttributeTypes = new ArrayList(); - + // Copy the MUST AttributeTypes OIDs copy.mustAttributeTypeOids = new ArrayList(); - + for ( String oid : mustAttributeTypeOids ) { copy.mustAttributeTypeOids.add( oid ); } - + // Copy the MUST AttributeTypes ( will be empty ) copy.mustAttributeTypes = new ArrayList(); - + return copy; } - - + + /** * @see Object#equals(Object) */ @@ -646,21 +647,21 @@ { return false; } - - ObjectClass that = (ObjectClass)o; - + + ObjectClass that = ( ObjectClass ) o; + // The ObjectClassType if ( objectClassType != that.objectClassType ) { return false; } - + // The Superiors OIDs if ( superiorOids.size() != that.superiorOids.size() ) { return false; } - + // One way for ( String oid : superiorOids ) { @@ -684,7 +685,7 @@ { return false; } - + // One way for ( ObjectClass oid : superiors ) { @@ -702,13 +703,13 @@ return false; } } - + // The MAY OIDs if ( mayAttributeTypeOids.size() != that.mayAttributeTypeOids.size() ) { return false; } - + // One way for ( String oid : mayAttributeTypeOids ) { @@ -732,7 +733,7 @@ { return false; } - + // One way for ( AttributeType oid : mayAttributeTypes ) { @@ -756,7 +757,7 @@ { return false; } - + // One way for ( String oid : mustAttributeTypeOids ) { @@ -780,7 +781,7 @@ { return false; } - + // One way for ( AttributeType oid : mustAttributeTypes ) { @@ -801,8 +802,8 @@ return true; } - - + + /** * {@inheritDoc} */ @@ -810,7 +811,7 @@ { // Clear the common elements super.clear(); - + // Clear the references mayAttributeTypes.clear(); mayAttributeTypeOids.clear(); Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java Mon Dec 7 14:06:56 2009 @@ -565,12 +565,17 @@ /** - * Removes the registered SchemaObject from the registries - * - * @param schemaObject the schemaObject to unregister - * @throws NamingException if the schemaObject is invalid + * Unregisters a new SchemaObject. The registries will be updated only if it's + * consistent after this deletion, if the SchemaManager is in Strict mode. + * If something went wrong during this operation, the + * SchemaManager.getErrors() will give the list of generated errors. + * + * @param schemaObject the SchemaObject to unregister + * @return true if the deletion has been made, false if there were some errors + * @throws Exception if the SchemaObject is not registered or + * the deletion operation is not supported */ - SchemaObject unregister( SchemaObject schemaObject ) throws NamingException; + boolean delete( SchemaObject schemaObject ) throws Exception; /** Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java Mon Dec 7 14:06:56 2009 @@ -19,19 +19,14 @@ */ package org.apache.directory.shared.ldap.schema; + import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import javax.naming.NamingException; import org.apache.directory.shared.ldap.schema.registries.Registries; -import org.apache.directory.shared.ldap.util.StringTools; /** @@ -71,70 +66,8 @@ * @author Apache Directory Project * @version $Rev$ */ -public abstract class SchemaObject implements Serializable +public interface SchemaObject extends Serializable { - /** The serialVersionUID */ - public static final long serialVersionUID = 1L; - - /** The SchemaObject numeric OID */ - protected String oid; - - /** The optional names for this SchemaObject */ - protected List names; - - /** Whether or not this SchemaObject is enabled */ - protected boolean isEnabled = true; - - /** Whether or not this SchemaObject can be modified */ - protected boolean isReadOnly = false; - - /** Whether or not this SchemaObject is obsolete */ - protected boolean isObsolete = false; - - /** A short description of this SchemaObject */ - protected String description; - - /** The SchemaObject specification */ - protected String specification; - - /** The name of the schema this object is associated with */ - protected String schemaName; - - /** The SchemaObjectType */ - protected SchemaObjectType objectType; - - /** A map containing the list of supported extensions */ - protected Map> extensions; - - /** - * A constructor for a SchemaObject instance. It must be - * invoked by the inherited class. - * - * @param objectType The SchemaObjectType to create - */ - protected SchemaObject( SchemaObjectType objectType, String oid ) - { - this.objectType = objectType; - this.oid = oid; - extensions = new HashMap>(); - names = new ArrayList(); - } - - - /** - * Constructor used when a generic reusable SchemaObject is assigned an - * OID after being instantiated. - * - * @param objectType The SchemaObjectType to create - */ - protected SchemaObject( SchemaObjectType objectType ) - { - this.objectType = objectType; - extensions = new HashMap>(); - names = new ArrayList(); - } - - /** * Gets usually what is the numeric object identifier assigned to this * SchemaObject. All schema objects except for MatchingRuleUses have an OID @@ -145,40 +78,24 @@ * @return an OID for this SchemaObject or its MatchingRule if this * SchemaObject is a MatchingRuleUse object */ - public String getOid() - { - return oid; - } - - + String getOid(); + + /** * A special method used when renaming an SchemaObject: we may have to * change it's OID * @param oid The new OID */ - public void setOid( String oid ) - { - this.oid = oid; - } - - + void setOid( String oid ); + + /** * Gets short names for this SchemaObject if any exists for it, otherwise, * returns an empty list. * * @return the names for this SchemaObject */ - public List getNames() - { - if ( names != null ) - { - return Collections.unmodifiableList( names ); - } - else - { - return Collections.emptyList(); - } - } + List getNames(); /** @@ -188,66 +105,37 @@ * @return the first of the names for this SchemaObject or the oid * if one does not exist */ - public String getName() - { - if ( ( names != null ) && ( names.size() != 0 ) ) - { - return names.get( 0 ); - } - else - { - return oid; - } - } + String getName(); + + + /** + * Inject this SchemaObject into the given registries, updating the references to + * other SchemaObject + * + * @param errors The errors we got + * @param registries The Registries + */ + void addToRegistries( List errors, Registries registries ) throws NamingException; + - /** - * Inject the registries into this Object, updating the references to + * Remove this SchemaObject from the given registries, updating the references to * other SchemaObject * * @param errors The errors we got * @param registries The Registries */ - public void applyRegistries( List errors, Registries registries ) throws NamingException - { - // do nothing - } - - + void removeFromRegistries( List errors, Registries registries ) throws NamingException; + + /** * Add a new name to the list of names for this SchemaObject. The name * is lowercased and trimmed. * * @param names The names to add */ - public void addName( String... names ) - { - if ( ! isReadOnly ) - { - // We must avoid duplicated names, as names are case insensitive - Set lowerNames = new HashSet(); - - // Fills a set with all the existing names - for ( String name : this.names ) - { - lowerNames.add( StringTools.toLowerCase( name ) ); - } - - for ( String name : names ) - { - if ( name != null ) - { - String lowerName = StringTools.toLowerCase( name ); - // Check that the lower cased names is not already present - if ( ! lowerNames.contains( lowerName ) ) - { - this.names.add( name ); - lowerNames.add( lowerName ); - } - } - } - } - } + void addName( String... names ); + /** * Sets the list of names for this SchemaObject. The names are @@ -255,78 +143,41 @@ * * @param names The list of names. Can be empty */ - public void setNames( List names ) - { - if ( names == null ) - { - return; - } - - if ( ! isReadOnly ) - { - this.names = new ArrayList( names.size() ); - - for ( String name:names ) - { - if ( name != null ) - { - this.names.add( name ); - } - } - } - } + void setNames( List names ); + - /** * Gets a short description about this SchemaObject. * * @return a short description about this SchemaObject */ - public String getDescription() - { - return description; - } - - + public String getDescription(); + + /** * Sets the SchemaObject's description * * @param description The SchemaObject's description */ - public void setDescription( String description ) - { - if ( !isReadOnly ) - { - this.description = description; - } - } + public void setDescription( String description ); + - /** * Gets the SchemaObject specification. * * @return the SchemaObject specification */ - public String getSpecification() - { - return specification; - } - - + public String getSpecification(); + + /** * Sets the SchemaObject's specification * * @param specification The SchemaObject's specification */ - public void setSpecification( String specification ) - { - if ( !isReadOnly ) - { - this.specification = specification; - } - } - - + void setSpecification( String specification ); + + /** * Tells if this SchemaObject is enabled. * @@ -334,58 +185,40 @@ * @return true if the SchemaObject is enabled, or if it depends on * an enabled schema */ - public boolean isEnabled() - { - return isEnabled; - } - - + boolean isEnabled(); + + /** * Tells if this SchemaObject is disabled. * * @return true if the SchemaObject is disabled */ - public boolean isDisabled() - { - return !isEnabled; - } - + boolean isDisabled(); + /** * Sets the SchemaObject state, either enabled or disabled. * * @param enabled The current SchemaObject state */ - public void setEnabled( boolean enabled ) - { - if ( !isReadOnly ) - { - isEnabled = enabled; - } - } - + void setEnabled( boolean enabled ); + /** * Tells if this SchemaObject is ReadOnly. * * @return true if the SchemaObject is not modifiable */ - public boolean isReadOnly() - { - return isReadOnly; - } - + boolean isReadOnly(); + /** * Sets the SchemaObject readOnly flag * * @param enabled The current SchemaObject ReadOnly status */ - public void setReadOnly( boolean isReadOnly ) - { - this.isReadOnly = isReadOnly; - } - + void setReadOnly( boolean isReadOnly ); + /** * Gets whether or not this SchemaObject has been inactivated. All @@ -395,77 +228,40 @@ * * @return true if inactive, false if active */ - public boolean isObsolete() - { - return isObsolete; - } + boolean isObsolete(); + - /** * Sets the Obsolete flag. * * @param obsolete The Obsolete flag state */ - public void setObsolete( boolean obsolete ) - { - if ( ! isReadOnly ) - { - this.isObsolete = obsolete; - } - } + void setObsolete( boolean obsolete ); + - /** * @return The SchemaObject extensions, as a Map of [extension, values] */ - public Map> getExtensions() - { - return extensions; - } - - + Map> getExtensions(); + + /** * Add an extension with its values * @param key The extension key * @param values The associated values */ - public void addExtension( String key, List values ) - { - if ( !isReadOnly ) - { - extensions.put( key, values ); - } - } + void addExtension( String key, List values ); + - /** * Add an extensions with their values. (Actually do a copy) * * @param key The extension key * @param values The associated values */ - public void setExtensions( Map> extensions ) - { - if ( !isReadOnly && ( extensions != null ) ) - { - this.extensions = new HashMap>(); - - for ( String key : extensions.keySet() ) - { - List values = new ArrayList(); - - for ( String value : extensions.get( key ) ) - { - values.add( value ); - } - - this.extensions.put( key, values ); - } - - } - } + void setExtensions( Map> extensions ); + - /** * The SchemaObject type : *
  • AttributeType @@ -482,21 +278,15 @@ * * @return the SchemaObject type */ - public SchemaObjectType getObjectType() - { - return objectType; - } - - + SchemaObjectType getObjectType(); + + /** * Gets the name of the schema this SchemaObject is associated with. * * @return the name of the schema associated with this schemaObject */ - public String getSchemaName() - { - return schemaName; - } + String getSchemaName(); /** @@ -504,223 +294,21 @@ * * @param schemaName the new schema name */ - public void setSchemaName( String schemaName ) - { - if ( !isReadOnly ) - { - this.schemaName = schemaName; - } - } - - + void setSchemaName( String schemaName ); + + /** * @see Object#hashCode() */ - public int hashCode() - { - int h = 37; - - // The OID - h += h*17 + oid.hashCode(); - - // The SchemaObject type - h += h*17 + objectType.getValue(); - - // The Names, if any - if ( ( names != null ) && ( names.size() != 0 ) ) - { - for ( String name:names ) - { - h += h*17 + name.hashCode(); - } - } - - // The schemaName if any - if ( schemaName != null ) - { - h += h*17 + schemaName.hashCode(); - } - - h += h*17 + ( isEnabled ? 1 : 0 ); - h += h*17 + ( isReadOnly ? 1 : 0 ); - - // The description, if any - if ( description != null ) - { - h += h*17 + description.hashCode(); - } - - // The extensions, if any - for ( String key : extensions.keySet() ) - { - h += h*17 + key.hashCode(); - - List values = extensions.get( key ); - - if ( values != null ) - { - for ( String value:values ) - { - h += h*17 + value.hashCode(); - } - } - } - - return h; - } - - + int hashCode(); + + /** * @see Object#equals(Object) */ - public boolean equals( Object o1 ) - { - if ( this == o1 ) - { - return true; - } - - if ( ! ( o1 instanceof SchemaObject ) ) - { - return false; - } - - SchemaObject that = (SchemaObject)o1; - - // Two schemaObject are equals if their oid is equal, - // their ObjectType is equal, their names are equals - // their schema name is the same, all their flags are equals, - // the description is the same and their extensions are equals - if ( !compareOid( oid, that.oid ) ) - { - return false; - } - - // Compare the names - if ( names == null ) - { - if ( that.names != null ) - { - return false; - } - } - else if ( that.names == null ) - { - return false; - } - else - { - int nbNames = 0; - - for ( String name:names ) - { - if ( ! that.names.contains( name ) ) - { - return false; - } - - nbNames++; - } - - if ( nbNames != names.size() ) - { - return false; - } - } - - - if ( schemaName == null ) - { - if ( that.schemaName != null ) - { - return false; - } - } - else - { - if ( !schemaName.equalsIgnoreCase( that.schemaName ) ) - { - return false; - } - } - - if ( objectType != that.objectType ) - { - return false; - } - - if ( extensions != null ) - { - if ( that.extensions == null ) - { - return false; - } - else - { - for ( String key : extensions.keySet() ) - { - if ( !that.extensions.containsKey( key ) ) - { - return false; - } - - List thisValues = extensions.get( key ); - List thatValues = that.extensions.get( key ); - - if ( thisValues != null ) - { - if ( thatValues == null ) - { - return false; - } - else - { - if ( thisValues.size() != thatValues.size() ) - { - return false; - } - - // TODO compare the values - } - } - else if ( thatValues != null ) - { - return false; - } - } - } - } - else if ( that.extensions != null ) - { - return false; - } - - if ( this.isEnabled != that.isEnabled ) - { - return false; - } - - if ( this.isObsolete != that.isObsolete ) - { - return false; - } - - if ( this.isReadOnly != that.isReadOnly ) - { - return false; - } - - if ( this.description == null ) - { - return that.description == null; - } - else - { - return this.description.equalsIgnoreCase( that.description ); - } - } - - + boolean equals( Object o1 ); + + /** * Register the given SchemaObject into the given registries' globalOidRegistry * @@ -728,105 +316,36 @@ * @param registries The registries in which we want it to be stored * @throws NamingException If the OID is invalid */ - public void registerOid( SchemaObject schemaObject, Registries registries ) throws NamingException - { - // Add the SchemaObject into the globalOidRegistry - registries.getGlobalOidRegistry().register( this ); - } - - + void registerOid( SchemaObject schemaObject, Registries registries ) throws NamingException; + + /** * Copy the current SchemaObject on place * * @return The copied SchemaObject */ - public abstract SchemaObject copy(); - - - /** - * Compare two oids, and return true if they are both null or - * equals - */ - protected boolean compareOid( String oid1, String oid2 ) - { - if ( oid1 == null ) - { - return oid2 == null; - } - else - { - return oid1.equals( oid2 ); - } - } + SchemaObject copy(); + - /** * Copy a SchemaObject. * * @return A copy of the current SchemaObject */ - public SchemaObject copy( SchemaObject original ) - { - // copy the description - description = original.description; - - // copy the flags - isEnabled = original.isEnabled; - isObsolete = original.isObsolete; - isReadOnly = original.isReadOnly; - - // copy the names - names = new ArrayList(); - - for ( String name : original.names ) - { - names.add( name ); - } - - // copy the extensions - extensions = new HashMap>(); - - for ( String key : original.extensions.keySet() ) - { - List extensionValues = original.extensions.get( key ); - - List cloneExtension = new ArrayList(); - - for ( String value : extensionValues ) - { - cloneExtension.add( value ); - } - - extensions.put( key, cloneExtension ); - } - - // The SchemaName - schemaName = original.schemaName; - - // The specification - specification = original.specification; - - return this; - } - - + SchemaObject copy( SchemaObject original ); + + /** * Clear the current SchemaObject : remove all the references to other objects, * and all the Maps. */ - public void clear() - { - // Clear the extensions - for ( String extension : extensions.keySet() ) - { - List extensionList = extensions.get( extension ); - - extensionList.clear(); - } - - extensions.clear(); - - // Clear the names - names.clear(); - } + void clear(); + + + /** + * Inject the Registries into the SchemaObject + * + * @param registries The Registries + */ + void setRegistries( Registries registries ); } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimNormalizer.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimNormalizer.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimNormalizer.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimNormalizer.java Mon Dec 7 14:06:56 2009 @@ -19,9 +19,6 @@ */ package org.apache.directory.shared.ldap.schema.normalizers; -import java.util.List; - -import javax.naming.NamingException; import org.apache.directory.shared.ldap.schema.registries.Registries; @@ -41,17 +38,18 @@ /** serial version UID */ private static final long serialVersionUID = -206263185305284269L; + public CachingDeepTrimNormalizer() { super( new DeepTrimNormalizer() ); } - + /** * {@inheritDoc} */ - public void applyRegistries( List errors, Registries registries ) throws NamingException + public void setRegistries( Registries registries ) { - super.applyRegistries( errors, registries ); + super.setRegistries( registries ); } } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimToLowerNormalizer.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimToLowerNormalizer.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimToLowerNormalizer.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDeepTrimToLowerNormalizer.java Mon Dec 7 14:06:56 2009 @@ -19,9 +19,6 @@ */ package org.apache.directory.shared.ldap.schema.normalizers; -import java.util.List; - -import javax.naming.NamingException; import org.apache.directory.shared.ldap.schema.registries.Registries; @@ -41,17 +38,18 @@ /** serial version UID */ private static final long serialVersionUID = -206263185305284269L; + public CachingDeepTrimToLowerNormalizer() { super( new DeepTrimToLowerNormalizer() ); } - + /** * {@inheritDoc} */ - public void applyRegistries( List errors, Registries registries ) throws NamingException + public void setRegistries( Registries registries ) { - super.applyRegistries( errors, registries ); + super.setRegistries( registries ); } } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDnNormalizer.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDnNormalizer.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDnNormalizer.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingDnNormalizer.java Mon Dec 7 14:06:56 2009 @@ -19,9 +19,6 @@ */ package org.apache.directory.shared.ldap.schema.normalizers; -import java.util.List; - -import javax.naming.NamingException; import org.apache.directory.shared.ldap.schema.SchemaManager; import org.apache.directory.shared.ldap.schema.registries.Registries; @@ -41,21 +38,21 @@ { /** serial version UID */ private static final long serialVersionUID = -206263185305284269L; - + + public CachingDnNormalizer() { super( new DnNormalizer() ); } - + /** * {@inheritDoc} */ - public void applyRegistries( List errors, Registries registries ) throws NamingException + public void setRegistries( Registries registries ) { - super.applyRegistries( errors, registries ); + super.setRegistries( registries ); } - /** Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingNormalizer.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingNormalizer.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingNormalizer.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/CachingNormalizer.java Mon Dec 7 14:06:56 2009 @@ -20,8 +20,6 @@ package org.apache.directory.shared.ldap.schema.normalizers; -import java.util.List; - import javax.naming.NamingException; import org.apache.directory.shared.ldap.entry.Value; @@ -83,7 +81,7 @@ cache = new SynchronizedLRUMap( cacheSz ); } - + /** * Overrides default behavior by returning the OID of the wrapped * Normalizer. @@ -93,8 +91,8 @@ { return normalizer.getOid(); } - - + + /** * Overrides default behavior by setting the OID of the wrapped Normalizer. * @@ -103,10 +101,10 @@ @Override public void setOid( String oid ) { - super.setOid( oid ); + super.setOid( oid ); normalizer.setOid( oid ); } - + /** * {@inheritDoc} @@ -118,7 +116,7 @@ return null; } - Value result = (Value)cache.get( value ); + Value result = ( Value ) cache.get( value ); if ( result != null ) { @@ -141,7 +139,7 @@ return null; } - String normalized = (String)cache.get( value ); + String normalized = ( String ) cache.get( value ); if ( normalized != null ) { @@ -157,12 +155,12 @@ /** * {@inheritDoc} */ - public void applyRegistries( List errors, Registries registries ) throws NamingException + public void setRegistries( Registries registries ) { - normalizer.applyRegistries( errors, registries ); + normalizer.setRegistries( registries ); } - - + + /** * Sets the SchemaManager * @@ -170,6 +168,6 @@ */ public void setSchemaManager( SchemaManager schemaManager ) { - normalizer.setSchemaManager( schemaManager ); + normalizer.setSchemaManager( schemaManager ); } } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistry.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistry.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/AttributeTypeRegistry.java Mon Dec 7 14:06:56 2009 @@ -35,8 +35,7 @@ * @author Apache Directory Project * @version $Rev$ */ -public interface AttributeTypeRegistry extends SchemaObjectRegistry, - Iterable +public interface AttributeTypeRegistry extends SchemaObjectRegistry, Iterable { /** * Gets an oid/name to normalizer mapping used to normalize distinguished @@ -45,8 +44,8 @@ * @return a map of OID Strings to OidNormalizer instances */ Map getNormalizerMapping(); - - + + /** * Quick lookup to see if an attribute has descendants. * @@ -57,8 +56,8 @@ * discerned from the ancestorId supplied */ boolean hasDescendants( String ancestorId ) throws NamingException; - - + + /** * Get's an iterator over the set of descendant attributeTypes for * some ancestor's name alias or their OID. @@ -70,8 +69,8 @@ * discerned from the ancestorId supplied */ Iterator descendants( String ancestorId ) throws NamingException; - - + + /** * Store the AttributeType into a map associating an AttributeType to its * descendants. @@ -80,8 +79,8 @@ * @throws NamingException If something went wrong */ void registerDescendants( AttributeType attributeType, AttributeType ancestor ) throws NamingException; - - + + /** * Remove the AttributeType from the map associating an AttributeType to its * descendants. @@ -91,14 +90,20 @@ * @throws NamingException If something went wrong */ void unregisterDescendants( AttributeType attributeType, AttributeType ancestor ) throws NamingException; - - + + /** * Add a new Oid/Normalizer couple in the OidNormalizer map */ void addMappingFor( AttributeType attributeType ) throws NamingException; - + + /** + * Remove a new Oid/Normalizer couple in the OidNormalizer map + */ + void removeMappingFor( AttributeType attributeType ) throws NamingException; + + /** * Copy the AttributeTypeRegistry */ Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultAttributeTypeRegistry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultAttributeTypeRegistry.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultAttributeTypeRegistry.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultAttributeTypeRegistry.java Mon Dec 7 14:06:56 2009 @@ -32,7 +32,6 @@ import org.apache.directory.shared.ldap.schema.AttributeType; import org.apache.directory.shared.ldap.schema.MatchingRule; -import org.apache.directory.shared.ldap.schema.SchemaObject; import org.apache.directory.shared.ldap.schema.SchemaObjectType; import org.apache.directory.shared.ldap.schema.normalizers.NoOpNormalizer; import org.apache.directory.shared.ldap.schema.normalizers.OidNormalizer; @@ -187,6 +186,7 @@ } } + /* try { // And recurse until we reach the top of the hierarchy @@ -196,6 +196,7 @@ { throw new NoSuchAttributeException( ne.getMessage() ); } + */ } @@ -260,7 +261,7 @@ /** * Remove the AttributeType normalizer from the OidNormalizer map */ - private void removeMappingFor( SchemaObject attributeType ) + public void removeMappingFor( AttributeType attributeType ) throws NamingException { if ( attributeType == null ) { Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchemaObjectRegistry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchemaObjectRegistry.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchemaObjectRegistry.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchemaObjectRegistry.java Mon Dec 7 14:06:56 2009 @@ -41,24 +41,25 @@ * @author Apache Directory Project * @version $Rev$, $Date$ */ -public abstract class DefaultSchemaObjectRegistry implements SchemaObjectRegistry, Iterable +public abstract class DefaultSchemaObjectRegistry implements SchemaObjectRegistry, + Iterable { /** static class logger */ private static final Logger LOG = LoggerFactory.getLogger( DefaultSchemaObjectRegistry.class ); /** A speedup for debug */ private static final boolean DEBUG = LOG.isDebugEnabled(); - + /** a map of SchemaObject looked up by name */ protected Map byName; - + /** The SchemaObject type, used by the toString() method */ protected SchemaObjectType schemaObjectType; /** the global OID Registry */ protected OidRegistry oidRegistry; - - + + /** * Creates a new DefaultSchemaObjectRegistry instance. */ @@ -68,8 +69,8 @@ this.schemaObjectType = schemaObjectType; this.oidRegistry = oidRegistry; } - - + + /** * {@inheritDoc} */ @@ -79,36 +80,36 @@ { return byName.containsKey( StringTools.toLowerCase( oid ) ); } - + return true; } - - + + /** * {@inheritDoc} */ public String getSchemaName( String oid ) throws NamingException { - if ( ! OID.isOID( oid ) ) + 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 ); } - + /** * {@inheritDoc} */ @@ -121,7 +122,7 @@ if ( originalSchemaName.equalsIgnoreCase( schemaObject.getSchemaName() ) ) { schemaObject.setSchemaName( newSchemaName ); - + if ( DEBUG ) { LOG.debug( "Renamed {} schemaName to {}", schemaObject, newSchemaName ); @@ -129,17 +130,17 @@ } } } - - + + /** * {@inheritDoc} */ public Iterator iterator() { - return (Iterator)oidRegistry.iterator(); + return ( Iterator ) oidRegistry.iterator(); } - + /** * {@inheritDoc} */ @@ -148,7 +149,7 @@ return byName.keySet().iterator(); } - + /** * {@inheritDoc} */ @@ -158,9 +159,9 @@ { return null; } - + T schemaObject = byName.get( oid ); - + if ( schemaObject == null ) { // let's try with trimming and lowercasing now @@ -176,20 +177,20 @@ if ( DEBUG ) { - LOG.debug( "Found {} with oid: {}", schemaObject, oid ); + LOG.debug( "Found {} with oid: {}", schemaObject, oid ); } - + return schemaObject; } - - + + /** * {@inheritDoc} */ public void register( T schemaObject ) throws NamingException { String oid = schemaObject.getOid(); - + if ( byName.containsKey( oid ) ) { String msg = schemaObjectType.name() + " with OID " + oid + " already registered!"; @@ -198,19 +199,19 @@ } 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 ); + byName.put( StringTools.trim( StringTools.toLowerCase( name ) ), schemaObject ); } // And register the oid -> schemaObject relation oidRegistry.register( schemaObject ); - + if ( LOG.isDebugEnabled() ) { LOG.debug( "registered " + schemaObject.getName() + " for OID {}", oid ); @@ -231,24 +232,57 @@ } 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; } - - + + + /** + * {@inheritDoc} + */ + public T unregister( T schemaObject ) throws NamingException + { + String oid = schemaObject.getOid(); + + if ( !byName.containsKey( oid ) ) + { + String msg = schemaObjectType.name() + " with OID " + oid + " not registered!"; + LOG.warn( msg ); + throw new NamingException( msg ); + } + + // Remove the oid + T removed = byName.remove( oid ); + + /* + * Remove the aliases/names from the name map along with their toLowerCase + * versions of the name. + */ + for ( String name : schemaObject.getNames() ) + { + byName.remove( StringTools.trim( StringTools.toLowerCase( name ) ) ); + } + + // And unregister the oid -> schemaObject relation + oidRegistry.unregister( oid ); + + return removed; + } + + /** * {@inheritDoc} */ @@ -258,7 +292,7 @@ { return; } - + // Loop on all the SchemaObjects stored and remove those associated // with the give schemaName for ( T schemaObject : this ) @@ -267,7 +301,7 @@ { String oid = schemaObject.getOid(); SchemaObject removed = unregister( oid ); - + if ( DEBUG ) { LOG.debug( "Removed {} with oid {} from the registry", removed, oid ); @@ -275,8 +309,8 @@ } } } - - + + /** * {@inheritDoc} */ @@ -284,21 +318,21 @@ { 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 + 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(); } @@ -309,31 +343,31 @@ public SchemaObjectRegistry copy( SchemaObjectRegistry original ) { // Fill the byName and OidRegistry maps, the type has already be copied - for ( String key : ((DefaultSchemaObjectRegistry)original).byName.keySet() ) + for ( String key : ( ( DefaultSchemaObjectRegistry ) original ).byName.keySet() ) { // Clone each SchemaObject - T value = ((DefaultSchemaObjectRegistry)original).byName.get( key ); - + T value = ( ( DefaultSchemaObjectRegistry ) original ).byName.get( key ); + if ( value instanceof LoadableSchemaObject ) { // Update the data structure. // Comparators, Normalizers and SyntaxCheckers aren't copied, // they are immutable byName.put( key, value ); - + // Update the OidRegistry oidRegistry.put( value ); } else { T copiedValue = null; - + // Copy the value if it's not already in the oidRegistry if ( oidRegistry.hasOid( value.getOid() ) ) { try { - copiedValue = (T)oidRegistry.getSchemaObject( value.getOid() ); + copiedValue = ( T ) oidRegistry.getSchemaObject( value.getOid() ); } catch ( NamingException ne ) { @@ -342,9 +376,9 @@ } else { - copiedValue = (T)value.copy(); + copiedValue = ( T ) value.copy(); } - + // Update the data structure. byName.put( key, copiedValue ); @@ -352,7 +386,7 @@ oidRegistry.put( copiedValue ); } } - + return this; } @@ -372,7 +406,7 @@ } } - + /** * {@inheritDoc} */ @@ -380,8 +414,8 @@ { return schemaObjectType; } - - + + /** * {@inheritDoc} */ @@ -389,18 +423,18 @@ { return oidRegistry.size(); } - - + + /** * @see Object#toString() */ public String toString() { StringBuilder sb = new StringBuilder(); - + sb.append( schemaObjectType ).append( ": " ); boolean isFirst = true; - + for ( String name : byName.keySet() ) { if ( isFirst ) @@ -411,16 +445,16 @@ { sb.append( ", " ); } - + T schemaObject = byName.get( name ); - + sb.append( '<' ).append( name ).append( ", " ).append( schemaObject.getOid() ).append( '>' ); } - + return sb.toString(); } - - + + /** * {@inheritDoc} */ @@ -430,15 +464,15 @@ for ( SchemaObject schemaObject : oidRegistry ) { // Don't clear LoadableSchemaObject - if ( ! (schemaObject instanceof LoadableSchemaObject ) ) + if ( !( schemaObject instanceof LoadableSchemaObject ) ) { schemaObject.clear(); } } - + // Remove the byName elements byName.clear(); - + // Clear the OidRegistry oidRegistry.clear(); } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableAttributeTypeRegistry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableAttributeTypeRegistry.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableAttributeTypeRegistry.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableAttributeTypeRegistry.java Mon Dec 7 14:06:56 2009 @@ -43,7 +43,8 @@ { /** The wrapped AttributeType registry */ AttributeTypeRegistry immutableAttributeTypeRegistry; - + + /** * Creates a new instance of ImmutableAttributeTypeRegistry. * @@ -53,8 +54,8 @@ { immutableAttributeTypeRegistry = attributeTypeRegistry; } - - + + /** * {@inheritDoc} */ @@ -62,8 +63,8 @@ { return immutableAttributeTypeRegistry.getNormalizerMapping(); } - - + + /** * {@inheritDoc} */ @@ -71,8 +72,8 @@ { return immutableAttributeTypeRegistry.hasDescendants( ancestorId ); } - - + + /** * {@inheritDoc} */ @@ -80,52 +81,65 @@ { return immutableAttributeTypeRegistry.descendants( ancestorId ); } - - + + /** * {@inheritDoc} */ public void register( AttributeType attributeType ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - + /** * {@inheritDoc} */ - public void registerDescendants( AttributeType attributeType, AttributeType ancestor ) - throws NamingException + public void registerDescendants( AttributeType attributeType, AttributeType ancestor ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - - + + /** * {@inheritDoc} */ - public void unregisterDescendants( AttributeType attributeType, AttributeType ancestor ) - throws NamingException + public void unregisterDescendants( AttributeType attributeType, AttributeType ancestor ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - - + + /** * {@inheritDoc} */ public AttributeType unregister( String numericOid ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - + /** * {@inheritDoc} */ public void addMappingFor( AttributeType attributeType ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); + } + + + /** + * {@inheritDoc} + */ + public void removeMappingFor( AttributeType attributeType ) throws NamingException + { + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -136,7 +150,8 @@ { return immutableAttributeTypeRegistry.lookup( oid ); } - + + /** * {@inheritDoc} */ @@ -144,17 +159,17 @@ { return immutableAttributeTypeRegistry.toString(); } - - + + /** * {@inheritDoc} */ public AttributeTypeRegistry copy() { - return (AttributeTypeRegistry)immutableAttributeTypeRegistry.copy(); + return ( AttributeTypeRegistry ) immutableAttributeTypeRegistry.copy(); } - - + + /** * {@inheritDoc} */ @@ -163,7 +178,7 @@ return immutableAttributeTypeRegistry.size(); } - + /** * {@inheritDoc} */ @@ -222,7 +237,7 @@ * {@inheritDoc} */ public void renameSchema( String originalSchemaName, String newSchemaName ) - { + { // Do nothing } @@ -232,7 +247,8 @@ */ public void unregisterSchemaElements( String schemaName ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -250,6 +266,17 @@ */ public void clear() throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); + } + + + /** + * {@inheritDoc} + */ + public AttributeType unregister( AttributeType schemaObject ) throws NamingException + { + throw new LdapOperationNotSupportedException( "Cannot modify the AttributeTypeRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableComparatorRegistry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableComparatorRegistry.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableComparatorRegistry.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableComparatorRegistry.java Mon Dec 7 14:06:56 2009 @@ -41,7 +41,8 @@ { /** The wrapped LdapComparator registry */ ComparatorRegistry immutableComparatorRegistry; - + + /** * Creates a new immutable ComparatorRegistry instance. * @@ -51,14 +52,15 @@ { immutableComparatorRegistry = comparatorRegistry; } - - + + /** * {@inheritDoc} */ public void register( LdapComparator comparator ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -67,28 +69,30 @@ */ public LdapComparator unregister( String numericOid ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - - + + /** * {@inheritDoc} */ public void unregisterSchemaElements( String schemaName ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - - + + /** * {@inheritDoc} */ public ImmutableComparatorRegistry copy() { - return (ImmutableComparatorRegistry)immutableComparatorRegistry.copy(); + return ( ImmutableComparatorRegistry ) immutableComparatorRegistry.copy(); } - - + + /** * {@inheritDoc} */ @@ -166,7 +170,8 @@ */ public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -184,6 +189,17 @@ */ public void clear() throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the ComparatorRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); + } + + + /** + * {@inheritDoc} + */ + public LdapComparator unregister( LdapComparator schemaObject ) throws NamingException + { + throw new LdapOperationNotSupportedException( "Cannot modify the omparatorRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITContentRuleRegistry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITContentRuleRegistry.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITContentRuleRegistry.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITContentRuleRegistry.java Mon Dec 7 14:06:56 2009 @@ -41,7 +41,8 @@ { /** The wrapped DITContentRule registry */ DITContentRuleRegistry immutableDITContentRuleRegistry; - + + /** * Creates a new instance of ImmutableDITContentRuleRegistry. * @@ -51,17 +52,17 @@ { immutableDITContentRuleRegistry = ditContentRuleRegistry; } - - + + /** * {@inheritDoc} */ public ImmutableDITContentRuleRegistry copy() { - return (ImmutableDITContentRuleRegistry)immutableDITContentRuleRegistry.copy(); + return ( ImmutableDITContentRuleRegistry ) immutableDITContentRuleRegistry.copy(); } - - + + /** * {@inheritDoc} */ @@ -139,7 +140,8 @@ */ public void register( DITContentRule schemaObject ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -148,7 +150,8 @@ */ public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -157,7 +160,8 @@ */ public DITContentRule unregister( String numericOid ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -166,7 +170,8 @@ */ public void unregisterSchemaElements( String schemaName ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -184,6 +189,17 @@ */ public void clear() throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); + } + + + /** + * {@inheritDoc} + */ + public DITContentRule unregister( DITContentRule schemaObject ) throws NamingException + { + throw new LdapOperationNotSupportedException( "Cannot modify the DITContentRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } } Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITStructureRuleRegistry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITStructureRuleRegistry.java?rev=887926&r1=887925&r2=887926&view=diff ============================================================================== --- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITStructureRuleRegistry.java (original) +++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/ImmutableDITStructureRuleRegistry.java Mon Dec 7 14:06:56 2009 @@ -41,7 +41,8 @@ { /** The wrapped DITStructureRule registry */ DITStructureRuleRegistry immutableDITStructureRuleRegistry; - + + /** * Creates a new instance of ImmutableDITStructureRuleRegistry. * @@ -61,7 +62,7 @@ return immutableDITStructureRuleRegistry.contains( ruleId ); } - + /** * {@inheritDoc} */ @@ -69,8 +70,8 @@ { return immutableDITStructureRuleRegistry.iterator(); } - - + + /** * {@inheritDoc} */ @@ -78,8 +79,8 @@ { return immutableDITStructureRuleRegistry.ruleIdIterator(); } - - + + /** * {@inheritDoc} */ @@ -88,7 +89,7 @@ return immutableDITStructureRuleRegistry.getSchemaName( ruleId ); } - + /** * {@inheritDoc} */ @@ -96,7 +97,7 @@ { } - + /** * {@inheritDoc} */ @@ -111,37 +112,40 @@ */ public void unregister( int ruleId ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - - + + /** * {@inheritDoc} */ public void unregisterSchemaElements( String schemaName ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - + /** * {@inheritDoc} */ public void renameSchema( String originalSchemaName, String newSchemaName ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } - - + + /** * {@inheritDoc} */ public ImmutableDITStructureRuleRegistry copy() { - return (ImmutableDITStructureRuleRegistry)immutableDITStructureRuleRegistry.copy(); + return ( ImmutableDITStructureRuleRegistry ) immutableDITStructureRuleRegistry.copy(); } - - + + /** * {@inheritDoc} */ @@ -210,7 +214,8 @@ */ public DITStructureRule unregister( String numericOid ) throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } @@ -228,6 +233,17 @@ */ public void clear() throws NamingException { - throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", ResultCodeEnum.NO_SUCH_OPERATION ); + throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); + } + + + /** + * {@inheritDoc} + */ + public DITStructureRule unregister( DITStructureRule schemaObject ) throws NamingException + { + throw new LdapOperationNotSupportedException( "Cannot modify the DITStructureRuleRegistry copy", + ResultCodeEnum.NO_SUCH_OPERATION ); } }