Skip to content

Commit dfd84c7

Browse files
committed
Rework SqlConnectOptions and internal SSL / TCP client handling
1 parent 952ee57 commit dfd84c7

File tree

41 files changed

+428
-918
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+428
-918
lines changed

vertx-db2-client/src/main/generated/io/vertx/db2client/DB2ConnectOptionsConverter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ public class DB2ConnectOptionsConverter {
2020
public static void fromJson(Iterable<java.util.Map.Entry<String, Object>> json, DB2ConnectOptions obj) {
2121
for (java.util.Map.Entry<String, Object> member : json) {
2222
switch (member.getKey()) {
23+
case "ssl":
24+
if (member.getValue() instanceof Boolean) {
25+
obj.setSsl((Boolean)member.getValue());
26+
}
27+
break;
2328
case "pipeliningLimit":
2429
break;
2530
}
@@ -31,6 +36,7 @@ public static void toJson(DB2ConnectOptions obj, JsonObject json) {
3136
}
3237

3338
public static void toJson(DB2ConnectOptions obj, java.util.Map<String, Object> json) {
39+
json.put("ssl", obj.isSsl());
3440
json.put("pipeliningLimit", obj.getPipeliningLimit());
3541
}
3642
}

vertx-db2-client/src/main/java/examples/DB2ClientExamples.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import io.vertx.core.Future;
2323
import io.vertx.core.Vertx;
24+
import io.vertx.core.net.ClientSSLOptions;
2425
import io.vertx.core.net.JksOptions;
2526
import io.vertx.db2client.DB2ConnectOptions;
2627
import io.vertx.db2client.DB2Connection;
@@ -258,9 +259,9 @@ public void connectSsl(Vertx vertx) {
258259
.setUser("user")
259260
.setPassword("secret")
260261
.setSsl(true)
261-
.setTrustStoreOptions(new JksOptions()
262-
.setPath("/path/to/keystore.p12")
263-
.setPassword("keystoreSecret"));
262+
.setSslOptions(new ClientSSLOptions().setTrustOptions(new JksOptions()
263+
.setPath("/path/to/keystore.p12")
264+
.setPassword("keystoreSecret")));
264265

265266
DB2Connection.connect(vertx, options)
266267
.onComplete(res -> {
@@ -396,5 +397,4 @@ public void enumIntValues(SqlClient client) {
396397
}
397398
});
398399
}
399-
400400
}

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

Lines changed: 25 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,7 @@
2525
import io.vertx.codegen.annotations.DataObject;
2626
import io.vertx.codegen.annotations.GenIgnore;
2727
import io.vertx.core.json.JsonObject;
28-
import io.vertx.core.net.ClientOptionsBase;
29-
import io.vertx.core.net.JdkSSLEngineOptions;
30-
import io.vertx.core.net.JksOptions;
31-
import io.vertx.core.net.KeyCertOptions;
32-
import io.vertx.core.net.NetClientOptions;
33-
import io.vertx.core.net.OpenSSLEngineOptions;
34-
import io.vertx.core.net.PemKeyCertOptions;
35-
import io.vertx.core.net.PemTrustOptions;
36-
import io.vertx.core.net.SSLEngineOptions;
37-
import io.vertx.core.net.TrustOptions;
28+
import io.vertx.core.net.*;
3829
import io.vertx.core.tracing.TracingPolicy;
3930
import io.vertx.db2client.impl.DB2ConnectionUriParser;
4031
import io.vertx.db2client.impl.drda.SQLState;
@@ -77,13 +68,15 @@ public static DB2ConnectOptions fromUri(String connectionUri) throws IllegalArgu
7768
public static final boolean DEFAULT_USE_AFFECTED_ROWS = false;
7869
public static final int DEFAULT_PIPELINING_LIMIT = 1; // 256; // TODO default to 256 once implemented properly
7970
public static final Map<String, String> DEFAULT_CONNECTION_ATTRIBUTES;
71+
public static final boolean DEFAULT_SSL = false;
8072

8173
static {
8274
Map<String, String> defaultAttributes = new HashMap<>();
8375
defaultAttributes.put("_client_name", "vertx-db2-client");
8476
DEFAULT_CONNECTION_ATTRIBUTES = Collections.unmodifiableMap(defaultAttributes);
8577
}
8678

79+
private boolean ssl = DEFAULT_SSL;
8780
private int pipeliningLimit = DEFAULT_PIPELINING_LIMIT;
8881

8982
public DB2ConnectOptions() {
@@ -100,12 +93,14 @@ public DB2ConnectOptions(SqlConnectOptions other) {
10093
if (other instanceof DB2ConnectOptions) {
10194
DB2ConnectOptions opts = (DB2ConnectOptions) other;
10295
this.pipeliningLimit = opts.pipeliningLimit;
96+
this.ssl = opts.ssl;
10397
}
10498
}
10599

106100
public DB2ConnectOptions(DB2ConnectOptions other) {
107101
super(other);
108102
this.pipeliningLimit = other.pipeliningLimit;
103+
this.ssl = other.ssl;
109104
}
110105

111106
@Override
@@ -169,69 +164,23 @@ public DB2ConnectOptions setPreparedStatementCacheSqlLimit(int preparedStatement
169164
return (DB2ConnectOptions) super.setPreparedStatementCacheSqlLimit(preparedStatementCacheSqlLimit);
170165
}
171166

172-
@Override
173-
public DB2ConnectOptions setSsl(boolean ssl) {
174-
return (DB2ConnectOptions) super.setSsl(ssl);
175-
}
176-
177-
@Override
178-
public DB2ConnectOptions setSslHandshakeTimeout(long sslHandshakeTimeout) {
179-
return (DB2ConnectOptions) super.setSslHandshakeTimeout(sslHandshakeTimeout);
180-
}
181-
182-
@Override
183-
public DB2ConnectOptions setSslHandshakeTimeoutUnit(TimeUnit sslHandshakeTimeoutUnit) {
184-
return (DB2ConnectOptions) super.setSslHandshakeTimeoutUnit(sslHandshakeTimeoutUnit);
185-
}
186-
187-
@Override
188-
public DB2ConnectOptions setSslEngineOptions(SSLEngineOptions sslEngineOptions) {
189-
return (DB2ConnectOptions) super.setSslEngineOptions(sslEngineOptions);
190-
}
191-
192-
@Override
193-
public DB2ConnectOptions setJdkSslEngineOptions(JdkSSLEngineOptions sslEngineOptions) {
194-
return (DB2ConnectOptions) super.setJdkSslEngineOptions(sslEngineOptions);
195-
}
196-
197-
@Override
198-
public DB2ConnectOptions setKeyCertOptions(KeyCertOptions options) {
199-
return (DB2ConnectOptions) super.setKeyCertOptions(options);
200-
}
201-
202-
@Override
203-
public DB2ConnectOptions setKeyStoreOptions(JksOptions options) {
204-
return (DB2ConnectOptions) super.setKeyStoreOptions(options);
205-
}
206-
207-
@Override
208-
public DB2ConnectOptions setOpenSslEngineOptions(OpenSSLEngineOptions sslEngineOptions) {
209-
return (DB2ConnectOptions) super.setOpenSslEngineOptions(sslEngineOptions);
210-
}
211-
212-
@Override
213-
public DB2ConnectOptions setPemKeyCertOptions(PemKeyCertOptions options) {
214-
return (DB2ConnectOptions) super.setPemKeyCertOptions(options);
215-
}
216-
217-
@Override
218-
public DB2ConnectOptions setPemTrustOptions(PemTrustOptions options) {
219-
return (DB2ConnectOptions) super.setPemTrustOptions(options);
220-
}
221-
222-
@Override
223-
public DB2ConnectOptions setTrustAll(boolean trustAll) {
224-
return (DB2ConnectOptions) super.setTrustAll(trustAll);
225-
}
226-
227-
@Override
228-
public DB2ConnectOptions setTrustOptions(TrustOptions options) {
229-
return (DB2ConnectOptions) super.setTrustOptions(options);
167+
/**
168+
*
169+
* @return is SSL/TLS enabled?
170+
*/
171+
public boolean isSsl() {
172+
return ssl;
230173
}
231174

232-
@Override
233-
public DB2ConnectOptions setTrustStoreOptions(JksOptions options) {
234-
return (DB2ConnectOptions) super.setTrustStoreOptions(options);
175+
/**
176+
* Set whether SSL/TLS is enabled
177+
*
178+
* @param ssl true if enabled
179+
* @return a reference to this, so the API can be used fluently
180+
*/
181+
public DB2ConnectOptions setSsl(boolean ssl) {
182+
this.ssl = ssl;
183+
return this;
235184
}
236185

237186
public int getPipeliningLimit() {
@@ -271,6 +220,11 @@ public DB2ConnectOptions addProperty(String key, String value) {
271220
return (DB2ConnectOptions) super.addProperty(key, value);
272221
}
273222

223+
@Override
224+
public DB2ConnectOptions setSslOptions(ClientSSLOptions sslOptions) {
225+
return (DB2ConnectOptions) super.setSslOptions(sslOptions);
226+
}
227+
274228
/**
275229
* Initialize with the default options.
276230
*/

vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,9 @@ protected Future<Connection> doConnectInternal(DB2ConnectOptions options, Contex
5050
String database = options.getDatabase();
5151
Map<String, String> properties = options.getProperties();
5252
int pipeliningLimit = options.getPipeliningLimit();
53-
NetClient netClient = netClient(options);
54-
return netClient.connect(server).flatMap(so -> {
53+
return client.connect(server).flatMap(so -> {
5554
VertxMetrics vertxMetrics = vertx.metricsSPI();
56-
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(options.getSocketAddress(), "sql", options.getMetricsName()) : null;
55+
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(options.getSocketAddress(), "sql", tcpOptions.getMetricsName()) : null;
5756
DB2SocketConnection conn = new DB2SocketConnection((NetSocketInternal) so, metrics, options, cachePreparedStatements,
5857
preparedStatementCacheSize, preparedStatementCacheSqlFilter, pipeliningLimit, context);
5958
conn.init();

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.vertx.core.impl.ContextInternal;
2222
import io.vertx.core.impl.VertxInternal;
2323
import io.vertx.core.json.JsonObject;
24+
import io.vertx.core.net.NetClientOptions;
2425
import io.vertx.db2client.DB2ConnectOptions;
2526
import io.vertx.db2client.impl.*;
2627
import io.vertx.sqlclient.Pool;
@@ -60,7 +61,7 @@ public Pool newPool(Vertx vertx, Supplier<Future<DB2ConnectOptions>> databases,
6061
private PoolImpl newPoolImpl(VertxInternal vertx, Supplier<Future<DB2ConnectOptions>> databases, PoolOptions options, CloseFuture closeFuture) {
6162
boolean pipelinedPool = options instanceof Db2PoolOptions && ((Db2PoolOptions) options).isPipelined();
6263
PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, options, null, null, closeFuture);
63-
ConnectionFactory<DB2ConnectOptions> factory = createConnectionFactory(vertx);
64+
ConnectionFactory<DB2ConnectOptions> factory = createConnectionFactory(vertx, new NetClientOptions());
6465
pool.connectionProvider(context -> factory.connect(context, databases.get()));
6566
pool.init();
6667
closeFuture.add(factory);
@@ -79,7 +80,7 @@ public boolean acceptsOptions(SqlConnectOptions options) {
7980
}
8081

8182
@Override
82-
public ConnectionFactory<DB2ConnectOptions> createConnectionFactory(Vertx vertx) {
83+
public ConnectionFactory<DB2ConnectOptions> createConnectionFactory(Vertx vertx, NetClientOptions tcpOptions) {
8384
return new DB2ConnectionFactory((VertxInternal) vertx);
8485
}
8586

vertx-db2-client/src/test/java/io/vertx/db2client/junit/DB2Resource.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package io.vertx.db2client.junit;
1717

18+
import io.vertx.core.net.ClientSSLOptions;
1819
import io.vertx.core.net.JksOptions;
1920
import io.vertx.db2client.DB2ConnectOptions;
2021
import org.junit.rules.ExternalResource;
@@ -101,9 +102,9 @@ public DB2ConnectOptions secureOptions() {
101102
return new DB2ConnectOptions(options())
102103
.setPort(securePort)
103104
.setSsl(true)
104-
.setTrustStoreOptions(new JksOptions()
105-
.setPath("src/test/resources/tls/db2-keystore.p12")
106-
.setPassword("db2test"));
105+
.setSslOptions(new ClientSSLOptions().setTrustOptions(new JksOptions()
106+
.setPath("src/test/resources/tls/db2-keystore.p12")
107+
.setPassword("db2test")));
107108
}
108109

109110
public boolean isZOS() {

vertx-mssql-client/src/main/generated/io/vertx/mssqlclient/MSSQLConnectOptionsConverter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ public static void fromJson(Iterable<java.util.Map.Entry<String, Object>> json,
2525
obj.setPacketSize(((Number)member.getValue()).intValue());
2626
}
2727
break;
28+
case "ssl":
29+
if (member.getValue() instanceof Boolean) {
30+
obj.setSsl((Boolean)member.getValue());
31+
}
32+
break;
2833
}
2934
}
3035
}
@@ -35,5 +40,6 @@ public static void toJson(MSSQLConnectOptions obj, JsonObject json) {
3540

3641
public static void toJson(MSSQLConnectOptions obj, java.util.Map<String, Object> json) {
3742
json.put("packetSize", obj.getPacketSize());
43+
json.put("ssl", obj.isSsl());
3844
}
3945
}

vertx-mssql-client/src/main/java/examples/MSSQLClientExamples.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
package examples;
1313

1414
import io.vertx.core.Vertx;
15+
import io.vertx.core.net.ClientSSLOptions;
1516
import io.vertx.core.net.PemTrustOptions;
1617
import io.vertx.docgen.Source;
1718
import io.vertx.mssqlclient.MSSQLConnectOptions;
@@ -307,13 +308,13 @@ public void setSsl() {
307308
public void disableHostnameValidation() {
308309
MSSQLConnectOptions connectOptions = new MSSQLConnectOptions()
309310
.setSsl(true)
310-
.setTrustAll(true);
311+
.setSslOptions(new ClientSSLOptions().setTrustAll(true));
311312
}
312313

313314
public void usingTrustOptions() {
314315
MSSQLConnectOptions connectOptions = new MSSQLConnectOptions()
315316
.setSsl(true)
316-
.setPemTrustOptions(new PemTrustOptions().addCertPath("/path/to/server-cert.pem"));
317+
.setSslOptions(new ClientSSLOptions().setTrustOptions(new PemTrustOptions().addCertPath("/path/to/server-cert.pem")));
317318
}
318319

319320
public void infoHandler(MSSQLConnection connection) {

0 commit comments

Comments
 (0)