/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/providers/trunk/jldap/src/java/edu/amc/sakai/user/LdapConnectionManager.java $ * $Id: LdapConnectionManager.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation * * Licensed under the Educational Community 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.opensource.org/licenses/ECL-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. * **********************************************************************************/ package edu.amc.sakai.user; import com.novell.ldap.LDAPConnection; import com.novell.ldap.LDAPException; /** * Implementations manage <code>LDAPConnection</code> allocation. * * @see LdapConnectionManager * @author Dan McCallum, Unicon Inc * @author John Lewis, Unicon Inc * */ public interface LdapConnectionManager { /** * Initializes an instance for use, typically * by digesting the contents of the assigned * {@link LdapConnectionManagerConfig}. Usually * called by Spring. */ public void init(); /** * Retrieve an <code>LDAPConnection</code> -- the connection may * already be bound depending on the configuration * @return a connected <code>LDAPConnection</code> * @throws LDAPException if the <code>LDAPConnection</code> allocation fails */ public LDAPConnection getConnection() throws LDAPException; /** * Retrieve a bound <code>LDAPConnection</code> using the indicated credentials * @param dn the distringuished name for binding * @param pw the password for binding * @return a connected <code>LDAPConnection</code> * @throws LDAPException if the <code>LDAPConnection</code> allocation fails */ public LDAPConnection getBoundConnection(String dn, String pw) throws LDAPException; /** * Return an <code>LDAPConnection</code>. This can allow for * connections to be pooled instead of just destroyed. * @param conn an <code>LDAPConnection</code> that you no longer need */ public void returnConnection(LDAPConnection conn); /** * Assign the LDAPConnection management configuration. * Should typically be invoked once and followed by a * call to init(). * @param config a reference to a {@link LdapConnectionManagerConfig}. Should be cacheable without defensive copying. */ public void setConfig(LdapConnectionManagerConfig config); /** * Retrieve the currently assigned {@link LdapConnectionManagerConfig}. * @return the currently assigned {@link LdapConnectionManagerConfig}, if any */ public LdapConnectionManagerConfig getConfig(); /** * Shuts down an instance. Usually called by Spring. */ public void destroy(); }