package com.w11k.lsql.jdbc; import javax.sql.DataSource; import java.sql.Connection; import java.util.concurrent.Callable; public final class ConnectionProviders { /** * Creates a connection provider that always return the same {@code Connection} * instance. Mostly useful for tests. * * @param connectionInstance The connection instance to use * @return the provider */ public static Callable<Connection> fromInstance(final Connection connectionInstance) { return new Callable<Connection>() { public Connection call() throws Exception { return connectionInstance; } }; } /** * Creates a connection provider based on a {@code DataSource}. * * @param dataSource The DataSource to use * @return the provider */ public static Callable<Connection> fromDataSource(final DataSource dataSource) { return new Callable<Connection>() { @Override public Connection call() throws Exception { return dataSource.getConnection(); } }; } }