All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.amc.sakai.user.MaxLifetimeLdapConnectionLivenessValidator Maven / Gradle / Ivy

There is a newer version: 11.4
Show newest version
/**********************************************************************************
 * $URL$
 * $Id$
 ***********************************************************************************
 *
 * 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 org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.novell.ldap.LDAPConnection;

/**
 * 
 * @author dmccallum
 *
 */
public class MaxLifetimeLdapConnectionLivenessValidator implements LdapConnectionLivenessValidator {

	/** Class-specific logger */
	private static Log log = LogFactory.getLog(MaxLifetimeLdapConnectionLivenessValidator.class);
	
	public static final long DEFAULT_MAX_TTL = -1L;
	
	/**
	 * Max connection life in millis
	 */
	private long maxTtl;

	/**
	 * Tests if the allowable lifetime of the given connection has already
	 * elapsed. Edge cases:
	 * 
	 * 
    *
  1. Non-{@link PooledLDAPConnection} - returns true
  2. *
  3. maxTtl <= 0 - returns true
  4. *
  5. Connection birthdate in the future - returns true
  6. *
* * */ public boolean isConnectionAlive(LDAPConnection connectionToTest) { if ( !(connectionToTest instanceof PooledLDAPConnection) ) { if (log.isDebugEnabled()) { log.debug("isConnectionAlive(): connection not of expected type [" + (connectionToTest == null ? "null" : connectionToTest.getClass().getName()) + "], returning true"); } return true; } if ( maxTtl <= 0 ) { if ( log.isDebugEnabled() ) { log.debug("isConnectionAlive(): maxTtl set to infinite [" + maxTtl + "], returning true"); } return true; } long now = System.currentTimeMillis(); long then = ((PooledLDAPConnection)connectionToTest).getBirthdate(); long elapsed = now - then; boolean isAlive = elapsed <= maxTtl; if ( log.isDebugEnabled() ) { log.debug("isConnectionAlive(): [now = " + now + "][then = " + then + "][elapsed = " + elapsed + "][max TTL = " + maxTtl + "][isAlive = " + isAlive + "]"); } return isAlive; } /** * Get the max connection lifetime, in millis. Values * less than or equals to zero are considered infinite, i.e. * no TTL. * * @return */ public long getMaxTtl() { return maxTtl; } /** * Assign the max connection lifetime, in millis. Values * less than or equal to zero are considered infinite, i.e. * no TTL. * * @param maxTtl */ public void setMaxTtl(long maxTtl) { this.maxTtl = maxTtl; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy