Skip to content

Commit f04d856

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

File tree

22 files changed

+221
-5
lines changed

22 files changed

+221
-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/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-mssql-client/src/main/java/io/vertx/mssqlclient/MSSQLConnectOptions.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
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.mssqlclient.spi.MSSQLDriver;
2728
import io.vertx.sqlclient.SqlConnectOptions;
2829

2930
import java.util.HashMap;
3031
import java.util.Map;
32+
import java.util.Objects;
3133
import java.util.Set;
3234
import java.util.concurrent.TimeUnit;
3335

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

7290
@Override
7391
public MSSQLConnectOptions setHost(String host) {
@@ -323,6 +341,7 @@ protected void init() {
323341
this.setUser(DEFAULT_USER);
324342
this.setPassword(DEFAULT_PASSWORD);
325343
this.setDatabase(DEFAULT_SCHEMA);
344+
this.setKind(MSSQLDriver.KIND);
326345
this.setProperties(new HashMap<>(DEFAULT_PROPERTIES));
327346
}
328347

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/asciidoc/dataobjects.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ Set the collation for the connection.
7070
|[[hostnameVerificationAlgorithm]]`@hostnameVerificationAlgorithm`|`String`|-
7171
|[[idleTimeout]]`@idleTimeout`|`Number (int)`|-
7272
|[[idleTimeoutUnit]]`@idleTimeoutUnit`|`link:enums.html#TimeUnit[TimeUnit]`|-
73+
|[[kind]]`@kind`|`String`|-
7374
|[[localAddress]]`@localAddress`|`String`|-
7475
|[[logActivity]]`@logActivity`|`Boolean`|-
7576
|[[metricsName]]`@metricsName`|`String`|-

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) {

vertx-mysql-client/src/test/java/io/vertx/mysqlclient/tck/MySQLDriverTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,10 @@ public class MySQLDriverTest extends DriverTestBase {
3434
protected SqlConnectOptions defaultOptions() {
3535
return rule.options();
3636
}
37+
38+
@Override
39+
protected String getKind() {
40+
return "mysql";
41+
}
3742

3843
}

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

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

vertx-pg-client/src/main/java/io/vertx/pgclient/PgConnectOptions.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import io.vertx.codegen.annotations.GenIgnore;
2121
import io.vertx.pgclient.impl.PgConnectionUriParser;
22+
import io.vertx.pgclient.spi.PgDriver;
2223
import io.vertx.codegen.annotations.DataObject;
2324
import io.vertx.core.buffer.Buffer;
2425
import io.vertx.core.json.JsonObject;
@@ -28,6 +29,7 @@
2829
import java.util.Collections;
2930
import java.util.HashMap;
3031
import java.util.Map;
32+
import java.util.Objects;
3133
import java.util.Set;
3234
import java.util.concurrent.TimeUnit;
3335

@@ -135,6 +137,24 @@ public PgConnectOptions(PgConnectOptions other) {
135137
pipeliningLimit = other.pipeliningLimit;
136138
sslMode = other.sslMode;
137139
}
140+
141+
@Override
142+
public String getKind() {
143+
return PgDriver.KIND;
144+
}
145+
146+
@Override
147+
public PgConnectOptions setKind(String kind) {
148+
Objects.requireNonNull(kind, "Database kind must be non-null");
149+
// Tolerate setting the kind to the same thing, but raise an error otherwise
150+
if (!PgDriver.KIND.equalsIgnoreCase(kind) &&
151+
!"postgre".equalsIgnoreCase(kind) &&
152+
!"postgres".equalsIgnoreCase(kind)) {
153+
throw new IllegalArgumentException("Database kind for " + getClass() +
154+
" must be of type " + PgDriver.KIND + ", postgre, or postgres but " + kind + " was specified");
155+
}
156+
return this;
157+
}
138158

139159
@Override
140160
public PgConnectOptions setHost(String host) {

vertx-pg-client/src/main/java/io/vertx/pgclient/spi/PgDriver.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
import io.vertx.core.Vertx;
44
import io.vertx.pgclient.PgConnectOptions;
55
import io.vertx.pgclient.PgPool;
6+
import io.vertx.sqlclient.DatabaseKind;
67
import io.vertx.sqlclient.Pool;
78
import io.vertx.sqlclient.PoolOptions;
89
import io.vertx.sqlclient.SqlConnectOptions;
910
import io.vertx.sqlclient.spi.Driver;
1011

1112
public class PgDriver implements Driver {
13+
14+
public static final String KIND = DatabaseKind.POSTGRESQL;
1215

1316
@Override
1417
public Pool createPool(SqlConnectOptions options, PoolOptions poolOptions) {
@@ -22,7 +25,16 @@ public Pool createPool(Vertx vertx, SqlConnectOptions options, PoolOptions poolO
2225

2326
@Override
2427
public boolean acceptsOptions(SqlConnectOptions options) {
25-
return options instanceof PgConnectOptions || SqlConnectOptions.class.equals(options.getClass());
28+
if (options instanceof PgConnectOptions) {
29+
return true;
30+
}
31+
if (SqlConnectOptions.class.equals(options.getClass())) {
32+
return KIND.equalsIgnoreCase(options.getKind()) ||
33+
"postgre".equalsIgnoreCase(options.getKind()) ||
34+
"postgres".equalsIgnoreCase(options.getKind()) ||
35+
SqlConnectOptions.DEFAULT_KIND.equalsIgnoreCase(options.getKind());
36+
}
37+
return false;
2638
}
2739

2840
private static PgConnectOptions wrap(SqlConnectOptions options) {

vertx-pg-client/src/test/java/io/vertx/pgclient/tck/PgDriverTest.java

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

3742
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ Specify the host for connecting to the server.
5050
|[[hostnameVerificationAlgorithm]]`@hostnameVerificationAlgorithm`|`String`|-
5151
|[[idleTimeout]]`@idleTimeout`|`Number (int)`|-
5252
|[[idleTimeoutUnit]]`@idleTimeoutUnit`|`link:enums.html#TimeUnit[TimeUnit]`|-
53+
|[[kind]]`@kind`|`String`|+++
54+
Specify the kind of database the connect options are for.
55+
+++
5356
|[[localAddress]]`@localAddress`|`String`|-
5457
|[[logActivity]]`@logActivity`|`Boolean`|-
5558
|[[metricsName]]`@metricsName`|`String`|-

0 commit comments

Comments
 (0)