1 package org.wamblee.support.persistence;
3 import java.util.Arrays;
5 import java.util.logging.Logger;
7 import javax.sql.DataSource;
9 import org.apache.commons.dbcp.ConnectionFactory;
10 import org.apache.commons.dbcp.DriverManagerConnectionFactory;
11 import org.apache.commons.dbcp.PoolableConnectionFactory;
12 import org.apache.commons.dbcp.PoolingDataSource;
13 import org.apache.commons.pool.impl.GenericObjectPool;
16 * Database that encapsulates connection to an external database. Database
17 * connection details can be configured through system properties and
18 * environment variables, see {@link #DB_URL_PROP}, {@link #DB_USER_PROP}, and
19 * {@link #DB_PASSWORD_PROP|.
21 * This class assumes modern database drivers that work together with
22 * java.util.ServiceLoader so that explicitly doing a Class.forName() is not
23 * necessary to load the database driver.
25 public class ExternalDatabase extends AbstractDatabase {
27 private static final Logger LOGGER = Logger
28 .getLogger(ExternalDatabase.class.getName());
31 * System property/environment variable that defines the database URL.
33 public static final String DB_URL_PROP = "TEST_DB_URL";
36 * System property/environment variable that defines the database user.
38 public static final String DB_USER_PROP = "TEST_DB_USER";
41 * System property/environment variable that defines the database password.
43 public static final String DB_PASSWORD_PROP = "TEST_DB_PASSWORD";
45 private String itsUrl;
46 private String itsUser;
47 private String itsPassword;
49 private DataSource itsDataSource;
51 public ExternalDatabase() {
55 public String getExternalJdbcUrl() {
59 public String getJdbcUrl() {
63 public String getPassword() {
67 public String getUsername() {
71 public void doStart() {
72 itsUrl = getProperty(DB_URL_PROP);
73 itsUser = getProperty(DB_USER_PROP);
74 itsPassword = getProperty(DB_PASSWORD_PROP);
79 public void doStop() {