You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2007/08/26 18:42:27 UTC
svn commit: r569837 -
/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/
Author: akarasulu
Date: Sun Aug 26 09:42:26 2007
New Revision: 569837
URL: http://svn.apache.org/viewvc?rev=569837&view=rev
Log:
really fixing DIRSERVER-904 properly for all schema entity types
Modified:
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/AbstractSchemaChangeHandler.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaAttributeTypeHandler.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaComparatorHandler.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleHandler.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNormalizerHandler.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaObjectClassHandler.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxCheckerHandler.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxHandler.java
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/AbstractSchemaChangeHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/AbstractSchemaChangeHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/AbstractSchemaChangeHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/AbstractSchemaChangeHandler.java Sun Aug 26 09:42:26 2007
@@ -31,7 +31,9 @@
import org.apache.directory.server.constants.MetaSchemaConstants;
import org.apache.directory.server.schema.bootstrap.Schema;
import org.apache.directory.server.schema.registries.Registries;
+import org.apache.directory.shared.ldap.exception.LdapNamingException;
import org.apache.directory.shared.ldap.message.ModificationItemImpl;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.SchemaObject;
@@ -58,6 +60,40 @@
this.loader = loader;
this.m_oidAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_OID_AT );
this.factory = new SchemaEntityFactory( targetRegistries );
+ }
+
+
+ protected void checkOidIsUnique( Attributes entry ) throws NamingException
+ {
+ String oid = getOid( entry );
+
+ if ( targetRegistries.getOidRegistry().hasOid( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema entity is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+ }
+
+
+ protected void checkOidIsUnique( SchemaObject schemaObject ) throws NamingException
+ {
+ String oid = schemaObject.getOid();
+
+ if ( targetRegistries.getOidRegistry().hasOid( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema entity is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+ }
+
+
+ protected void checkOidIsUnique( String oid ) throws NamingException
+ {
+ if ( targetRegistries.getOidRegistry().hasOid( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema entity is not unique.",
+ ResultCodeEnum.OTHER );
+ }
}
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaAttributeTypeHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaAttributeTypeHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaAttributeTypeHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaAttributeTypeHandler.java Sun Aug 26 09:42:26 2007
@@ -68,13 +68,13 @@
protected void modify( LdapDN name, Attributes entry, Attributes targetEntry, boolean cascade )
throws NamingException
{
- String oldOid = getOid( entry );
+ String oid = getOid( entry );
Schema schema = getSchema( name );
AttributeType at = factory.getAttributeType( targetEntry, targetRegistries, schema.getSchemaName() );
if ( ! schema.isDisabled() )
{
- attributeTypeRegistry.unregister( oldOid );
+ attributeTypeRegistry.unregister( oid );
attributeTypeRegistry.register( at );
}
}
@@ -99,6 +99,7 @@
LdapDN parentDn = ( LdapDN ) name.clone();
parentDn.remove( parentDn.size() - 1 );
checkNewParent( parentDn );
+ checkOidIsUnique( entry );
Schema schema = getSchema( name );
AttributeType at = factory.getAttributeType( entry, targetRegistries, schema.getSchemaName() );
@@ -151,6 +152,7 @@
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRdn );
+ checkOidIsUnique( newOid );
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
AttributeType at = factory.getAttributeType( targetEntry, targetRegistries, schema.getSchemaName() );
@@ -188,6 +190,7 @@
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRn );
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
+ checkOidIsUnique( newOid );
AttributeType at = factory.getAttributeType( targetEntry, targetRegistries, newSchema.getSchemaName() );
if ( ! oldSchema.isDisabled() )
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaComparatorHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaComparatorHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaComparatorHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaComparatorHandler.java Sun Aug 26 09:42:26 2007
@@ -35,8 +35,8 @@
import org.apache.directory.server.schema.registries.Registries;
import org.apache.directory.shared.ldap.constants.SchemaConstants;
import org.apache.directory.shared.ldap.exception.LdapInvalidNameException;
+import org.apache.directory.shared.ldap.exception.LdapNamingException;
import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
-import org.apache.directory.shared.ldap.message.ModificationItemImpl;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.name.Rdn;
@@ -54,14 +54,11 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$, $Date$
*/
-public class MetaComparatorHandler implements SchemaChangeHandler
+public class MetaComparatorHandler extends AbstractSchemaChangeHandler
{
- private final PartitionSchemaLoader loader;
private final SchemaEntityFactory factory;
- private final Registries targetRegistries;
private final ComparatorRegistry comparatorRegistry;
private final MatchingRuleRegistry matchingRuleRegistry;
- private final AttributeType oidAT;
private final AttributeType byteCodeAT;
private final AttributeType descAT;
private final AttributeType fqcnAT;
@@ -70,44 +67,25 @@
public MetaComparatorHandler( Registries targetRegistries, PartitionSchemaLoader loader ) throws NamingException
{
- this.targetRegistries = targetRegistries;
- this.loader = loader;
+ super( targetRegistries, loader );
this.comparatorRegistry = targetRegistries.getComparatorRegistry();
this.matchingRuleRegistry = targetRegistries.getMatchingRuleRegistry();
this.factory = new SchemaEntityFactory( targetRegistries );
- this.oidAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_OID_AT );
this.byteCodeAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_BYTECODE_AT );
this.descAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_DESCRIPTION_AT );
this.fqcnAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_FQCN_AT );
}
-
- private String getOid( Attributes entry ) throws NamingException
- {
- Attribute oid = AttributeUtils.getAttribute( entry, oidAT );
- if ( oid == null )
- {
- return null;
- }
- return ( String ) oid.get();
- }
-
-
- private Schema getSchema( LdapDN name ) throws NamingException
- {
- return loader.getSchema( MetaSchemaUtils.getSchemaName( name ) );
- }
-
- private void modify( LdapDN name, Attributes entry, Attributes targetEntry, boolean cascade ) throws NamingException
+ protected void modify( LdapDN name, Attributes entry, Attributes targetEntry, boolean cascade ) throws NamingException
{
- String oldOid = getOid( entry );
+ String oid = getOid( entry );
Comparator comparator = factory.getComparator( targetEntry, targetRegistries );
Schema schema = getSchema( name );
if ( ! schema.isDisabled() )
{
- comparatorRegistry.unregister( oldOid );
+ comparatorRegistry.unregister( oid );
ComparatorDescription description = getComparatorDescription( schema.getSchemaName(), targetEntry );
comparatorRegistry.register( description, comparator );
}
@@ -140,25 +118,12 @@
}
- public void modify( LdapDN name, int modOp, Attributes mods, Attributes entry, Attributes targetEntry,
- boolean cascade ) throws NamingException
- {
- modify( name, entry, targetEntry, cascade );
- }
-
-
- public void modify( LdapDN name, ModificationItemImpl[] mods, Attributes entry, Attributes targetEntry,
- boolean cascade ) throws NamingException
- {
- modify( name, entry, targetEntry, cascade );
- }
-
-
public void add( LdapDN name, Attributes entry ) throws NamingException
{
LdapDN parentDn = ( LdapDN ) name.clone();
parentDn.remove( parentDn.size() - 1 );
checkNewParent( parentDn );
+ checkOidIsUniqueForComparator( entry );
Comparator comparator = factory.getComparator( entry, targetRegistries );
Schema schema = getSchema( name );
@@ -227,6 +192,7 @@
}
String oid = NamespaceTools.getRdnValue( newRdn );
+ checkOidIsUniqueForComparator( oid );
Schema schema = getSchema( name );
if ( ! schema.isDisabled() )
@@ -255,7 +221,8 @@
}
String oid = NamespaceTools.getRdnValue( newRn );
-
+ checkOidIsUniqueForComparator( oid );
+
Schema oldSchema = getSchema( oriChildName );
Schema newSchema = getSchema( newParentName );
@@ -307,6 +274,28 @@
}
+ private void checkOidIsUniqueForComparator( String oid ) throws NamingException
+ {
+ if ( super.targetRegistries.getComparatorRegistry().hasComparator( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema comparator is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+ }
+
+
+ private void checkOidIsUniqueForComparator( Attributes entry ) throws NamingException
+ {
+ String oid = getOid( entry );
+
+ if ( super.targetRegistries.getComparatorRegistry().hasComparator( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema comparator is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+ }
+
+
private void checkNewParent( LdapDN newParent ) throws NamingException
{
if ( newParent.size() != 3 )
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaMatchingRuleHandler.java Sun Aug 26 09:42:26 2007
@@ -67,13 +67,13 @@
protected void modify( LdapDN name, Attributes entry, Attributes targetEntry,
boolean cascade ) throws NamingException
{
- String oldOid = getOid( entry );
+ String oid = getOid( entry );
Schema schema = getSchema( name );
MatchingRule mr = factory.getMatchingRule( targetEntry, targetRegistries, schema.getSchemaName() );
if ( ! schema.isDisabled() )
{
- matchingRuleRegistry.unregister( oldOid );
+ matchingRuleRegistry.unregister( oid );
matchingRuleRegistry.register( mr );
}
}
@@ -84,6 +84,7 @@
LdapDN parentDn = ( LdapDN ) name.clone();
parentDn.remove( parentDn.size() - 1 );
checkNewParent( parentDn );
+ checkOidIsUnique( entry );
String schemaName = getSchemaName( name );
MatchingRule mr = factory.getMatchingRule( entry, targetRegistries, schemaName );
@@ -136,6 +137,8 @@
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRdn );
+ checkOidIsUnique( newOid );
+
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
MatchingRule mr = factory.getMatchingRule( targetEntry, targetRegistries, schema.getSchemaName() );
@@ -172,6 +175,8 @@
Schema newSchema = getSchema( newParentName );
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRn );
+ checkOidIsUnique( newOid );
+
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
MatchingRule mr = factory.getMatchingRule( targetEntry, targetRegistries, newSchema.getSchemaName() );
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNormalizerHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNormalizerHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNormalizerHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaNormalizerHandler.java Sun Aug 26 09:42:26 2007
@@ -34,8 +34,8 @@
import org.apache.directory.server.schema.registries.Registries;
import org.apache.directory.shared.ldap.constants.SchemaConstants;
import org.apache.directory.shared.ldap.exception.LdapInvalidNameException;
+import org.apache.directory.shared.ldap.exception.LdapNamingException;
import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
-import org.apache.directory.shared.ldap.message.ModificationItemImpl;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.name.Rdn;
@@ -54,14 +54,11 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$, $Date$
*/
-public class MetaNormalizerHandler implements SchemaChangeHandler
+public class MetaNormalizerHandler extends AbstractSchemaChangeHandler
{
- private final PartitionSchemaLoader loader;
private final SchemaEntityFactory factory;
- private final Registries targetRegistries;
private final NormalizerRegistry normalizerRegistry;
private final MatchingRuleRegistry matchingRuleRegistry;
- private final AttributeType oidAT;
private final AttributeType byteCodeAT;
private final AttributeType descAT;
private final AttributeType fqcnAT;
@@ -69,33 +66,16 @@
public MetaNormalizerHandler( Registries targetRegistries, PartitionSchemaLoader loader ) throws NamingException
{
- this.targetRegistries = targetRegistries;
- this.loader = loader;
+ super( targetRegistries, loader );
this.normalizerRegistry = targetRegistries.getNormalizerRegistry();
this.matchingRuleRegistry = targetRegistries.getMatchingRuleRegistry();
this.factory = new SchemaEntityFactory( targetRegistries );
- this.oidAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_OID_AT );
this.byteCodeAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_BYTECODE_AT );
this.descAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_DESCRIPTION_AT );
this.fqcnAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_FQCN_AT );
}
- private Schema getSchema( LdapDN name ) throws NamingException
- {
- return loader.getSchema( MetaSchemaUtils.getSchemaName( name ) );
- }
-
-
- private String getOid( Attributes entry ) throws NamingException
- {
- Attribute oid = AttributeUtils.getAttribute( entry, oidAT );
- if ( oid == null )
- {
- return null;
- }
- return ( String ) oid.get();
- }
private NormalizerDescription getNormalizerDescription( String schemaName, Attributes entry ) throws NamingException
@@ -124,15 +104,15 @@
}
- private void modify( LdapDN name, Attributes entry, Attributes targetEntry, boolean cascade ) throws NamingException
+ protected void modify( LdapDN name, Attributes entry, Attributes targetEntry, boolean cascade ) throws NamingException
{
- String oldOid = getOid( entry );
+ String oid = getOid( entry );
Normalizer normalizer = factory.getNormalizer( targetEntry, targetRegistries );
Schema schema = getSchema( name );
if ( ! schema.isDisabled() )
{
- normalizerRegistry.unregister( oldOid );
+ normalizerRegistry.unregister( oid );
NormalizerDescription normalizerDescription = getNormalizerDescription( schema.getSchemaName(),
targetEntry );
normalizerRegistry.register( normalizerDescription, normalizer );
@@ -140,25 +120,12 @@
}
- public void modify( LdapDN name, int modOp, Attributes mods, Attributes entry,
- Attributes targetEntry, boolean cascade ) throws NamingException
- {
- modify( name, entry, targetEntry, cascade );
- }
-
-
- public void modify( LdapDN name, ModificationItemImpl[] mods, Attributes entry, Attributes targetEntry,
- boolean cascade ) throws NamingException
- {
- modify( name, entry, targetEntry, cascade );
- }
-
-
public void add( LdapDN name, Attributes entry ) throws NamingException
{
LdapDN parentDn = ( LdapDN ) name.clone();
parentDn.remove( parentDn.size() - 1 );
checkNewParent( parentDn );
+ checkOidIsUniqueForNormalizer( entry );
Normalizer normalizer = factory.getNormalizer( entry, targetRegistries );
Schema schema = getSchema( name );
@@ -226,6 +193,8 @@
}
String oid = NamespaceTools.getRdnValue( newRdn );
+ checkOidIsUniqueForNormalizer( oid );
+
Schema schema = getSchema( name );
if ( ! schema.isDisabled() )
@@ -255,7 +224,8 @@
}
String oid = NamespaceTools.getRdnValue( newRn );
-
+ checkOidIsUniqueForNormalizer( oid );
+
Schema oldSchema = getSchema( oriChildName );
Schema newSchema = getSchema( newParentName );
@@ -307,6 +277,28 @@
}
+ private void checkOidIsUniqueForNormalizer( String oid ) throws NamingException
+ {
+ if ( super.targetRegistries.getNormalizerRegistry().hasNormalizer( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema normalizer is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+ }
+
+
+ private void checkOidIsUniqueForNormalizer( Attributes entry ) throws NamingException
+ {
+ String oid = getOid( entry );
+
+ if ( super.targetRegistries.getNormalizerRegistry().hasNormalizer( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema normalizer is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+ }
+
+
private void checkNewParent( LdapDN newParent ) throws NamingException
{
if ( newParent.size() != 3 )
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaObjectClassHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaObjectClassHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaObjectClassHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaObjectClassHandler.java Sun Aug 26 09:42:26 2007
@@ -29,21 +29,15 @@
import org.apache.directory.server.constants.MetaSchemaConstants;
import org.apache.directory.server.schema.bootstrap.Schema;
import org.apache.directory.server.schema.registries.ObjectClassRegistry;
-import org.apache.directory.server.schema.registries.OidRegistry;
import org.apache.directory.server.schema.registries.Registries;
import org.apache.directory.shared.ldap.constants.SchemaConstants;
import org.apache.directory.shared.ldap.exception.LdapInvalidNameException;
-import org.apache.directory.shared.ldap.exception.LdapNamingException;
import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
-import org.apache.directory.shared.ldap.exception.LdapSchemaViolationException;
import org.apache.directory.shared.ldap.message.AttributeImpl;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.name.Rdn;
-import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.ObjectClass;
-import org.apache.directory.shared.ldap.schema.syntax.AttributeTypeUsageSyntaxChecker;
-import org.apache.directory.shared.ldap.util.AttributeUtils;
import org.apache.directory.shared.ldap.util.NamespaceTools;
@@ -58,8 +52,6 @@
{
private final SchemaPartitionDao dao;
private final ObjectClassRegistry objectClassRegistry;
- private final OidRegistry oidRegistry;
- private final AttributeType m_oidAT;
public MetaObjectClassHandler( Registries targetRegistries, PartitionSchemaLoader loader, SchemaPartitionDao dao )
@@ -69,21 +61,19 @@
this.dao = dao;
this.objectClassRegistry = targetRegistries.getObjectClassRegistry();
- this.m_oidAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_OID_AT_OID );
- this.oidRegistry = targetRegistries.getOidRegistry();
}
protected void modify( LdapDN name, Attributes entry, Attributes targetEntry,
boolean cascade ) throws NamingException
{
- String oldOid = getOid( entry );
+ String oid = getOid( entry );
Schema schema = getSchema( name );
ObjectClass oc = factory.getObjectClass( targetEntry, targetRegistries, schema.getSchemaName() );
if ( ! schema.isDisabled() )
{
- objectClassRegistry.unregister( oldOid );
+ objectClassRegistry.unregister( oid );
objectClassRegistry.register( oc );
}
}
@@ -94,13 +84,7 @@
LdapDN parentDn = ( LdapDN ) name.clone();
parentDn.remove( parentDn.size() - 1 );
checkNewParent( parentDn );
- String oid = ( String ) AttributeUtils.getAttribute( entry, m_oidAT ).get();
-
- if ( oidRegistry.hasOid( oid ) )
- {
- throw new LdapNamingException( "Oid " + oid + " for new objectClass is not unique.",
- ResultCodeEnum.OTHER );
- }
+ checkOidIsUnique( entry );
String schemaName = getSchemaName( name );
ObjectClass oc = factory.getObjectClass( entry, targetRegistries, schemaName );
@@ -156,6 +140,7 @@
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRdn );
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
+ checkOidIsUnique( newOid );
ObjectClass oc = factory.getObjectClass( targetEntry, targetRegistries, schema.getSchemaName() );
if ( ! schema.isDisabled() )
@@ -191,6 +176,7 @@
Schema newSchema = getSchema( newParentName );
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRn );
+ checkOidIsUnique( newOid );
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
ObjectClass oc = factory.getObjectClass( targetEntry, targetRegistries, newSchema.getSchemaName() );
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxCheckerHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxCheckerHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxCheckerHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxCheckerHandler.java Sun Aug 26 09:42:26 2007
@@ -34,9 +34,9 @@
import org.apache.directory.server.schema.registries.SyntaxRegistry;
import org.apache.directory.shared.ldap.constants.SchemaConstants;
import org.apache.directory.shared.ldap.exception.LdapInvalidNameException;
+import org.apache.directory.shared.ldap.exception.LdapNamingException;
import org.apache.directory.shared.ldap.exception.LdapOperationNotSupportedException;
import org.apache.directory.shared.ldap.message.AttributeImpl;
-import org.apache.directory.shared.ldap.message.ModificationItemImpl;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.name.Rdn;
@@ -55,14 +55,11 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$, $Date$
*/
-public class MetaSyntaxCheckerHandler implements SchemaChangeHandler
+public class MetaSyntaxCheckerHandler extends AbstractSchemaChangeHandler
{
- private final PartitionSchemaLoader loader;
private final SchemaEntityFactory factory;
- private final Registries targetRegistries;
private final SyntaxCheckerRegistry syntaxCheckerRegistry;
private final SyntaxRegistry syntaxRegistry;
- private final AttributeType oidAT;
private final AttributeType byteCodeAT;
private final AttributeType descAT;
private final AttributeType fqcnAT;
@@ -70,29 +67,16 @@
public MetaSyntaxCheckerHandler( Registries targetRegistries, PartitionSchemaLoader loader ) throws NamingException
{
- this.targetRegistries = targetRegistries;
- this.loader = loader;
+ super( targetRegistries, loader );
this.syntaxCheckerRegistry = targetRegistries.getSyntaxCheckerRegistry();
this.syntaxRegistry = targetRegistries.getSyntaxRegistry();
this.factory = new SchemaEntityFactory( targetRegistries );
- this.oidAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_OID_AT );
this.byteCodeAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_BYTECODE_AT );
this.descAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_DESCRIPTION_AT );
this.fqcnAT = targetRegistries.getAttributeTypeRegistry().lookup( MetaSchemaConstants.M_FQCN_AT );
}
- private String getOid( Attributes entry ) throws NamingException
- {
- Attribute oid = AttributeUtils.getAttribute( entry, oidAT );
- if ( oid == null )
- {
- return null;
- }
- return ( String ) oid.get();
- }
-
-
private SyntaxCheckerDescription getSyntaxCheckerDescription( String schemaName, Attributes entry )
throws NamingException
{
@@ -120,21 +104,16 @@
}
- private Schema getSchema( LdapDN name ) throws NamingException
- {
- return loader.getSchema( MetaSchemaUtils.getSchemaName( name ) );
- }
-
-
- private void modify( LdapDN name, Attributes entry, Attributes targetEntry, boolean cascade ) throws NamingException
+ protected void modify( LdapDN name, Attributes entry, Attributes targetEntry, boolean cascade ) throws NamingException
{
- String oldOid = getOid( entry );
+ String oid = getOid( entry );
SyntaxChecker syntaxChecker = factory.getSyntaxChecker( targetEntry, targetRegistries );
+
Schema schema = getSchema( name );
if ( ! schema.isDisabled() )
{
- syntaxCheckerRegistry.unregister( oldOid );
+ syntaxCheckerRegistry.unregister( oid );
SyntaxCheckerDescription syntaxCheckerDescription =
getSyntaxCheckerDescription( schema.getSchemaName(), targetEntry );
syntaxCheckerRegistry.register( syntaxCheckerDescription, syntaxChecker );
@@ -142,25 +121,17 @@
}
- public void modify( LdapDN name, int modOp, Attributes mods, Attributes entry,
- Attributes targetEntry, boolean cascade ) throws NamingException
- {
- modify( name, entry, targetEntry, cascade );
- }
-
-
- public void modify( LdapDN name, ModificationItemImpl[] mods, Attributes entry,
- Attributes targetEntry, boolean cascade ) throws NamingException
- {
- modify( name, entry, targetEntry, cascade );
- }
-
-
public void add( LdapDN name, Attributes entry ) throws NamingException
{
LdapDN parentDn = ( LdapDN ) name.clone();
parentDn.remove( parentDn.size() - 1 );
checkNewParent( parentDn );
+ String oid = getOid( entry );
+ if ( super.targetRegistries.getSyntaxCheckerRegistry().hasSyntaxChecker( oid ) )
+ {
+ throw new LdapNamingException( "Oid " + oid + " for new schema syntaxChecker is not unique.",
+ ResultCodeEnum.OTHER );
+ }
SyntaxChecker syntaxChecker = factory.getSyntaxChecker( entry, targetRegistries );
Schema schema = getSchema( name );
@@ -232,6 +203,12 @@
Schema schema = getSchema( name );
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRdn );
+ if ( super.targetRegistries.getSyntaxCheckerRegistry().hasSyntaxChecker( newOid ) )
+ {
+ throw new LdapNamingException( "Oid " + newOid + " for new schema syntaxChecker is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
if ( ! schema.isDisabled() )
{
@@ -262,7 +239,14 @@
Schema oldSchema = getSchema( oriChildName );
Schema newSchema = getSchema( newParentName );
Attributes targetEntry = ( Attributes ) entry.clone();
+
String newOid = NamespaceTools.getRdnValue( newRn );
+ if ( super.targetRegistries.getSyntaxCheckerRegistry().hasSyntaxChecker( newOid ) )
+ {
+ throw new LdapNamingException( "Oid " + newOid + " for new schema syntaxChecker is not unique.",
+ ResultCodeEnum.OTHER );
+ }
+
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
SyntaxChecker syntaxChecker = factory.getSyntaxChecker( targetEntry, targetRegistries );
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxHandler.java?rev=569837&r1=569836&r2=569837&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxHandler.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/schema/MetaSyntaxHandler.java Sun Aug 26 09:42:26 2007
@@ -67,13 +67,13 @@
protected void modify( LdapDN name, Attributes entry, Attributes targetEntry,
boolean cascade ) throws NamingException
{
- String oldOid = getOid( entry );
+ String oid = getOid( entry );
Schema schema = getSchema( name );
Syntax syntax = factory.getSyntax( targetEntry, targetRegistries, schema.getSchemaName() );
if ( ! schema.isDisabled() )
{
- syntaxRegistry.unregister( oldOid );
+ syntaxRegistry.unregister( oid );
syntaxRegistry.register( syntax );
}
}
@@ -84,6 +84,7 @@
LdapDN parentDn = ( LdapDN ) name.clone();
parentDn.remove( parentDn.size() - 1 );
checkNewParent( parentDn );
+ checkOidIsUnique( entry );
String schemaName = getSchemaName( name );
Syntax syntax = factory.getSyntax( entry, targetRegistries, schemaName );
@@ -142,6 +143,8 @@
Schema schema = getSchema( name );
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRdn );
+ checkOidIsUnique( newOid );
+
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
Syntax syntax = factory.getSyntax( targetEntry, targetRegistries, schema.getSchemaName() );
@@ -181,6 +184,8 @@
Schema newSchema = getSchema( newParentName );
Attributes targetEntry = ( Attributes ) entry.clone();
String newOid = NamespaceTools.getRdnValue( newRn );
+ checkOidIsUnique( newOid );
+
targetEntry.put( new AttributeImpl( MetaSchemaConstants.M_OID_AT, newOid ) );
Syntax syntax = factory.getSyntax( targetEntry, targetRegistries, newSchema.getSchemaName() );
@@ -208,7 +213,7 @@
{
checkNewParent( newParentName );
String oid = getOid( entry );
-
+
Set<SearchResult> dependees = dao.listSyntaxDependents( oid );
if ( dependees != null && dependees.size() > 0 )
{