Skip to content

Commit 0f2fda0

Browse files
committed
Add database kind property to SqlConnectOptions
1 parent 0a1a058 commit 0f2fda0

File tree

19 files changed

+222
-5
lines changed

19 files changed

+222
-5
lines changed

vertx-db2-client/src/main/asciidoc/dataobjects.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
|[[hostnameVerificationAlgorithm]]`@hostnameVerificationAlgorithm`|`String`|-
2424
|[[idleTimeout]]`@idleTimeout`|`Number (int)`|-
2525
|[[idleTimeoutUnit]]`@idleTimeoutUnit`|`link:enums.html#TimeUnit[TimeUnit]`|-
26+
|[[kind]]`@kind`|`String`|-
2627
|[[localAddress]]`@localAddress`|`String`|-
2728
|[[logActivity]]`@logActivity`|`Boolean`|-
2829
|[[metricsName]]`@metricsName`|`String`|-

vertx-db2-client/src/main/java/io/vertx/db2client/DB2ConnectOptions.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.vertx.db2client.impl.DB2ConnectionUriParser;
2727
import io.vertx.db2client.impl.drda.SQLState;
2828
import io.vertx.db2client.impl.drda.SqlCode;
29+
import io.vertx.db2client.spi.DB2Driver;
2930
import io.vertx.sqlclient.SqlConnectOptions;
3031

3132
/**
@@ -88,6 +89,22 @@ public DB2ConnectOptions(DB2ConnectOptions other) {
8889
super(other);
8990
this.pipeliningLimit = other.pipeliningLimit;
9091
}
92+
93+
@Override
94+
public String getKind() {
95+
return DB2Driver.KIND;
96+
}
97+
98+
@Override
99+
public DB2ConnectOptions setKind(String kind) {
100+
Objects.requireNonNull(kind, "Database kind must be non-null");
101+
// Tolerate setting the kind to DB2, but raise an error otherwise
102+
if (!DB2Driver.KIND.equalsIgnoreCase(kind)) {
103+
throw new IllegalArgumentException("Database kind for " + getClass() +
104+
" must be of type " + DB2Driver.KIND + " but " + kind + " was specified");
105+
}
106+
return this;
107+
}
91108

92109
@Override
93110
public DB2ConnectOptions setHost(String host) {
@@ -182,6 +199,7 @@ public DB2ConnectOptions addProperty(String key, String value) {
182199
protected void init() {
183200
this.setHost(DEFAULT_HOST);
184201
this.setPort(DEFAULT_PORT);
202+
this.setKind(DB2Driver.KIND);
185203
this.setProperties(new HashMap<>(DEFAULT_CONNECTION_ATTRIBUTES));
186204
}
187205

vertx-db2-client/src/main/java/io/vertx/db2client/DB2Exception.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,6 @@ public String getSqlState() {
5555
*/
5656
@Override
5757
public String getMessage() {
58-
return super.getMessage();
58+
return super.getMessage() + "; errorCode=" + errorCode + "; sqlState=" + sqlState;
5959
}
6060
}

vertx-db2-client/src/main/java/io/vertx/db2client/spi/DB2Driver.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
import io.vertx.core.Vertx;
1919
import io.vertx.db2client.DB2ConnectOptions;
2020
import io.vertx.db2client.DB2Pool;
21+
import io.vertx.sqlclient.DatabaseKind;
2122
import io.vertx.sqlclient.Pool;
2223
import io.vertx.sqlclient.PoolOptions;
2324
import io.vertx.sqlclient.SqlConnectOptions;
2425
import io.vertx.sqlclient.spi.Driver;
2526

