import static org.testng.Assert.assertTrue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.adbcj.Connection;
import org.adbcj.ConnectionManager;
import org.adbcj.ConnectionManagerProvider;
import org.adbcj.DbFuture;
import org.adbcj.DbListener;
public class Test {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
ConnectionManager connectionManager = ConnectionManagerProvider.createConnectionManager("adbcj:mysql://localhost/adbcjtck", "adbcjtck", "adbcjtck");
final boolean[] callbacks = {false, false};
final CountDownLatch latch = new CountDownLatch(2);
DbFuture<Connection> connectFuture = connectionManager.connect().addListener(new DbListener<Connection>() {
public void onCompletion(DbFuture<Connection> future) throws Exception {
// Indicate that callback has been invoked
callbacks[0] = true;
latch.countDown();
}
});
Connection connection = connectFuture.get(5, TimeUnit.SECONDS);
assertTrue(!connection.isClosed());
DbFuture<Void> closeFuture = connection.close(true).addListener(new DbListener<Void>() {
public void onCompletion(DbFuture<Void> future) throws Exception {
// Indicate that callback has been invoked
callbacks[1] = true;
latch.countDown();
}
});
closeFuture.get(5, TimeUnit.SECONDS);
assertTrue(connection.isClosed());
latch.await(1, TimeUnit.SECONDS);
assertTrue(callbacks[0], "Callback on connection future was not invoked");
assertTrue(callbacks[1], "Callback on close future was not invoked");
connectionManager.close(true);
}
}