From 6400b8c8937fe3b8e22fc33352fab9b1ce599c16 Mon Sep 17 00:00:00 2001 From: Andrew Guibert Date: Tue, 19 May 2020 14:21:06 -0500 Subject: [PATCH 1/3] Add Driver#createConnectOptions Also deprecate generic construction of SqlConnectOptions --- .../io/vertx/db2client/DB2ConnectOptions.java | 4 +- .../java/io/vertx/db2client/DB2Exception.java | 2 +- .../io/vertx/db2client/spi/DB2Driver.java | 23 +++-- .../io/vertx/db2client/tck/DB2DriverTest.java | 5 ++ .../mssqlclient/MSSQLConnectOptions.java | 12 +-- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 21 +++-- .../mssqlclient/tck/MSSQLDriverTest.java | 7 +- .../mysqlclient/MySQLConnectOptions.java | 2 +- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 23 +++-- .../mysqlclient/tck/MySQLDriverTest.java | 5 ++ .../io/vertx/pgclient/PgConnectOptions.java | 2 +- .../java/io/vertx/pgclient/spi/PgDriver.java | 23 +++-- .../io/vertx/pgclient/tck/PgDriverTest.java | 5 ++ .../io/vertx/sqlclient/SqlConnectOptions.java | 43 +++++++++- .../java/io/vertx/sqlclient/spi/Driver.java | 83 ++++++++++++++++++- .../vertx/sqlclient/tck/DriverTestBase.java | 81 +++++++++--------- 16 files changed, 255 insertions(+), 86 deletions(-) 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..25a120a2e 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 @@ -88,7 +88,7 @@ public DB2ConnectOptions(DB2ConnectOptions other) { super(other); this.pipeliningLimit = other.pipeliningLimit; } - + @Override public DB2ConnectOptions setHost(String host) { return (DB2ConnectOptions) super.setHost(host); @@ -210,6 +210,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..890ebd44e 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,24 @@ 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; - } else { + return (DB2ConnectOptions) options; + } else if (options.getClass().equals(SqlConnectOptions.class)) { return new DB2ConnectOptions(options); + } else { + throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } } + @Override + public SqlConnectOptions createConnectOptions() { + return new DB2ConnectOptions(); + } + + @Override + public String name() { + return KnownDrivers.DB2.name(); + } + } 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..12863eb2e 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}. */ @@ -68,7 +68,7 @@ public MSSQLConnectOptions(SqlConnectOptions 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..6c70a8d13 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,24 @@ 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 { + } else if (SqlConnectOptions.class.equals(options.getClass())) { return new MSSQLConnectOptions(options); + } else { + throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } } + @Override + public SqlConnectOptions createConnectOptions() { + return new MSSQLConnectOptions(); + } + + @Override + public String name() { + return KnownDrivers.SQLSERVER.name(); + } + } 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..a88a9ea1e 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 @@ -92,7 +92,7 @@ public MySQLConnectOptions(MySQLConnectOptions other) { 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..e3f01bf6a 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,24 @@ 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; - } else { + return (MySQLConnectOptions) options; + } else if (options.getClass().equals(SqlConnectOptions.class)) { return new MySQLConnectOptions(options); + } else { + 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..c89f3f1ce 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 @@ -135,7 +135,7 @@ public PgConnectOptions(PgConnectOptions 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..ad34210b8 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,24 @@ 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; - } else { + return (PgConnectOptions) options; + } else if (options.getClass().equals(SqlConnectOptions.class)) { return new PgConnectOptions(options); + } else { + throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } } + + @Override + public SqlConnectOptions createConnectOptions() { + return new PgConnectOptions(); + } + + @Override + public String name() { + return KnownDrivers.POSTGRESQL.name(); + } } 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/SqlConnectOptions.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlConnectOptions.java index 7fff1715d..52f9d6665 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; @@ -25,6 +26,7 @@ */ @DataObject(generateConverter = true) public 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; @@ -39,17 +41,32 @@ public class SqlConnectOptions extends NetClientOptions { private int preparedStatementCacheSqlLimit = DEFAULT_PREPARED_STATEMENT_CACHE_SQL_LIMIT; private Map properties = new HashMap<>(4); + /** + * @deprecated This constructor will be removed in the next release. + * Instead, use {@link Driver#createConnectOptions()} + */ + @Deprecated public SqlConnectOptions() { super(); init(); } + /** + * @deprecated This constructor will be removed in the next release. + * Instead, use {@link Driver#createConnectOptions()} + */ + @Deprecated public SqlConnectOptions(JsonObject json) { super(json); init(); SqlConnectOptionsConverter.fromJson(json, this); } + /** + * @deprecated This constructor will be removed in the next release. + * Instead, use {@link Driver#createConnectOptions()} + */ + @Deprecated public SqlConnectOptions(SqlConnectOptions other) { super(other); this.host = other.host; @@ -64,7 +81,7 @@ public SqlConnectOptions(SqlConnectOptions other) { this.properties = new HashMap<>(other.properties); } } - + /** * Get the host for connecting to the server. * @@ -279,4 +296,28 @@ public JsonObject toJson() { */ protected 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..e07d0e808 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,14 @@ */ package io.vertx.sqlclient.spi; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.ServiceConfigurationError; +import java.util.ServiceLoader; +import java.util.stream.Collectors; + import io.vertx.core.Vertx; import io.vertx.sqlclient.Pool; import io.vertx.sqlclient.PoolOptions; @@ -27,6 +35,71 @@ */ public interface Driver { + public static enum KnownDrivers { + ANY_DRIVER, + DB2, + SQLSERVER, + MYSQL, + POSTGRESQL + } + + /** + * 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. + * Known values can be found in {@link KnownDrivers} + * @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) { + Objects.requireNonNull(driverName, "Must provide a valid driverName. Some known values are: " + Arrays.toString(KnownDrivers.values())); + + boolean anyDriver = KnownDrivers.ANY_DRIVER.name().equalsIgnoreCase(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) || anyDriver) { + candidates.add(d); + } + } + + if (candidates.size() == 0) { + if (anyDriver) { + throw new ServiceConfigurationError("No implementations of " + Driver.class.getCanonicalName() + " were found"); + } else { + throw new ServiceConfigurationError("No implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + driverName + "'"); + } + } else if (candidates.size() > 1) { + if (anyDriver) { + throw new ServiceConfigurationError("Multiple implementations of " + Driver.class.getCanonicalName() + " were found: " + + candidates.stream().map(Driver::name).collect(Collectors.toList())); + } else { + throw new ServiceConfigurationError("Multiple implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + + driverName + "': " + candidates); + } + } + + return candidates.get(0).createConnectOptions(); + } + + /** + * 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(KnownDrivers driverName) { + Objects.requireNonNull(driverName, "Must provide a valid driverName. Some known values are: " + Arrays.toString(KnownDrivers.values())); + return createConnectOptions(driverName.name()); + } + + /** + * @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 +132,14 @@ 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()) || + SqlConnectOptions.class.equals(connectOptions.getClass()); + } + + /** + * @return The name of the driver. Names for known drivers are enumerated in {@link KnownDrivers} + */ + 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..cba40963f 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; @@ -17,11 +15,14 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.spi.Driver; +import io.vertx.sqlclient.spi.Driver.KnownDrivers; public abstract class DriverTestBase { protected abstract SqlConnectOptions defaultOptions(); + protected abstract String getDriverName(); + @Test public void testServiceLoader(TestContext ctx) { List drivers = new ArrayList<>(); @@ -32,18 +33,48 @@ 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()); + try { + Driver.KnownDrivers.valueOf(d.name()); + } catch (IllegalArgumentException e) { + ctx.fail("Driver returned a name that is not a known value: " + 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"); + + KnownDrivers d = KnownDrivers.valueOf(getDriverName()); + SqlConnectOptions opts2 = Driver.createConnectOptions(d); + ctx.assertNotNull(opts2); + ctx.assertEquals(opts, opts2, "opts=" + opts.toJson().encode() + " opts2=" + opts2.toJson().encode()); } @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 +87,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 +94,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 +110,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()); From ed25c7195b9545b074fd2e32c4550e0886aff548 Mon Sep 17 00:00:00 2001 From: Andrew Guibert Date: Fri, 29 May 2020 15:28:08 -0500 Subject: [PATCH 2/3] Make SqlConnectOptions abstract again so that Driver#createConnectOptions is the only generic path --- .../io/vertx/db2client/DB2ConnectOptions.java | 8 -------- .../io/vertx/db2client/spi/DB2Driver.java | 2 -- .../mssqlclient/MSSQLConnectOptions.java | 4 ---- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 2 -- .../mysqlclient/MySQLConnectOptions.java | 10 ---------- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 2 -- .../io/vertx/pgclient/PgConnectOptions.java | 9 --------- .../java/io/vertx/pgclient/spi/PgDriver.java | 2 -- .../main/java/io/vertx/sqlclient/Pool.java | 4 ++++ .../io/vertx/sqlclient/SqlConnectOptions.java | 20 ++----------------- .../java/io/vertx/sqlclient/spi/Driver.java | 3 +-- .../vertx/sqlclient/tck/DriverTestBase.java | 3 +++ 12 files changed, 10 insertions(+), 59 deletions(-) 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 25a120a2e..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,14 +76,6 @@ 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; 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 890ebd44e..0e59ad4a0 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 @@ -38,8 +38,6 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO private static DB2ConnectOptions wrap(SqlConnectOptions options) { if (options instanceof DB2ConnectOptions) { return (DB2ConnectOptions) options; - } else if (options.getClass().equals(SqlConnectOptions.class)) { - return new DB2ConnectOptions(options); } else { throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } 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 12863eb2e..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 @@ -61,10 +61,6 @@ public MSSQLConnectOptions(JsonObject json) { MSSQLConnectOptionsConverter.fromJson(json, this); } - public MSSQLConnectOptions(SqlConnectOptions other) { - super(other); - } - public MSSQLConnectOptions(MSSQLConnectOptions other) { super(other); } 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 6c70a8d13..a515597ab 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 @@ -38,8 +38,6 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO private static MSSQLConnectOptions wrap(SqlConnectOptions options) { if (options instanceof MSSQLConnectOptions) { return (MSSQLConnectOptions) options; - } else if (SqlConnectOptions.class.equals(options.getClass())) { - return new MSSQLConnectOptions(options); } else { throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } 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 a88a9ea1e..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,16 +76,6 @@ 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; 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 e3f01bf6a..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 @@ -38,8 +38,6 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO private static MySQLConnectOptions wrap(SqlConnectOptions options) { if (options instanceof MySQLConnectOptions) { return (MySQLConnectOptions) options; - } else if (options.getClass().equals(SqlConnectOptions.class)) { - return new MySQLConnectOptions(options); } else { throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } 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 c89f3f1ce..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,15 +121,6 @@ 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; 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 ad34210b8..4a9fc1358 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 @@ -23,8 +23,6 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO private static PgConnectOptions wrap(SqlConnectOptions options) { if (options instanceof PgConnectOptions) { return (PgConnectOptions) options; - } else if (options.getClass().equals(SqlConnectOptions.class)) { - return new PgConnectOptions(options); } else { throw new IllegalArgumentException("Unsupported option type: " + options.getClass()); } 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 52f9d6665..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 @@ -25,7 +25,7 @@ * 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; @@ -41,32 +41,17 @@ public class SqlConnectOptions extends NetClientOptions { private int preparedStatementCacheSqlLimit = DEFAULT_PREPARED_STATEMENT_CACHE_SQL_LIMIT; private Map properties = new HashMap<>(4); - /** - * @deprecated This constructor will be removed in the next release. - * Instead, use {@link Driver#createConnectOptions()} - */ - @Deprecated public SqlConnectOptions() { super(); init(); } - /** - * @deprecated This constructor will be removed in the next release. - * Instead, use {@link Driver#createConnectOptions()} - */ - @Deprecated public SqlConnectOptions(JsonObject json) { super(json); init(); SqlConnectOptionsConverter.fromJson(json, this); } - /** - * @deprecated This constructor will be removed in the next release. - * Instead, use {@link Driver#createConnectOptions()} - */ - @Deprecated public SqlConnectOptions(SqlConnectOptions other) { super(other); this.host = other.host; @@ -294,8 +279,7 @@ public JsonObject toJson() { /** * Initialize with the default options. */ - protected void init() { - } + protected abstract void init(); @Override public boolean equals(Object obj) { 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 e07d0e808..bde02c61d 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 @@ -133,8 +133,7 @@ default Pool createPool(SqlConnectOptions connectOptions) { * @return true if the driver accepts the {@code connectOptions}, false otherwise */ default boolean acceptsOptions(SqlConnectOptions connectOptions) { - return createConnectOptions().getClass().isAssignableFrom(connectOptions.getClass()) || - SqlConnectOptions.class.equals(connectOptions.getClass()); + return createConnectOptions().getClass().isAssignableFrom(connectOptions.getClass()); } /** 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 cba40963f..ea86c0601 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 @@ -138,6 +138,9 @@ public void testRejectCreatePool03(TestContext ctx) { } public static class BogusOptions extends SqlConnectOptions { + @Override + protected void init() { + } } private Driver getDriver() { From 445ce66207c03c355d964f4aa5e865a76e91576c Mon Sep 17 00:00:00 2001 From: Andrew Guibert Date: Mon, 1 Jun 2020 23:01:48 -0500 Subject: [PATCH 3/3] Remove KnownDrivers enum from Driver SPI --- .../io/vertx/db2client/spi/DB2Driver.java | 2 +- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 2 +- .../java/io/vertx/pgclient/spi/PgDriver.java | 2 +- .../java/io/vertx/sqlclient/spi/Driver.java | 51 ++++--------------- .../vertx/sqlclient/tck/DriverTestBase.java | 11 ---- 5 files changed, 14 insertions(+), 54 deletions(-) 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 0e59ad4a0..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 @@ -50,7 +50,7 @@ public SqlConnectOptions createConnectOptions() { @Override public String name() { - return KnownDrivers.DB2.name(); + return "DB2"; } } 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 a515597ab..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 @@ -50,7 +50,7 @@ public SqlConnectOptions createConnectOptions() { @Override public String name() { - return KnownDrivers.SQLSERVER.name(); + return "SQLSERVER"; } } 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 4a9fc1358..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 @@ -35,7 +35,7 @@ public SqlConnectOptions createConnectOptions() { @Override public String name() { - return KnownDrivers.POSTGRESQL.name(); + return "POSTGRESQL"; } } 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 bde02c61d..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 @@ -17,12 +17,10 @@ package io.vertx.sqlclient.spi; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.ServiceConfigurationError; import java.util.ServiceLoader; -import java.util.stream.Collectors; import io.vertx.core.Vertx; import io.vertx.sqlclient.Pool; @@ -35,66 +33,39 @@ */ public interface Driver { - public static enum KnownDrivers { - ANY_DRIVER, - DB2, - SQLSERVER, - MYSQL, - POSTGRESQL - } - /** * 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. - * Known values can be found in {@link KnownDrivers} * @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) { - Objects.requireNonNull(driverName, "Must provide a valid driverName. Some known values are: " + Arrays.toString(KnownDrivers.values())); - - boolean anyDriver = KnownDrivers.ANY_DRIVER.name().equalsIgnoreCase(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) || anyDriver) { + 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) { - if (anyDriver) { - throw new ServiceConfigurationError("No implementations of " + Driver.class.getCanonicalName() + " were found"); - } else { - throw new ServiceConfigurationError("No implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + driverName + "'"); - } + throw new ServiceConfigurationError("No implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + driverName + "'"); } else if (candidates.size() > 1) { - if (anyDriver) { - throw new ServiceConfigurationError("Multiple implementations of " + Driver.class.getCanonicalName() + " were found: " + - candidates.stream().map(Driver::name).collect(Collectors.toList())); - } else { - throw new ServiceConfigurationError("Multiple implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + - driverName + "': " + candidates); - } + throw new ServiceConfigurationError("Multiple implementations of " + Driver.class.getCanonicalName() + " were found with a name of '" + + driverName + "': " + candidates); } return candidates.get(0).createConnectOptions(); } - /** - * 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(KnownDrivers driverName) { - Objects.requireNonNull(driverName, "Must provide a valid driverName. Some known values are: " + Arrays.toString(KnownDrivers.values())); - return createConnectOptions(driverName.name()); - } - /** * @return Creates a new set of {@link SqlConnectOptions} */ @@ -137,7 +108,7 @@ default boolean acceptsOptions(SqlConnectOptions connectOptions) { } /** - * @return The name of the driver. Names for known drivers are enumerated in {@link KnownDrivers} + * @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 ea86c0601..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 @@ -15,7 +15,6 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.spi.Driver; -import io.vertx.sqlclient.spi.Driver.KnownDrivers; public abstract class DriverTestBase { @@ -37,11 +36,6 @@ public void testDriverName(TestContext ctx) { Driver d = getDriver(); ctx.assertNotNull(d.name()); ctx.assertEquals(getDriverName(), d.name()); - try { - Driver.KnownDrivers.valueOf(d.name()); - } catch (IllegalArgumentException e) { - ctx.fail("Driver returned a name that is not a known value: " + d.name()); - } } @Test @@ -50,11 +44,6 @@ public void testCreateOptions(TestContext ctx) { ctx.assertNotNull(opts); ctx.assertNotNull(opts.getHost()); ctx.assertTrue(opts.getPort() > 1024, "Default connect options should have a valid port by default"); - - KnownDrivers d = KnownDrivers.valueOf(getDriverName()); - SqlConnectOptions opts2 = Driver.createConnectOptions(d); - ctx.assertNotNull(opts2); - ctx.assertEquals(opts, opts2, "opts=" + opts.toJson().encode() + " opts2=" + opts2.toJson().encode()); } @Test