/*******************************************************************************
* Copyright (c) 2009 Cambridge Semantics Incorporated.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* File: $Source$
* Created by: Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com </a>)
* Created on: Aug 20, 2009
* Revision: $Id$
*
* Contributors:
* Cambridge Semantics Incorporated - initial API and implementation
*******************************************************************************/
package org.openanzo.security.ldap;
import java.util.Dictionary;
import org.apache.commons.pool.PoolableObjectFactory;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.openanzo.exceptions.AnzoException;
import org.openanzo.exceptions.ExceptionConstants;
import com.novell.ldap.LDAPConnection;
/**
* @author Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com</a>)
*/
public class LdapConnectionManager {
/**
*
*/
protected GenericObjectPool pool;
/**
*
*/
protected PoolableObjectFactory factory;
/**
*
* @param configProperties
* @throws AnzoException
*/
public LdapConnectionManager(Dictionary<? extends Object, ? extends Object> configProperties) throws AnzoException {
factory = new LdapConnectionFactory(configProperties);
pool = new GenericObjectPool(factory);
pool.setTestOnBorrow(true);
}
/**
* @param userDN
* @param userPassword
* @param host
* @param port
*
*/
public LdapConnectionManager(String userDN, String userPassword, String host, Integer port, boolean useSSL, String keystoreFile, String keystorePassword, String keystoreType, String truststoreFile, String truststorePassword, String truststoreType) {
factory = new LdapConnectionFactory(userDN, userPassword, host, port, useSSL, keystoreFile, keystorePassword, keystoreType, truststoreFile, truststorePassword, truststoreType);
pool = new GenericObjectPool(factory);
pool.setTestOnBorrow(true);
}
/**
* @return connection
* @throws AnzoException
*/
public LDAPConnection getConnection() throws AnzoException {
try {
return (LDAPConnection) pool.borrowObject();
} catch (Exception e) {
throw new AnzoException(ExceptionConstants.SERVER.LDAP_ERROR, e);
}
}
/**
*
* @param context
* @throws AnzoException
*/
public void returnConnection(LDAPConnection context) throws AnzoException {
try {
pool.returnObject(context);
} catch (Exception e) {
throw new AnzoException(ExceptionConstants.SERVER.LDAP_ERROR, e);
}
}
/**
*
* @throws AnzoException
*/
public void close() throws AnzoException {
try {
pool.close();
} catch (Exception e) {
throw new AnzoException(ExceptionConstants.SERVER.LDAP_ERROR, e);
}
}
}