in interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaSubentryManager.java [436:562]
private void modifyAddOperation( Interceptor nextInterceptor, int position, ModifyOperationContext modifyContext,
String opAttrOid,
Attribute mods, boolean doCascadeModify ) throws LdapException
{
if ( doCascadeModify )
{
LOG.error( CASCADING_ERROR );
}
int index = opAttr2handlerIndex.get( opAttrOid );
switch ( index )
{
case COMPARATOR_INDEX :
LdapComparatorDescription[] comparatorDescriptions = parsers.parseComparators( mods );
for ( LdapComparatorDescription comparatorDescription : comparatorDescriptions )
{
subentryModifier.add( nextInterceptor, position, modifyContext, comparatorDescription );
}
break;
case NORMALIZER_INDEX :
NormalizerDescription[] normalizerDescriptions = parsers.parseNormalizers( mods );
for ( NormalizerDescription normalizerDescription : normalizerDescriptions )
{
subentryModifier.add( nextInterceptor, position, modifyContext, normalizerDescription );
}
break;
case SYNTAX_CHECKER_INDEX :
SyntaxCheckerDescription[] syntaxCheckerDescriptions = parsers.parseSyntaxCheckers( mods );
for ( SyntaxCheckerDescription syntaxCheckerDescription : syntaxCheckerDescriptions )
{
subentryModifier.add( nextInterceptor, position, modifyContext, syntaxCheckerDescription );
}
break;
case SYNTAX_INDEX :
LdapSyntax[] syntaxes = parsers.parseLdapSyntaxes( mods );
for ( LdapSyntax syntax : syntaxes )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, syntax );
}
break;
case MATCHING_RULE_INDEX :
MatchingRule[] mrs = parsers.parseMatchingRules( mods );
for ( MatchingRule mr : mrs )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, mr );
}
break;
case ATTRIBUTE_TYPE_INDEX :
AttributeType[] ats = parsers.parseAttributeTypes( mods );
for ( AttributeType at : ats )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, at );
}
break;
case OBJECT_CLASS_INDEX :
ObjectClass[] ocs = parsers.parseObjectClasses( mods );
for ( ObjectClass oc : ocs )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, oc );
}
break;
case MATCHING_RULE_USE_INDEX :
MatchingRuleUse[] mrus = parsers.parseMatchingRuleUses( mods );
for ( MatchingRuleUse mru : mrus )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, mru );
}
break;
case DIT_STRUCTURE_RULE_INDEX :
DitStructureRule[] dsrs = parsers.parseDitStructureRules( mods );
for ( DitStructureRule dsr : dsrs )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, dsr );
}
break;
case DIT_CONTENT_RULE_INDEX :
DitContentRule[] dcrs = parsers.parseDitContentRules( mods );
for ( DitContentRule dcr : dcrs )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, dcr );
}
break;
case NAME_FORM_INDEX :
NameForm[] nfs = parsers.parseNameForms( mods );
for ( NameForm nf : nfs )
{
subentryModifier.addSchemaObject( nextInterceptor, position, modifyContext, nf );
}
break;
default:
throw new IllegalStateException( I18n.err( I18n.ERR_28019_UNKOWN_INDEX, index ) );
}
}