Skip to content

Commit 71532e4

Browse files
committed
Do not subclass anymore the current pool implementation with Pool sub interfaces and instead use a proxy to a single pool implementation
1 parent ca464a5 commit 71532e4

File tree

10 files changed

+292
-261
lines changed

10 files changed

+292
-261
lines changed

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

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,13 @@
1515
*/
1616
package io.vertx.db2client.impl;
1717

18-
import io.vertx.core.Future;
19-
import io.vertx.core.Handler;
20-
import io.vertx.core.impl.CloseFuture;
21-
import io.vertx.core.impl.VertxInternal;
22-
import io.vertx.core.spi.metrics.ClientMetrics;
23-
import io.vertx.db2client.DB2ConnectOptions;
2418
import io.vertx.db2client.DB2Pool;
25-
import io.vertx.db2client.spi.DB2Driver;
26-
import io.vertx.sqlclient.PoolOptions;
27-
import io.vertx.sqlclient.SqlConnectOptions;
28-
import io.vertx.sqlclient.SqlConnection;
19+
import io.vertx.sqlclient.Pool;
2920
import io.vertx.sqlclient.impl.PoolBase;
30-
import io.vertx.sqlclient.impl.tracing.QueryTracer;
31-
32-
import java.util.function.Supplier;
3321