2627
public class DB2Driver implements Driver {
28+
29+
public static final String KIND = DatabaseKind.DB2;
2730

2831
@Override
2932
public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) {
@@ -37,7 +40,14 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO
3740

3841
@Override
3942
public boolean acceptsOptions(SqlConnectOptions options) {
40-
return options instanceof DB2ConnectOptions || SqlConnectOptions.class.equals(options.getClass());
43+
if (options instanceof DB2ConnectOptions) {
44+
return true;
45+
}
46+
if (SqlConnectOptions.class.equals(options.getClass())) {
47+
return KIND.equalsIgnoreCase(options.getKind()) ||
48+
SqlConnectOptions.DEFAULT_KIND.equalsIgnoreCase(options.getKind());
49+
}
50+
return false;
4151
}
4252

4353
private static DB2ConnectOptions wrap(SqlConnectOptions options) {

vertx-db2-client/src/test/java/io/vertx/db2client/tck/DB2DriverTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,10 @@ public void printTestName(TestContext ctx) throws Exception {
4545
protected SqlConnectOptions defaultOptions() {
4646
return rule.options();
4747
}
48+
49+
@Override
50+
protected String getKind() {
51+
return "db2";
52+
}
4853

4954
}

vertx-mssql-client/src/main/java/io/vertx/mssqlclient/MSSQLConnectOptions.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@
2424
import io.vertx.core.net.ProxyOptions;
2525
import io.vertx.core.net.SSLEngineOptions;
2626
import io.vertx.core.net.TrustOptions;
27+
import io.vertx.db2client.DB2ConnectOptions;
28+
import io.vertx.db2client.spi.DB2Driver;
29+
import io.vertx.mssqlclient.spi.MSSQLDriver;
2730
import io.vertx.sqlclient.SqlConnectOptions;
2831

2932
import java.util.HashMap;
3033
import java.util.Map;
34+
import java.util.Objects;
3135
import java.util.Set;
3236
import java.util.concurrent.TimeUnit;
3337

@@ -68,6 +72,22 @@ public MSSQLConnectOptions(SqlConnectOptions other) {
6872
public MSSQLConnectOptions(MSSQLConnectOptions other) {
6973
super(other);
7074
}
75+
76+
@Override
77+
public String getKind() {
78+
return MSSQLDriver.KIND;
79+
}
80+
81+
@Override
82+
public MSSQLConnectOptions setKind(String kind) {
83+
Objects.requireNonNull(kind, "Database kind must be non-null");
84+
// Tolerate setting the kind to the same thing, but raise an error otherwise
85+
if (!MSSQLDriver.KIND.equalsIgnoreCase(kind)) {
86+
throw new IllegalArgumentException("Database kind for " + getClass() +
87+
" must be of type " + MSSQLDriver.KIND + " but " + kind + " was specified");
88+
}
89+
return this;
90+
}
7191

7292
@Override
7393
public MSSQLConnectOptions setHost(String host) {
@@ -323,6 +343,7 @@ protected void init() {
323343
this.setUser(DEFAULT_USER);
324344
this.setPassword(DEFAULT_PASSWORD);
325345
this.setDatabase(DEFAULT_SCHEMA);
346+
this.setKind(MSSQLDriver.KIND);
326347
this.setProperties(new HashMap<>(DEFAULT_PROPERTIES));
327348
}
328349

vertx-mssql-client/src/main/java/io/vertx/mssqlclient/spi/MSSQLDriver.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
import io.vertx.core.Vertx;
1919
import io.vertx.mssqlclient.MSSQLConnectOptions;
2020
import io.vertx.mssqlclient.MSSQLPool;
21+
import io.vertx.sqlclient.DatabaseKind;
2122
import io.vertx.sqlclient.Pool;
2223
import io.vertx.sqlclient.PoolOptions;
2324
import io.vertx.sqlclient.SqlConnectOptions;
2425
import io.vertx.sqlclient.spi.Driver;
2526

2627
public class MSSQLDriver implements Driver {
28+
29+
public static final String KIND = DatabaseKind.MICROSOFT_SQL_SERVER;
2730

2831
@Override
2932
public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) {
@@ -37,7 +40,14 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO
3740

3841
@Override
3942
public boolean acceptsOptions(SqlConnectOptions options) {
40-
return options instanceof MSSQLConnectOptions || SqlConnectOptions.class.equals(options.getClass());
43+
if (options instanceof MSSQLConnectOptions) {
44+
return true;
45+
}
46+
if (SqlConnectOptions.class.equals(options.getClass())) {
47+
return KIND.equalsIgnoreCase(options.getKind()) ||
48+
SqlConnectOptions.DEFAULT_KIND.equalsIgnoreCase(options.getKind());
49+
}
50+
return false;
4151
}
4252

4353
private static MSSQLConnectOptions wrap(SqlConnectOptions options) {

vertx-mssql-client/src/test/java/io/vertx/mssqlclient/tck/MSSQLDriverTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,10 @@ public class MSSQLDriverTest extends DriverTestBase {
3333
protected SqlConnectOptions defaultOptions() {
3434
return rule.options();
3535
}
36+
37+
@Override
38+
protected String getKind() {
39+
return "sqlserver";
40+
}
3641

3742
}

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/MySQLConnectOptions.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import io.vertx.core.net.*;
1919
import io.vertx.mysqlclient.impl.MySQLCollation;
2020
import io.vertx.mysqlclient.impl.MySQLConnectionUriParser;
21+
import io.vertx.mysqlclient.spi.MySQLDriver;
22+
import io.vertx.sqlclient.DatabaseKind;
2123
import io.vertx.sqlclient.SqlConnectOptions;
2224

2325
import java.nio.charset.Charset;
@@ -92,6 +94,22 @@ public MySQLConnectOptions(MySQLConnectOptions other) {
9294
this.serverRsaPublicKeyPath = other.serverRsaPublicKeyPath;
9395
this.serverRsaPublicKeyValue = other.serverRsaPublicKeyValue != null ? other.serverRsaPublicKeyValue.copy() : null;
9496
}
97+
98+
@Override
99+
public String getKind() {
100+
return MySQLDriver.KIND;
101+
}
102+
103+
@Override
104+
public MySQLConnectOptions setKind(String kind) {
105+
Objects.requireNonNull(kind, "Database kind must be non-null");
106+
// Tolerate setting the kind to the same thing, but raise an error otherwise
107+
if (!MySQLDriver.KIND.equalsIgnoreCase(kind) && !DatabaseKind.MARIADB.equalsIgnoreCase(kind)) {
108+
throw new IllegalArgumentException("Database kind for " + getClass() +
109+
" must be of type " + MySQLDriver.KIND + " or " + DatabaseKind.MARIADB + " but " + kind + " was specified");
110+
}
111+
return this;
112+
}
95113

96114
/**
97115
* Get the collation for the connection.
@@ -528,6 +546,7 @@ protected void init() {
528546
this.setUser(DEFAULT_USER);
529547
this.setPassword(DEFAULT_PASSWORD);
530548
this.setDatabase(DEFAULT_SCHEMA);
549+
this.setKind(MySQLDriver.KIND);
531550
this.setProperties(new HashMap<>(DEFAULT_CONNECTION_ATTRIBUTES));
532551
}
533552

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/spi/MySQLDriver.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
import io.vertx.core.Vertx;
1919
import io.vertx.mysqlclient.MySQLConnectOptions;
2020
import io.vertx.mysqlclient.MySQLPool;
21+
import io.vertx.sqlclient.DatabaseKind;
2122
import io.vertx.sqlclient.Pool;
2223
import io.vertx.sqlclient.PoolOptions;
2324
import io.vertx.sqlclient.SqlConnectOptions;
2425
import io.vertx.sqlclient.spi.Driver;
2526

2627
public class MySQLDriver implements Driver {
28+
29+
public static final String KIND = DatabaseKind.MYSQL;
2730

2831
@Override
2932
public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) {
@@ -37,7 +40,15 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO
3740

3841
@Override
3942
public boolean acceptsOptions(SqlConnectOptions options) {
40-
return options instanceof MySQLConnectOptions || SqlConnectOptions.class.equals(options.getClass());
43+
if (options instanceof MySQLConnectOptions) {
44+
return true;
45+
}
46+
if (SqlConnectOptions.class.equals(options.getClass())) {
47+
return KIND.equalsIgnoreCase(options.getKind()) ||
48+
DatabaseKind.MARIADB.equalsIgnoreCase(options.getKind()) ||
49+
SqlConnectOptions.DEFAULT_KIND.equalsIgnoreCase(options.getKind());
50+
}
51+
return false;
4152
}
4253

4354
private static MySQLConnectOptions wrap(SqlConnectOptions options) {

0 commit comments

Comments
 (0)