* does not exist when it potentially could outside of this upSuffix.
*/
if ( !normalizedAliasTargetDn.isDescendantOf( suffixDn ) )
{
String msg = I18n.err( I18n.ERR_225, suffixDn.getName() );
LdapAliasDereferencingException e = new LdapAliasDereferencingException( msg );
//e.setResolvedName( aliasDn );
throw e;
}
// L O O K U P T A R G E T I D
targetId = getEntryId( normalizedAliasTargetDn );
/*
* Check For Target Existence
*
* We do not allow the creation of inconsistent aliases. Aliases should
* not be broken links. If the target does not exist we start screaming
*/
if ( null == targetId )
{
// Complain about target not existing
String msg = I18n.err( I18n.ERR_581, aliasDn.getName(), aliasTarget );
LdapAliasException e = new LdapAliasException( msg );
//e.setResolvedName( aliasDn );
throw e;
}
/*
* Detect Direct Alias Chain Creation
*
* Rather than resusitate the target to test if it is an alias and fail
* due to chaing creation we use the alias index to determine if the
* target is an alias. Hence if the alias we are about to create points
* to another alias as its target in the aliasedObjectName attribute,
* then we have a situation where an alias chain is being created.
* Alias chaining is not allowed so we throw and exception.
*/
if ( null != aliasIdx.reverseLookup( targetId ) )
{
String msg = I18n.err( I18n.ERR_227 );
LdapAliasDereferencingException e = new LdapAliasDereferencingException( msg );
//e.setResolvedName( aliasDn );
throw e;
}
// Add the alias to the simple alias index