3422
public class DB2PoolImpl extends PoolBase<DB2PoolImpl> implements DB2Pool {
3523

36-
public DB2PoolImpl(VertxInternal vertx, int pipeliningLimit, PoolOptions poolOptions, DB2ConnectOptions baseConnectOptions, Supplier<Future<SqlConnectOptions>> connectOptionsProvider, QueryTracer tracer, ClientMetrics metrics, CloseFuture closeFuture) {
37-
super(vertx, DB2Driver.INSTANCE, baseConnectOptions, connectOptionsProvider, tracer, metrics, pipeliningLimit, poolOptions, closeFuture);
38-
}
39-
40-
@Override
41-
public DB2Pool connectHandler(Handler<SqlConnection> handler) {
42-
return (DB2Pool) super.connectHandler(handler);
24+
public DB2PoolImpl(Pool delegate) {
25+
super(delegate);
4326
}
4427
}

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
@@ -30,6 +30,7 @@
3030
import io.vertx.sqlclient.PoolOptions;
3131
import io.vertx.sqlclient.SqlConnectOptions;
3232
import io.vertx.sqlclient.impl.Connection;
33+
import io.vertx.sqlclient.impl.PoolImpl;
3334
import io.vertx.sqlclient.impl.SqlConnectionInternal;
3435
import io.vertx.sqlclient.impl.tracing.QueryTracer;
3536
import io.vertx.sqlclient.spi.Driver;
@@ -51,13 +52,13 @@ public DB2Pool newPool(Vertx vertx, List<? extends SqlConnectOptions> databases,
5152
boolean pipelinedPool = options instanceof Db2PoolOptions && ((Db2PoolOptions) options).isPipelined();
5253
int pipeliningLimit = pipelinedPool ? baseConnectOptions.getPipeliningLimit() : 1;
5354
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(baseConnectOptions.getSocketAddress(), "sql", baseConnectOptions.getMetricsName()) : null;
54-
DB2PoolImpl pool = new DB2PoolImpl(vx, pipeliningLimit, options, baseConnectOptions, null, tracer, metrics, closeFuture);
55+
PoolImpl pool = new PoolImpl(vx, this, baseConnectOptions, null, tracer, metrics, pipeliningLimit, options, closeFuture);
5556
pool.init();
5657
List<ConnectionFactory> lst = databases.stream().map(o -> createConnectionFactory(vertx, o)).collect(Collectors.toList());
5758
ConnectionFactory factory = ConnectionFactory.roundRobinSelector(lst);
5859
pool.connectionProvider(factory::connect);
5960
closeFuture.add(factory);
60-
return pool;
61+
return new DB2PoolImpl(pool);
6162
}
6263

6364
@Override

vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLPoolImpl.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,13 @@
1111

1212
package io.vertx.mssqlclient.impl;
1313

14-
import io.vertx.core.Future;
15-
import io.vertx.core.Handler;
16-
import io.vertx.core.impl.CloseFuture;
17-
import io.vertx.core.impl.VertxInternal;
18-
import io.vertx.core.spi.metrics.ClientMetrics;
19-
import io.vertx.mssqlclient.MSSQLConnectOptions;
2014
import io.vertx.mssqlclient.MSSQLPool;
21-
import io.vertx.mssqlclient.spi.MSSQLDriver;
22-
import io.vertx.sqlclient.PoolOptions;
23-
import io.vertx.sqlclient.SqlConnectOptions;
24-
import io.vertx.sqlclient.SqlConnection;
15+
import io.vertx.sqlclient.Pool;
2516
import io.vertx.sqlclient.impl.PoolBase;
26-
import io.vertx.sqlclient.impl.tracing.QueryTracer;
27-
28-
import java.util.function.Supplier;
2917

3018
public class MSSQLPoolImpl extends PoolBase<MSSQLPoolImpl> implements MSSQLPool {
3119

32-
public MSSQLPoolImpl(VertxInternal vertx, MSSQLConnectOptions baseConnectOptions, Supplier<Future<SqlConnectOptions>> connectOptionsProvider, QueryTracer tracer, ClientMetrics metrics, PoolOptions poolOptions, CloseFuture closeFuture) {
33-
super(vertx, MSSQLDriver.INSTANCE, baseConnectOptions, connectOptionsProvider, tracer, metrics, 1, poolOptions, closeFuture);
34-
}
35-
36-
@Override
37-
public MSSQLPool connectHandler(Handler<SqlConnection> handler) {
38-
return (MSSQLPool) super.connectHandler(handler);
20+
public MSSQLPoolImpl(Pool delegate) {
21+
super(delegate);
3922
}
4023
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.vertx.sqlclient.PoolOptions;
3030
import io.vertx.sqlclient.SqlConnectOptions;
3131
import io.vertx.sqlclient.impl.Connection;
32+
import io.vertx.sqlclient.impl.PoolImpl;
3233
import io.vertx.sqlclient.impl.SqlConnectionInternal;
3334
import io.vertx.sqlclient.impl.tracing.QueryTracer;
3435
import io.vertx.sqlclient.spi.Driver;
@@ -48,13 +49,13 @@ public MSSQLPool newPool(Vertx vertx, List<? extends SqlConnectOptions> database
4849
QueryTracer tracer = vx.tracer() == null ? null : new QueryTracer(vx.tracer(), baseConnectOptions);
4950
VertxMetrics vertxMetrics = vx.metricsSPI();
5051
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(baseConnectOptions.getSocketAddress(), "sql", baseConnectOptions.getMetricsName()) : null;
51-
MSSQLPoolImpl pool = new MSSQLPoolImpl(vx, baseConnectOptions, null, tracer, metrics, options, closeFuture);
52+
PoolImpl pool = new PoolImpl(vx, this, baseConnectOptions, null, tracer, metrics, 1, options, closeFuture);
5253
pool.init();
5354
List<ConnectionFactory> lst = databases.stream().map(o -> createConnectionFactory(vertx, o)).collect(Collectors.toList());
5455
ConnectionFactory factory = ConnectionFactory.roundRobinSelector(lst);
5556
pool.connectionProvider(factory::connect);
5657
closeFuture.add(factory);
57-
return pool;
58+
return new MSSQLPoolImpl(pool);
5859
}
5960

6061
@Override

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLPoolImpl.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,13 @@
1111

1212
package io.vertx.mysqlclient.impl;
1313

14-
import io.vertx.core.Future;
15-
import io.vertx.core.Handler;
16-
import io.vertx.core.impl.CloseFuture;
17-
import io.vertx.core.impl.VertxInternal;
18-
import io.vertx.core.spi.metrics.ClientMetrics;
19-
import io.vertx.mysqlclient.MySQLConnectOptions;
2014
import io.vertx.mysqlclient.MySQLPool;
21-
import io.vertx.mysqlclient.spi.MySQLDriver;
22-
import io.vertx.sqlclient.PoolOptions;
23-
import io.vertx.sqlclient.SqlConnectOptions;
24-
import io.vertx.sqlclient.SqlConnection;
15+
import io.vertx.sqlclient.Pool;
2516
import io.vertx.sqlclient.impl.PoolBase;
26-
import io.vertx.sqlclient.impl.tracing.QueryTracer;
27-
28-
import java.util.function.Supplier;
2917

3018
public class MySQLPoolImpl extends PoolBase<MySQLPoolImpl> implements MySQLPool {
3119

32-
public MySQLPoolImpl(VertxInternal vertx, MySQLConnectOptions baseConnectOptions, Supplier<Future<SqlConnectOptions>> connectOptionsProvider, QueryTracer tracer, ClientMetrics metrics, PoolOptions poolOptions, CloseFuture closeFuture) {
33-
super(vertx, MySQLDriver.INSTANCE, baseConnectOptions, connectOptionsProvider, tracer, metrics, 1, poolOptions, closeFuture);
34-
}
35-
36-
@Override
37-
public MySQLPool connectHandler(Handler<SqlConnection> handler) {
38-
return (MySQLPool) super.connectHandler(handler);
20+
public MySQLPoolImpl(Pool delegate) {
21+
super(delegate);
3922
}
4023
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.vertx.sqlclient.PoolOptions;
3030
import io.vertx.sqlclient.SqlConnectOptions;
3131
import io.vertx.sqlclient.impl.Connection;
32+
import io.vertx.sqlclient.impl.PoolImpl;
3233
import io.vertx.sqlclient.impl.SqlConnectionInternal;
3334
import io.vertx.sqlclient.impl.tracing.QueryTracer;
3435
import io.vertx.sqlclient.spi.Driver;
@@ -48,13 +49,13 @@ public MySQLPool newPool(Vertx vertx, List<? extends SqlConnectOptions> database
4849
QueryTracer tracer = vx.tracer() == null ? null : new QueryTracer(vx.tracer(), baseConnectOptions);
4950
VertxMetrics vertxMetrics = vx.metricsSPI();
5051
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(baseConnectOptions.getSocketAddress(), "sql", baseConnectOptions.getMetricsName()) : null;
51-
MySQLPoolImpl pool = new MySQLPoolImpl(vx, baseConnectOptions, null, tracer, metrics, options, closeFuture);
52+
PoolImpl pool = new PoolImpl(vx, this, baseConnectOptions, null, tracer, metrics, 1, options, closeFuture);
5253
pool.init();
5354
List<ConnectionFactory> lst = databases.stream().map(o -> createConnectionFactory(vertx, o)).collect(Collectors.toList());
5455
ConnectionFactory factory = ConnectionFactory.roundRobinSelector(lst);
5556
pool.connectionProvider(factory::connect);
5657
closeFuture.add(factory);
57-
return pool;
58+
return new MySQLPoolImpl(pool);
5859
}
5960

6061
@Override

vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgPoolImpl.java

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,9 @@
1717

1818
package io.vertx.pgclient.impl;
1919

20-
import io.vertx.core.Handler;
21-
import io.vertx.core.impl.CloseFuture;
22-
import io.vertx.core.impl.VertxInternal;
23-
import io.vertx.core.spi.metrics.ClientMetrics;
2420
import io.vertx.pgclient.*;
25-
import io.vertx.pgclient.spi.PgDriver;
26-
import io.vertx.sqlclient.PoolOptions;
27-
import io.vertx.sqlclient.SqlConnection;
21+
import io.vertx.sqlclient.Pool;
2822
import io.vertx.sqlclient.impl.PoolBase;
29-
import io.vertx.sqlclient.impl.tracing.QueryTracer;
3023

3124
/**
3225
* Todo :
@@ -39,13 +32,7 @@
3932
*/
4033
public class PgPoolImpl extends PoolBase<PgPoolImpl> implements PgPool {
4134

42-
public PgPoolImpl(VertxInternal vertx, PgConnectOptions baseConnectOptions, QueryTracer tracer, ClientMetrics metrics, int pipeliningLimit, PoolOptions poolOptions, CloseFuture closeFuture) {
43-
super(vertx, PgDriver.INSTANCE, baseConnectOptions, null, tracer, metrics, pipeliningLimit, poolOptions, closeFuture);
35+
public PgPoolImpl(Pool delegate) {
36+
super(delegate);
4437
}
45-
46-
@Override
47-
public PgPool connectHandler(Handler<SqlConnection> handler) {
48-
return (PgPool) super.connectHandler(handler);
49-
}
50-
5138
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.vertx.sqlclient.PoolOptions;
1616
import io.vertx.sqlclient.SqlConnectOptions;
1717
import io.vertx.sqlclient.impl.Connection;
18+
import io.vertx.sqlclient.impl.PoolImpl;
1819
import io.vertx.sqlclient.impl.SqlConnectionInternal;
1920
import io.vertx.sqlclient.impl.tracing.QueryTracer;
2021
import io.vertx.sqlclient.spi.Driver;
@@ -36,13 +37,13 @@ public PgPool newPool(Vertx vertx, List<? extends SqlConnectOptions> databases,
3637
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(baseConnectOptions.getSocketAddress(), "sql", baseConnectOptions.getMetricsName()) : null;
3738
boolean pipelinedPool = options instanceof PgPoolOptions && ((PgPoolOptions) options).isPipelined();
3839
int pipeliningLimit = pipelinedPool ? baseConnectOptions.getPipeliningLimit() : 1;
39-
PgPoolImpl pool = new PgPoolImpl(vx, baseConnectOptions, tracer, metrics, pipeliningLimit, options, closeFuture);
40+
PoolImpl pool = new PoolImpl(vx, this, baseConnectOptions, null, tracer, metrics, pipeliningLimit, options, closeFuture);
4041
List<ConnectionFactory> lst = databases.stream().map(o -> createConnectionFactory(vx, o)).collect(Collectors.toList());
4142
ConnectionFactory factory = ConnectionFactory.roundRobinSelector(lst);
4243
pool.connectionProvider(factory::connect);
4344
pool.init();
4445
closeFuture.add(factory);
45-
return pool;
46+
return new PgPoolImpl(pool);
4647
}
4748

4849
@Override

0 commit comments

Comments
 (0)