in server-annotations/src/main/java/org/apache/directory/server/factory/ServerAnnotationProcessor.java [123:246]
public static LdapServer instantiateLdapServer( CreateLdapServer createLdapServer, DirectoryService directoryService )
{
if ( createLdapServer != null )
{
LdapServer ldapServer = new LdapServer();
ldapServer.setServiceName( createLdapServer.name() );
// Read the transports
createTransports( ldapServer, createLdapServer.transports() );
// Associate the DS to this LdapServer
ldapServer.setDirectoryService( directoryService );
// Propagate the anonymous flag to the DS
directoryService.setAllowAnonymousAccess( createLdapServer.allowAnonymousAccess() );
ldapServer.setSaslHost( createLdapServer.saslHost() );
ldapServer.setSaslPrincipal( createLdapServer.saslPrincipal() );
if ( !Strings.isEmpty( createLdapServer.keyStore() ) )
{
ldapServer.setKeystoreFile( createLdapServer.keyStore() );
ldapServer.setCertificatePassword( createLdapServer.certificatePassword() );
}
else
{
try
{
// Create a temporary keystore, be sure to remove it when exiting the test
File keyStoreFile = CertificateUtil.createTempKeyStore( "testStore", "secret".toCharArray() );
ldapServer.setKeystoreFile( keyStoreFile.getAbsolutePath() );
ldapServer.setCertificatePassword( "secret" );
}
catch ( Exception e )
{
}
}
for ( Class<?> extOpClass : createLdapServer.extendedOpHandlers() )
{
try
{
ExtendedOperationHandler extOpHandler = ( ExtendedOperationHandler ) extOpClass.newInstance();
ldapServer.addExtendedOperationHandler( extOpHandler );
}
catch ( Exception e )
{
throw new RuntimeException( I18n.err( I18n.ERR_41001_CANOT_ADD_EXTENDED_OPERATION, 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_41002_CANNOT_ADD_SASL_MLECHANISM, 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 ) )
{
try
{
ntlmHandler.setNtlmProvider( ( NtlmProvider ) ntlmProviderClass.newInstance() );
}
catch ( Exception e )
{
throw new RuntimeException( I18n.err( I18n.ERR_41003_FAILED_TO_ADD_NTLM_PROVIDER ), e );
}
}
}
List<String> realms = new ArrayList<>();
for ( String s : createLdapServer.saslRealms() )
{
realms.add( s );
}
ldapServer.setSaslRealms( realms );
if ( createLdapServer.trustManagers() != null && createLdapServer.trustManagers().length > 0 )
{
TrustManager[] trustManagers = new TrustManager[createLdapServer.trustManagers().length];
for ( int i = 0; i < createLdapServer.trustManagers().length; i++ )
{
try
{
trustManagers[i] = ( TrustManager ) createLdapServer.trustManagers()[i].newInstance();
}
catch ( InstantiationException | IllegalAccessException e )
{
throw new RuntimeException( I18n.err( I18n.ERR_41004_INVALID_TRUST_MANAGER_CLASS, createLdapServer.trustManagers()[i].getName() ), e );
}
}
ldapServer.setTrustManagers( trustManagers );
}
// Set the limits
ldapServer.setMaxSizeLimit( createLdapServer.maxSizeLimit() );
ldapServer.setMaxTimeLimit( createLdapServer.maxTimeLimit() );
return ldapServer;
}
else
{
return null;
}
}