*/
public void add( NextInterceptor next, AddOperationContext addContext ) throws Exception
{
DN normName = addContext.getDn();
ServerEntry entry = addContext.getEntry();
if ( ( entry.get( SchemaConstants.USER_PASSWORD_AT ) != null ) &&
( entry.get( KerberosAttribute.KRB5_PRINCIPAL_NAME_AT ) != null ) )
{
log.debug( "Adding the entry '{}' for DN '{}'.", entry, normName.getName() );
ServerBinaryValue userPassword = (ServerBinaryValue)entry.get( SchemaConstants.USER_PASSWORD_AT ).get();
String strUserPassword = userPassword.getString();
if ( log.isDebugEnabled() )
{
StringBuffer sb = new StringBuffer();
sb.append( "'" + strUserPassword + "' ( " );
sb.append( userPassword );
sb.append( " )" );
log.debug( "Adding Attribute id : 'userPassword', Values : [ {} ]", sb.toString() );
}
Value<?> principalNameValue = entry.get( KerberosAttribute.KRB5_PRINCIPAL_NAME_AT ).get();
String principalName = principalNameValue.getString();
log.debug( "Got principal '{}' with userPassword '{}'.", principalName, strUserPassword );
Map<EncryptionType, EncryptionKey> keys = generateKeys( principalName, strUserPassword );
entry.put( KerberosAttribute.KRB5_PRINCIPAL_NAME_AT, principalName );
entry.put( KerberosAttribute.KRB5_KEY_VERSION_NUMBER_AT, "0" );
entry.put( getKeyAttribute( addContext.getSession().getDirectoryService().getSchemaManager(), keys ) );
log.debug( "Adding modified entry '{}' for DN '{}'.", entry, normName
.getName() );
}