diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/DB2ConnectOptions.java b/vertx-db2-client/src/main/java/io/vertx/db2client/DB2ConnectOptions.java index 55b2bc76c..1f7e496e6 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/DB2ConnectOptions.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/DB2ConnectOptions.java @@ -76,19 +76,11 @@ public DB2ConnectOptions(JsonObject json) { DB2ConnectOptionsConverter.fromJson(json, this); } - public DB2ConnectOptions(SqlConnectOptions other) { - super(other); - if (other instanceof DB2ConnectOptions) { - DB2ConnectOptions opts = (DB2ConnectOptions) other; - this.pipeliningLimit = opts.pipeliningLimit; - } - } - public DB2ConnectOptions(DB2ConnectOptions other) { super(other); this.pipeliningLimit = other.pipeliningLimit; } - + @Override public DB2ConnectOptions setHost(String host) { return (DB2ConnectOptions) super.setHost(host); @@ -210,6 +202,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(pipeliningLimit); + return Objects.hash(super.hashCode(), pipeliningLimit); } } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/DB2Exception.java b/vertx-db2-client/src/main/java/io/vertx/db2client/DB2Exception.java index ec5ac85c6..c036ef1eb 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/DB2Exception.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/DB2Exception.java @@ -55,6 +55,6 @@ public String getSqlState() { */ @Override public String getMessage() { - return super.getMessage(); + return super.getMessage() + "; errorCode=" + errorCode + "; sqlState=" + sqlState; } } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/spi/DB2Driver.java b/vertx-db2-client/src/main/java/io/vertx/db2client/spi/DB2Driver.java index b4805ed59..07228ea83 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/spi/DB2Driver.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/spi/DB2Driver.java @@ -24,7 +24,7 @@ import io.vertx.sqlclient.spi.Driver; public class DB2Driver implements Driver { - + @Override public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) { return DB2Pool.pool(wrap(options), poolOptions); @@ -35,17 +35,22 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO return DB2Pool.pool(vertx, wrap(options), poolOptions); } - @Override - public boolean acceptsOptions(SqlConnectOptions options) { - return options instanceof DB2ConnectOptions || SqlConnectOptions.class.equals(options.getClass()); - } - private static DB2ConnectOptions wrap(SqlConnectOptions options) { if (options instanceof DB2ConnectOptions) { - return (DB2ConnectOptions) options; + return (DB2ConnectOptions) options; } else { - return new DB2ConnectOptions(options); + throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } } + @Override + public SqlConnectOptions createConnectOptions() { + return new DB2ConnectOptions(); + } + + @Override + public String name() { + return "DB2"; + } + } diff --git a/vertx-db2-client/src/test/java/io/vertx/db2client/tck/DB2DriverTest.java b/vertx-db2-client/src/test/java/io/vertx/db2client/tck/DB2DriverTest.java index ca0ce2a7e..782186245 100644 --- a/vertx-db2-client/src/test/java/io/vertx/db2client/tck/DB2DriverTest.java +++ b/vertx-db2-client/src/test/java/io/vertx/db2client/tck/DB2DriverTest.java @@ -46,4 +46,9 @@ protected SqlConnectOptions defaultOptions() { return rule.options(); } + @Override + protected String getDriverName() { + return "DB2"; + } + } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/MSSQLConnectOptions.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/MSSQLConnectOptions.java index c804c8c12..c41da58e2 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/MSSQLConnectOptions.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/MSSQLConnectOptions.java @@ -11,6 +11,11 @@ package io.vertx.mssqlclient; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + import io.vertx.codegen.annotations.DataObject; import io.vertx.core.buffer.Buffer; import io.vertx.core.json.JsonObject; @@ -26,11 +31,6 @@ import io.vertx.core.net.TrustOptions; import io.vertx.sqlclient.SqlConnectOptions; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; - /** * Connect options for configuring {@link MSSQLConnection}. */ @@ -61,14 +61,10 @@ public MSSQLConnectOptions(JsonObject json) { MSSQLConnectOptionsConverter.fromJson(json, this); } - public MSSQLConnectOptions(SqlConnectOptions other) { - super(other); - } - public MSSQLConnectOptions(MSSQLConnectOptions other) { super(other); } - + @Override public MSSQLConnectOptions setHost(String host) { return (MSSQLConnectOptions) super.setHost(host); diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/spi/MSSQLDriver.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/spi/MSSQLDriver.java index 9e501a1a1..322f682d4 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/spi/MSSQLDriver.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/spi/MSSQLDriver.java @@ -24,7 +24,7 @@ import io.vertx.sqlclient.spi.Driver; public class MSSQLDriver implements Driver { - + @Override public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) { return MSSQLPool.pool(wrap(options), poolOptions); @@ -35,17 +35,22 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO return MSSQLPool.pool(vertx, wrap(options), poolOptions); } - @Override - public boolean acceptsOptions(SqlConnectOptions options) { - return options instanceof MSSQLConnectOptions || SqlConnectOptions.class.equals(options.getClass()); - } - private static MSSQLConnectOptions wrap(SqlConnectOptions options) { if (options instanceof MSSQLConnectOptions) { return (MSSQLConnectOptions) options; } else { - return new MSSQLConnectOptions(options); + throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } } + @Override + public SqlConnectOptions createConnectOptions() { + return new MSSQLConnectOptions(); + } + + @Override + public String name() { + return "SQLSERVER"; + } + } diff --git a/vertx-mssql-client/src/test/java/io/vertx/mssqlclient/tck/MSSQLDriverTest.java b/vertx-mssql-client/src/test/java/io/vertx/mssqlclient/tck/MSSQLDriverTest.java index 7c903a06d..8b74035d6 100644 --- a/vertx-mssql-client/src/test/java/io/vertx/mssqlclient/tck/MSSQLDriverTest.java +++ b/vertx-mssql-client/src/test/java/io/vertx/mssqlclient/tck/MSSQLDriverTest.java @@ -33,5 +33,10 @@ public class MSSQLDriverTest extends DriverTestBase { protected SqlConnectOptions defaultOptions() { return rule.options(); } - + + @Override + protected String getDriverName() { + return "SQLSERVER"; + } + } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/MySQLConnectOptions.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/MySQLConnectOptions.java index ffbdb330a..960e77dec 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/MySQLConnectOptions.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/MySQLConnectOptions.java @@ -76,23 +76,13 @@ public MySQLConnectOptions(JsonObject json) { MySQLConnectOptionsConverter.fromJson(json, this); } - public MySQLConnectOptions(SqlConnectOptions other) { - super(other); - if (other instanceof MySQLConnectOptions) { - MySQLConnectOptions opts = (MySQLConnectOptions) other; - this.collation = opts.collation; - this.serverRsaPublicKeyPath = opts.serverRsaPublicKeyPath; - this.serverRsaPublicKeyValue = opts.serverRsaPublicKeyValue != null ? opts.serverRsaPublicKeyValue.copy() : null; - } - } - public MySQLConnectOptions(MySQLConnectOptions other) { super(other); this.collation = other.collation; this.serverRsaPublicKeyPath = other.serverRsaPublicKeyPath; this.serverRsaPublicKeyValue = other.serverRsaPublicKeyValue != null ? other.serverRsaPublicKeyValue.copy() : null; } - + /** * Get the collation for the connection. * diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/spi/MySQLDriver.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/spi/MySQLDriver.java index 37820bb9d..f7380e588 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/spi/MySQLDriver.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/spi/MySQLDriver.java @@ -24,7 +24,7 @@ import io.vertx.sqlclient.spi.Driver; public class MySQLDriver implements Driver { - + @Override public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) { return MySQLPool.pool(wrap(options), poolOptions); @@ -35,17 +35,22 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO return MySQLPool.pool(vertx, wrap(options), poolOptions); } - @Override - public boolean acceptsOptions(SqlConnectOptions options) { - return options instanceof MySQLConnectOptions || SqlConnectOptions.class.equals(options.getClass()); - } - private static MySQLConnectOptions wrap(SqlConnectOptions options) { if (options instanceof MySQLConnectOptions) { - return (MySQLConnectOptions) options; + return (MySQLConnectOptions) options; } else { - return new MySQLConnectOptions(options); + throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } } + + @Override + public SqlConnectOptions createConnectOptions() { + return new MySQLConnectOptions(); + } + + @Override + public String name() { + return "MYSQL"; + } } diff --git a/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/tck/MySQLDriverTest.java b/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/tck/MySQLDriverTest.java index 916d58c01..c15b1ef79 100644 --- a/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/tck/MySQLDriverTest.java +++ b/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/tck/MySQLDriverTest.java @@ -35,4 +35,9 @@ protected SqlConnectOptions defaultOptions() { return rule.options(); } + @Override + protected String getDriverName() { + return "MYSQL"; + } + } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/PgConnectOptions.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/PgConnectOptions.java index 839054e50..2f0c8c55f 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/PgConnectOptions.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/PgConnectOptions.java @@ -121,21 +121,12 @@ public PgConnectOptions(JsonObject json) { PgConnectOptionsConverter.fromJson(json, this); } - public PgConnectOptions(SqlConnectOptions other) { - super(other); - if (other instanceof PgConnectOptions) { - PgConnectOptions opts = (PgConnectOptions) other; - pipeliningLimit = opts.pipeliningLimit; - sslMode = opts.sslMode; - } - } - public PgConnectOptions(PgConnectOptions other) { super(other); pipeliningLimit = other.pipeliningLimit; sslMode = other.sslMode; } - + @Override public PgConnectOptions setHost(String host) { return (PgConnectOptions) super.setHost(host); diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/spi/PgDriver.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/spi/PgDriver.java index 9a1282dbc..49e1477b7 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/spi/PgDriver.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/spi/PgDriver.java @@ -9,7 +9,7 @@ import io.vertx.sqlclient.spi.Driver; public class PgDriver implements Driver { - + @Override public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) { return PgPool.pool(wrap(options), poolOptions); @@ -20,17 +20,22 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO return PgPool.pool(vertx, wrap(options), poolOptions); } - @Override - public boolean acceptsOptions(SqlConnectOptions options) { - return options instanceof PgConnectOptions || SqlConnectOptions.class.equals(options.getClass()); - } - private static PgConnectOptions wrap(SqlConnectOptions options) { if (options instanceof PgConnectOptions) { - return (PgConnectOptions) options; + return (PgConnectOptions) options; } else { - return new PgConnectOptions(options); + throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } } + + @Override + public SqlConnectOptions createConnectOptions() { + return new PgConnectOptions(); + } + + @Override + public String name() { + return "POSTGRESQL"; + } } diff --git a/vertx-pg-client/src/test/java/io/vertx/pgclient/tck/PgDriverTest.java b/vertx-pg-client/src/test/java/io/vertx/pgclient/tck/PgDriverTest.java index 1f4c395de..1e69525e4 100644 --- a/vertx-pg-client/src/test/java/io/vertx/pgclient/tck/PgDriverTest.java +++ b/vertx-pg-client/src/test/java/io/vertx/pgclient/tck/PgDriverTest.java @@ -34,4 +34,9 @@ protected SqlConnectOptions defaultOptions() { return rule.options(); } + @Override + protected String getDriverName() { + return "POSTGRESQL"; + } + } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/Pool.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/Pool.java index 4251cb669..548a16e27 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/Pool.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/Pool.java @@ -22,6 +22,7 @@ import java.util.ServiceConfigurationError; import java.util.ServiceLoader; +import io.vertx.codegen.annotations.GenIgnore; import io.vertx.codegen.annotations.VertxGen; import io.vertx.core.AsyncResult; import io.vertx.core.Future; @@ -46,6 +47,7 @@ public interface Pool extends SqlClient { * @return the connection pool * @throws ServiceConfigurationError if no compatible drivers are found, or if multiple compatible drivers are found */ + @GenIgnore static Pool pool(SqlConnectOptions connectOptions) { return pool(connectOptions, new PoolOptions()); } @@ -58,6 +60,7 @@ static Pool pool(SqlConnectOptions connectOptions) { * @return the connection pool * @throws ServiceConfigurationError if no compatible drivers are found, or if multiple compatible drivers are found */ + @GenIgnore static Pool pool(SqlConnectOptions connectOptions, PoolOptions poolOptions) { List candidates = new ArrayList<>(1); for (Driver d : ServiceLoader.load(Driver.class)) { @@ -83,6 +86,7 @@ static Pool pool(SqlConnectOptions connectOptions, PoolOptions poolOptions) { * @return the connection pool * @throws ServiceConfigurationError if no compatible drivers are found, or if multiple compatible drivers are found */ + @GenIgnore static Pool pool(Vertx vertx, SqlConnectOptions connectOptions, PoolOptions poolOptions) { List candidates = new ArrayList<>(1); for (Driver d : ServiceLoader.load(Driver.class)) { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlConnectOptions.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlConnectOptions.java index 7fff1715d..5006264e2 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlConnectOptions.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlConnectOptions.java @@ -15,6 +15,7 @@ import io.vertx.codegen.annotations.GenIgnore; import io.vertx.core.json.JsonObject; import io.vertx.core.net.NetClientOptions; +import io.vertx.sqlclient.spi.Driver; import java.util.HashMap; import java.util.Map; @@ -24,7 +25,8 @@ * Connect options for configuring {@link SqlConnection} or {@link Pool}. */ @DataObject(generateConverter = true) -public class SqlConnectOptions extends NetClientOptions { +public abstract class SqlConnectOptions extends NetClientOptions { + public static final boolean DEFAULT_CACHE_PREPARED_STATEMENTS = false; public static final int DEFAULT_PREPARED_STATEMENT_CACHE_MAX_SIZE = 256; public static final int DEFAULT_PREPARED_STATEMENT_CACHE_SQL_LIMIT = 2048; @@ -64,7 +66,7 @@ public SqlConnectOptions(SqlConnectOptions other) { this.properties = new HashMap<>(other.properties); } } - + /** * Get the host for connecting to the server. * @@ -277,6 +279,29 @@ public JsonObject toJson() { /** * Initialize with the default options. */ - protected void init() { + protected abstract void init(); + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!(obj instanceof SqlConnectOptions)) + return false; + SqlConnectOptions that = (SqlConnectOptions) obj; + return Objects.equals(host, that.host) && + Objects.equals(port, that.port) && + Objects.equals(database, that.database) && + Objects.equals(user, that.user) && + Objects.equals(password, that.password) && + Objects.equals(properties, that.properties) && + Objects.equals(cachePreparedStatements, that.cachePreparedStatements) && + Objects.equals(preparedStatementCacheMaxSize, that.preparedStatementCacheMaxSize) && + Objects.equals(preparedStatementCacheSqlLimit, that.preparedStatementCacheSqlLimit); + } + + @Override + public int hashCode() { + return Objects.hash(host, port, database, user, password, properties, cachePreparedStatements, + preparedStatementCacheMaxSize, preparedStatementCacheSqlLimit); } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/Driver.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/Driver.java index 3adc5105a..2b29899ea 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/Driver.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/Driver.java @@ -16,6 +16,12 @@ */ package io.vertx.sqlclient.spi; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.ServiceConfigurationError; +import java.util.ServiceLoader; + import io.vertx.core.Vertx; import io.vertx.sqlclient.Pool; import io.vertx.sqlclient.PoolOptions; @@ -27,6 +33,44 @@ */ public interface Driver { + /** + * Creates an instance of {@link SqlConnectOptions} that corresponds to the provided driverName + * @param driverName The name of the Driver (as returned by {@link #name()}) to create connect options for. + * @return the new connect options + * @throws ServiceConfigurationError If 0 or >1 matching drivers are found + * @throws NullPointerException If driverName is null + */ + static SqlConnectOptions createConnectOptions(String driverName) { + List discoverdDrivers = new ArrayList<>(); + List candidates = new ArrayList<>(1); + for (Driver d : ServiceLoader.load(Driver.class)) { + discoverdDrivers.add(d.name()); + if (d.name().equalsIgnoreCase(driverName)) { + candidates.add(d); + } + } + + if (discoverdDrivers.size() > 0) { + Objects.requireNonNull(driverName, "Must provide a valid driverName. The discovered driver names were: " + discoverdDrivers); + } else { + Objects.requireNonNull(driverName, "Must provide a valid driverName of a loadable " + Driver.class.getCanonicalName() + " implementation."); + } + + if (candidates.size() == 0) { + throw new ServiceConfigurationError("No implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + driverName + "'"); + } else if (candidates.size() > 1) { + throw new ServiceConfigurationError("Multiple implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + + driverName + "': " + candidates); + } + + return candidates.get(0).createConnectOptions(); + } + + /** + * @return Creates a new set of {@link SqlConnectOptions} + */ + SqlConnectOptions createConnectOptions(); + /** * Create a connection pool to the database configured with the given {@code connectOptions} and default {@link PoolOptions} * @@ -59,6 +103,13 @@ default Pool createPool(SqlConnectOptions connectOptions) { /** * @return true if the driver accepts the {@code connectOptions}, false otherwise */ - boolean acceptsOptions(SqlConnectOptions connectOptions); + default boolean acceptsOptions(SqlConnectOptions connectOptions) { + return createConnectOptions().getClass().isAssignableFrom(connectOptions.getClass()); + } + + /** + * @return The name of the driver + */ + String name(); } diff --git a/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/DriverTestBase.java b/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/DriverTestBase.java index 9653c5eab..d55b7dcc7 100644 --- a/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/DriverTestBase.java +++ b/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/DriverTestBase.java @@ -1,8 +1,6 @@ package io.vertx.sqlclient.tck; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; @@ -22,6 +20,8 @@ public abstract class DriverTestBase { protected abstract SqlConnectOptions defaultOptions(); + protected abstract String getDriverName(); + @Test public void testServiceLoader(TestContext ctx) { List drivers = new ArrayList<>(); @@ -32,18 +32,38 @@ public void testServiceLoader(TestContext ctx) { } @Test - public void testAcceptsOptions(TestContext ctx) { - assertTrue(getDriver().acceptsOptions(defaultOptions())); + public void testDriverName(TestContext ctx) { + Driver d = getDriver(); + ctx.assertNotNull(d.name()); + ctx.assertEquals(getDriverName(), d.name()); } @Test - public void testAcceptsGenericOptions(TestContext ctx) { - assertTrue(getDriver().acceptsOptions(new SqlConnectOptions())); + public void testCreateOptions(TestContext ctx) { + SqlConnectOptions opts = Driver.createConnectOptions(getDriverName()); + ctx.assertNotNull(opts); + ctx.assertNotNull(opts.getHost()); + ctx.assertTrue(opts.getPort() > 1024, "Default connect options should have a valid port by default"); } @Test + public void testCreatePoolWithCreatedOptions(TestContext ctx) { + SqlConnectOptions defaultOpts = defaultOptions(); + SqlConnectOptions newOpts = Driver.createConnectOptions(getDriverName()) + .setHost(defaultOpts.getHost()) + .setPort(defaultOpts.getPort()) + .setDatabase(defaultOpts.getDatabase()) + .setUser(defaultOpts.getUser()) + .setPassword(defaultOpts.getPassword()); + Pool pool = Pool.pool(newOpts); + pool.getConnection(ctx.asyncAssertSuccess(ar -> { + ar.close(); + })); + } + + @Test(expected = IllegalArgumentException.class) public void testRejectsOtherOptions(TestContext ctx) { - assertFalse(getDriver().acceptsOptions(new BogusOptions())); + getDriver().createPool(new BogusOptions()); } @Test @@ -56,15 +76,6 @@ public void testCreatePoolFromDriver01(TestContext ctx) { @Test public void testCreatePoolFromDriver02(TestContext ctx) { - SqlConnectOptions genericOptions = new SqlConnectOptions(defaultOptions()); - Pool p = getDriver().createPool(genericOptions); - p.getConnection(ctx.asyncAssertSuccess(ar -> { - ar.close(); - })); - } - - @Test - public void testCreatePoolFromDriver03(TestContext ctx) { Pool p = getDriver().createPool(defaultOptions(), new PoolOptions().setMaxSize(1)); p.getConnection(ctx.asyncAssertSuccess(ar -> { ar.close(); @@ -72,7 +83,7 @@ public void testCreatePoolFromDriver03(TestContext ctx) { } @Test - public void testCreatePoolFromDriver04(TestContext ctx) { + public void testCreatePoolFromDriver03(TestContext ctx) { Pool p = getDriver().createPool(Vertx.vertx(), defaultOptions(), new PoolOptions().setMaxSize(1)); p.getConnection(ctx.asyncAssertSuccess(ar -> { ar.close(); @@ -88,41 +99,18 @@ public void testCreatePool01(TestContext ctx) { @Test public void testCreatePool02(TestContext ctx) { - Pool.pool(new SqlConnectOptions(defaultOptions()), new PoolOptions()).getConnection(ctx.asyncAssertSuccess(ar -> { - ar.close(); - })); - } - - @Test - public void testCreatePool03(TestContext ctx) { Pool.pool(defaultOptions(), new PoolOptions().setMaxSize(1)).getConnection(ctx.asyncAssertSuccess(ar -> { ar.close(); })); } @Test - public void testCreatePool04(TestContext ctx) { + public void testCreatePool03(TestContext ctx) { Pool.pool(Vertx.vertx(), defaultOptions(), new PoolOptions()).getConnection(ctx.asyncAssertSuccess(ar -> { ar.close(); })); } - @Test - public void testCreatePool05(TestContext ctx) { - // The default options will be an instanceof the driver-specific class, so manually copy - // each option over onto a fresh generic options object to force the generic constructor path - SqlConnectOptions defaults = defaultOptions(); - SqlConnectOptions opts = new SqlConnectOptions() - .setHost(defaults.getHost()) - .setPort(defaults.getPort()) - .setDatabase(defaults.getDatabase()) - .setUser(defaults.getUser()) - .setPassword(defaults.getPassword()); - Pool.pool(opts).getConnection(ctx.asyncAssertSuccess(ar -> { - ar.close(); - })); - } - @Test(expected = ServiceConfigurationError.class) public void testRejectCreatePool01(TestContext ctx) { Pool.pool(new BogusOptions()); @@ -139,6 +127,9 @@ public void testRejectCreatePool03(TestContext ctx) { } public static class BogusOptions extends SqlConnectOptions { + @Override + protected void init() { + } } private Driver getDriver() {