/* * JBoss, Home of Professional Open Source. * Copyright 2012, Red Hat, Inc., and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.as.test.integration.security.common; import javax.enterprise.util.AnnotationLiteral; import org.apache.directory.server.annotations.CreateLdapServer; import org.apache.directory.server.annotations.CreateTransport; import org.apache.directory.server.annotations.SaslMechanism; /** * A helper implementation of {@link CreateLdapServer} annotation which allows to configure values. * * @author Josef Cacek */ public class ManagedCreateLdapServer extends AnnotationLiteral<CreateLdapServer> implements CreateLdapServer { private static final long serialVersionUID = 1L; /** The instance name */ private String name; /** The transports to use, default to LDAP */ private CreateTransport[] transports; /** The LdapServer factory */ private Class<?> factory; /** The maximum size limit. */ private long maxSizeLimit; /** The maximum time limit. */ private int maxTimeLimit; /** Tells if anonymous access are allowed or not. */ private boolean allowAnonymousAccess; /** The external keyStore file to use, default to the empty string */ private String keyStore; /** The certificate password in base64, default to the empty string */ private String certificatePassword; /** name of the classes implementing extended operations */ private Class<?>[] extendedOpHandlers; /** supported set of SASL mechanisms */ private SaslMechanism[] saslMechanisms; /** NTLM provider class, default value is an invalid class */ private Class<?> ntlmProvider; /** The name of this host, validated during SASL negotiation. */ private String saslHost; /** The service principal, used by GSSAPI. */ private String saslPrincipal; /** The service principal, used by GSSAPI. */ private String[] saslRealms; // Constructors ---------------------------------------------------------- /** * Create a new ManagedCreateLdapServer. * * @param createLdapServer */ public ManagedCreateLdapServer(CreateLdapServer createLdapServer) { name = createLdapServer.name(); transports = createLdapServer.transports(); factory = createLdapServer.factory(); maxSizeLimit = createLdapServer.maxSizeLimit(); maxTimeLimit = createLdapServer.maxTimeLimit(); allowAnonymousAccess = createLdapServer.allowAnonymousAccess(); keyStore = createLdapServer.keyStore(); certificatePassword = createLdapServer.certificatePassword(); extendedOpHandlers = createLdapServer.extendedOpHandlers(); saslMechanisms = createLdapServer.saslMechanisms(); ntlmProvider = createLdapServer.ntlmProvider(); saslHost = createLdapServer.saslHost(); saslPrincipal = createLdapServer.saslPrincipal(); saslRealms = createLdapServer.saslRealms(); } // Public methods -------------------------------------------------------- /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#name() */ public String name() { return name; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#transports() */ public CreateTransport[] transports() { return transports; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#factory() */ public Class<?> factory() { return factory; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#maxSizeLimit() */ public long maxSizeLimit() { return maxSizeLimit; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#maxTimeLimit() */ public int maxTimeLimit() { return maxTimeLimit; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#allowAnonymousAccess() */ public boolean allowAnonymousAccess() { return allowAnonymousAccess; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#keyStore() */ public String keyStore() { return keyStore; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#certificatePassword() */ public String certificatePassword() { return certificatePassword; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#extendedOpHandlers() */ public Class<?>[] extendedOpHandlers() { return extendedOpHandlers; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#saslMechanisms() */ public SaslMechanism[] saslMechanisms() { return saslMechanisms; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#ntlmProvider() */ public Class<?> ntlmProvider() { return ntlmProvider; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#saslHost() */ public String saslHost() { return saslHost; } /** * * @return * @see org.apache.directory.server.annotations.CreateLdapServer#saslPrincipal() */ public String saslPrincipal() { return saslPrincipal; } @Override public String[] saslRealms() { return saslRealms; } /** * Set the name. * * @param name The name to set. */ public void setName(String name) { this.name = name; } /** * Set the transports. * * @param transports The transports to set. */ public void setTransports(CreateTransport[] transports) { this.transports = transports; } /** * Set the factory. * * @param factory The factory to set. */ public void setFactory(Class<?> factory) { this.factory = factory; } /** * Set the maxSizeLimit. * * @param maxSizeLimit The maxSizeLimit to set. */ public void setMaxSizeLimit(long maxSizeLimit) { this.maxSizeLimit = maxSizeLimit; } /** * Set the maxTimeLimit. * * @param maxTimeLimit The maxTimeLimit to set. */ public void setMaxTimeLimit(int maxTimeLimit) { this.maxTimeLimit = maxTimeLimit; } /** * Set the allowAnonymousAccess. * * @param allowAnonymousAccess The allowAnonymousAccess to set. */ public void setAllowAnonymousAccess(boolean allowAnonymousAccess) { this.allowAnonymousAccess = allowAnonymousAccess; } /** * Set the keyStore. * * @param keyStore The keyStore to set. */ public void setKeyStore(String keyStore) { this.keyStore = keyStore; } /** * Set the certificatePassword. * * @param certificatePassword The certificatePassword to set. */ public void setCertificatePassword(String certificatePassword) { this.certificatePassword = certificatePassword; } /** * Set the extendedOpHandlers. * * @param extendedOpHandlers The extendedOpHandlers to set. */ public void setExtendedOpHandlers(Class<?>[] extendedOpHandlers) { this.extendedOpHandlers = extendedOpHandlers; } /** * Set the saslMechanisms. * * @param saslMechanisms The saslMechanisms to set. */ public void setSaslMechanisms(SaslMechanism[] saslMechanisms) { this.saslMechanisms = saslMechanisms; } /** * Set the ntlmProvider. * * @param ntlmProvider The ntlmProvider to set. */ public void setNtlmProvider(Class<?> ntlmProvider) { this.ntlmProvider = ntlmProvider; } /** * Set the saslHost. * * @param saslHost The saslHost to set. */ public void setSaslHost(String saslHost) { this.saslHost = saslHost; } /** * Set the saslPrincipal. * * @param saslPrincipal The saslPrincipal to set. */ public void setSaslPrincipal(String saslPrincipal) { this.saslPrincipal = saslPrincipal; } }