package org.infinispan.persistence.jdbc.connectionfactory; import java.sql.Connection; import org.infinispan.commons.util.Util; import org.infinispan.persistence.jdbc.configuration.ConnectionFactoryConfiguration; import org.infinispan.persistence.spi.PersistenceException; /** * Defines the functionality a connection factory should implement. * * @author Mircea.Markus@jboss.com */ public abstract class ConnectionFactory { /** * Constructs a {@link ConnectionFactory} based on the supplied class * name. */ public static ConnectionFactory getConnectionFactory(String connectionFactoryClass, ClassLoader classLoader) throws PersistenceException { return (ConnectionFactory) Util.getInstance(connectionFactoryClass, classLoader); } /** * Constructs a {@link ConnectionFactory} based on the supplied class * name. */ public static ConnectionFactory getConnectionFactory(Class<? extends ConnectionFactory> connectionFactoryClass) throws PersistenceException { return Util.getInstance(connectionFactoryClass); } /** * Starts the connection factory. A pooled factory might be create connections here. */ public abstract void start(ConnectionFactoryConfiguration factoryConfiguration, ClassLoader classLoader) throws PersistenceException; /** * Closes the connection factory, including all allocated connections etc. */ public abstract void stop(); /** * Fetches a connection from the factory. */ public abstract Connection getConnection() throws PersistenceException; /** * Destroys a connection. Important: null might be passed in, as an valid argument. */ public abstract void releaseConnection(Connection conn); }