/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2003-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library 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;
* version 2.1 of the License.
*
* This library 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.
*/
package org.geotools.data.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.PooledConnection;
/**
* Provides a container for a PooledConnection so we can store extra information such as when it
* was last used and whether it is currently in use.
*
* <p>
* This class should not be subclassed.
* </p>
*
* @author Sean Geoghegan, Defence Science and Technology Organisation
* @author $Author: cholmesny $
* @source $URL$
* @version $Id$ Last Modified: $Date: 2003/09/22 18:54:39 $
*
* @deprecated scheduled for removal in 2.7, use classes in org.geotools.jdbc
*/
final class ManagedPooledConnection {
/** The timestamp the last use of the connection */
long lastUsed;
/** True if the connection is in use */
boolean inUse = false;
/** The actual connection we manage */
PooledConnection pooledConn;
/**
* Creates a ManagedPooledConnection for a Pooled Connection.
*
* @param pooledConn The PooledConnection to manage.
*/
ManagedPooledConnection(PooledConnection pooledConn) {
this.pooledConn = pooledConn;
}
/**
* Check whether this PooledConnection is still valid.
*
* <p>
* A Pooled Connection is valid if it is either in use or it is still returning valid
* Connections. This method may trigger ConnectionEvents, so if you dont want to receive an
* event for this method you should remove any ConnectionEventListeners from the pooledConn
* prior to calling.
* </p>
*
* @return True if the connection is in use or is still returning valid logical Connections.
*/
boolean isValid() {
if (inUse) {
return true;
} else {
try {
Connection conn = pooledConn.getConnection();
conn.close();
return true;
} catch (SQLException e) {
return false;
}
}
}
}