org.apache.archiva.redback.common.ldap.connection.LdapConnectionConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.archiva.redback.common.ldap.connection.LdapConnectionConfiguration.java

Source

package org.apache.archiva.redback.common.ldap.connection;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import org.apache.commons.lang.StringUtils;

import javax.naming.InvalidNameException;
import javax.naming.ldap.LdapName;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.TreeMap;

/**
 * This class contains the configuration for a ldap connection.
 * <p/>
 * Properties of a ldap connection:
 * <ul>
 * <li>Hostname - String, required.
 * <li>Port - int, not required. If 0 then the default value is used by the ldap driver.
 * <li>Ssl - boolean, not required. If true then the ldaps will be used.
 * <li>Base DN - String, required.
 * <li>Context factory - String, required.
 * <li>Bind DN - String, not required.
 * <li>Password - String, not required.
 * </ul>
 * Note that both the bind dn and password must be set if any are set.
 *
 * @author <a href="mailto:trygvis@inamo.no">trygvis</a>
 *
 */
public class LdapConnectionConfiguration {
    private String hostname;

    private int port;

    private boolean ssl;

    private LdapName baseDn;

    private String contextFactory;

    private LdapName bindDn;

    private String password;

    private String authenticationMethod;

    private List<Class<?>> objectFactories;

    private List<Class<?>> stateFactories;

    private Properties extraProperties;

    public LdapConnectionConfiguration() {
        // no op
    }

    public LdapConnectionConfiguration(String hostname, int port, String baseDn, String contextFactory,
            String bindDn, String password, String authenticationMethod, Properties extraProperties)
            throws InvalidNameException, LdapException {
        this.hostname = hostname;
        this.port = port;

        if (baseDn != null) {
            this.baseDn = new LdapName(baseDn);
        }

        if (bindDn != null) {
            this.bindDn = new LdapName(bindDn);
        }

        this.contextFactory = contextFactory;

        this.password = password;

        this.authenticationMethod = authenticationMethod;

        this.extraProperties = extraProperties;

        check();
    }

    public LdapConnectionConfiguration(String hostname, int port, LdapName baseDn, String contextFactory)
            throws LdapException {
        this.hostname = hostname;

        this.port = port;

        this.baseDn = baseDn;

        this.contextFactory = contextFactory;

        check();
    }

    // ----------------------------------------------------------------------
    // Accessors
    // ----------------------------------------------------------------------

    public String getHostname() {
        return hostname;
    }

    public void setHostname(String hostname) {
        this.hostname = hostname;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public boolean isSsl() {
        return ssl;
    }

    public void setSsl(boolean ssl) {
        this.ssl = ssl;
    }

    public LdapName getBaseDn() {
        return baseDn;
    }

    public void setBaseDn(LdapName baseDn) {
        this.baseDn = baseDn;
    }

    public void setBaseDn(String baseDn) throws InvalidNameException {
        if (baseDn != null) {
            this.baseDn = new LdapName(baseDn);
        }
    }

    public String getContextFactory() {
        return contextFactory;
    }

    public void setContextFactory(String contextFactory) {
        this.contextFactory = contextFactory;
    }

    public LdapName getBindDn() {
        return bindDn;
    }

    public void setBindDn(LdapName bindDn) {
        this.bindDn = bindDn;
    }

    public void setBindDn(String bindDn) throws InvalidNameException {
        if (bindDn != null) {
            this.bindDn = new LdapName(bindDn);
        }
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAuthenticationMethod() {
        return authenticationMethod;
    }

    public void setAuthenticationMethod(String authenticationMethod) {
        this.authenticationMethod = authenticationMethod;
    }

    public List<Class<?>> getObjectFactories() {
        if (objectFactories == null) {
            objectFactories = new ArrayList<Class<?>>(0);
        }

        return objectFactories;
    }

    public void setObjectFactories(List<Class<?>> objectFactories) {
        this.objectFactories = objectFactories;
    }

    public List<Class<?>> getStateFactories() {
        if (stateFactories == null) {
            stateFactories = new ArrayList<Class<?>>(0);
        }

        return stateFactories;
    }

    public void setStateFactories(List<Class<?>> stateFactories) {
        this.stateFactories = stateFactories;
    }

    public Properties getExtraProperties() {
        if (extraProperties == null) {
            extraProperties = new Properties();
        }

        return extraProperties;
    }

    public void setExtraProperties(Properties extraProperties) {
        this.extraProperties = extraProperties;
    }

    // ----------------------------------------------------------------------
    //
    // ----------------------------------------------------------------------

    public void check() throws LdapException {
        if (port < 0 || port > 65535) {
            throw new LdapException("The port must be between 1 and 65535.");
        }
        if (baseDn == null) {
            throw new LdapException("The base DN must be set.");
        }
        if (StringUtils.isEmpty(contextFactory)) {
            throw new LdapException("The context factory must be set.");
        }
        if (password != null && bindDn == null) {
            throw new LdapException("The password cant be set unless the bind dn is.");
        }

        if (extraProperties == null) {
            extraProperties = new Properties();
        }
    }

    // ----------------------------------------------------------------------
    //
    // ----------------------------------------------------------------------

    public String toString() {
        return "{LdapConnectionConfiguration: " + "hostname: " + getHostname() + ", " + "port: " + getPort() + ", "
                + "ssl: " + isSsl() + ", " + "baseDn: " + getBaseDn() + ", " + "contextFactory: "
                + getContextFactory() + ", " + "bindDn: " + getBindDn() + ", " +
                // not display password
                //"password: " + getPassword() + ", " +
                "authenticationMethod: " + getAuthenticationMethod() + ", " + "objectFactories: "
                + getObjectFactories() + ", " + "stateFactories: " + getStateFactories() + ", "
                + "extraProperties: " + new TreeMap<Object, Object>(extraProperties).toString() + "}";
    }
}