subentries.close();
}
catch ( Exception e )
{
throw new LdapOperationErrorException( e.getMessage(), e );
}
finally
{
try
{
subentries.close();
}
catch ( Exception e )
{
LOG.error( I18n.err( I18n.ERR_168 ), e );
}
}
// search for all selected entries by the new SS and add references to subentry
subentry = directoryService.getSubentryCache().getSubentry( dn );
List<Attribute> operationalAttributes = getSubentryOperationalAttributes( dn, subentry );
Dn newBaseDn = apName;
newBaseDn = newBaseDn.add( ssNew.getBase() );
searchOperationContext = new SearchOperationContext( modifyContext.getSession(), newBaseDn, filter,
controls );
searchOperationContext.setAliasDerefMode( AliasDerefMode.NEVER_DEREF_ALIASES );
subentries = nexus.search( searchOperationContext );
try
{
while ( subentries.next() )
{
Entry candidate = subentries.get();
Dn candidateDn = candidate.getDn();
if ( directoryService.getEvaluator().evaluate( ssNew, apName, candidateDn, candidate ) )
{
nexus.modify( new ModifyOperationContext( modifyContext.getSession(), candidateDn,
getOperationalModsForAdd( candidate, operationalAttributes ) ) );
}
}
subentries.close();
}
catch ( Exception e )
{
throw new LdapOperationErrorException( e.getMessage(), e );
}
finally
{
try
{