*/
public static LdapServer instantiateLdapServer( CreateLdapServer createLdapServer, DirectoryService directoryService, int startPort )
{
if ( createLdapServer != null )
{
LdapServer ldapServer = new LdapServer();
ldapServer.setServiceName( createLdapServer.name() );
// Read the transports
createTransports( ldapServer, createLdapServer.transports(), startPort );
// Associate the DS to this LdapServer
ldapServer.setDirectoryService( directoryService );
ldapServer.setSaslHost( createLdapServer.saslHost() );
ldapServer.setSaslPrincipal( createLdapServer.saslPrincipal() );
if( !Strings.isEmpty( createLdapServer.keyStore() ) )
{
ldapServer.setKeystoreFile( createLdapServer.keyStore() );
ldapServer.setCertificatePassword( createLdapServer.certificatePassword() );
}
for( Class<?> extOpClass : createLdapServer.extendedOpHandlers() )
{
try
{
ExtendedOperationHandler extOpHandler = ( ExtendedOperationHandler ) extOpClass.newInstance();
ldapServer.addExtendedOperationHandler( extOpHandler );
}
catch( Exception e )
{
throw new RuntimeException( I18n.err( I18n.ERR_690, extOpClass.getName() ), e );
}
}
for( SaslMechanism saslMech : createLdapServer.saslMechanisms() )
{
try
{
MechanismHandler handler = ( MechanismHandler ) saslMech.implClass().newInstance();
ldapServer.addSaslMechanismHandler( saslMech.name(), handler );
}
catch( Exception e )
{
throw new RuntimeException( I18n.err( I18n.ERR_691, saslMech.name(), saslMech.implClass().getName() ), e );
}
}
NtlmMechanismHandler ntlmHandler = ( NtlmMechanismHandler ) ldapServer.getSaslMechanismHandlers().get( SupportedSaslMechanisms.NTLM );
if( ntlmHandler != null )
{
Class<?> ntlmProviderClass = createLdapServer.ntlmProvider();
// default value is a invalid Object.class
if( ( ntlmProviderClass != null ) && ( ntlmProviderClass != Object.class ) )