From 616f89ee7df1ab993d814516002023a33cee37c8 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Mon, 30 Jun 2025 12:01:49 +0200 Subject: [PATCH 01/25] Couple of missing module requires in tests --- vertx-mssql-client/src/test/java/module-info.java | 1 + vertx-mysql-client/src/test/java/module-info.java | 1 + 2 files changed, 2 insertions(+) diff --git a/vertx-mssql-client/src/test/java/module-info.java b/vertx-mssql-client/src/test/java/module-info.java index dc697fade..b625c61bf 100644 --- a/vertx-mssql-client/src/test/java/module-info.java +++ b/vertx-mssql-client/src/test/java/module-info.java @@ -8,5 +8,6 @@ requires io.vertx.testing.unit; requires junit; requires testcontainers; + requires hamcrest.core; } diff --git a/vertx-mysql-client/src/test/java/module-info.java b/vertx-mysql-client/src/test/java/module-info.java index 2cfcc843e..db1573621 100644 --- a/vertx-mysql-client/src/test/java/module-info.java +++ b/vertx-mysql-client/src/test/java/module-info.java @@ -10,5 +10,6 @@ requires io.vertx.testing.unit; requires junit; requires testcontainers; + requires com.github.dockerjava.api; } From 8acb97ffd0b8367fcfa2dadbde7603434c84e295 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Mon, 30 Jun 2025 12:01:56 +0200 Subject: [PATCH 02/25] Decouple ConnectionFactory from connection API. Motivation: The ConnectionFactory SPI currently provides an SqlConnection, most callers actually care about the actual Connection SPI and unwrap it then cast it. Instead we can have the ConnectionFactory only care about providing Connection and let callers wrap it with an SqlConnection of their choice. As consequence this simplifies the pool implementation as they operation on Connection. --- .../db2client/impl/DB2ConnectionFactory.java | 11 +++------- .../db2client/impl/DB2ConnectionImpl.java | 7 ++++++- .../io/vertx/db2client/spi/DB2Driver.java | 3 ++- .../impl/MSSQLConnectionFactory.java | 12 +++-------- .../mssqlclient/impl/MSSQLConnectionImpl.java | 7 ++++++- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 3 ++- .../impl/MySQLConnectionFactory.java | 8 ++++---- .../mysqlclient/impl/MySQLConnectionImpl.java | 7 ++++++- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 3 ++- .../impl/OracleConnectionFactory.java | 9 +++------ .../impl/OracleConnectionImpl.java | 8 +++++++- .../vertx/oracleclient/spi/OracleDriver.java | 3 ++- .../pgclient/impl/PgConnectionFactory.java | 13 +++--------- .../vertx/pgclient/impl/PgConnectionImpl.java | 7 ++++++- .../java/io/vertx/pgclient/spi/PgDriver.java | 3 ++- .../impl/pool/SqlConnectionPool.java | 20 +++++++++++-------- .../sqlclient/internal/SqlConnectionBase.java | 9 ++++++--- .../sqlclient/internal/pool/PoolImpl.java | 11 +++++++--- .../sqlclient/spi/ConnectionFactory.java | 6 +++--- 19 files changed, 86 insertions(+), 64 deletions(-) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java index 6ca28d880..9a6a422fb 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java @@ -65,15 +65,10 @@ protected Future doConnectInternal(DB2ConnectOptions options, Contex } @Override - public Future connect(Context context, DB2ConnectOptions options) { + public Future connect(Context context, DB2ConnectOptions options) { ContextInternal contextInternal = (ContextInternal) context; - Promise promise = contextInternal.promise(); - connect(asEventLoopContext(contextInternal), options) - .map(conn -> { - DB2ConnectionImpl db2Connection = new DB2ConnectionImpl(contextInternal, this, conn); - conn.init(db2Connection); - return (SqlConnection)db2Connection; - }).onComplete(promise); + Promise promise = contextInternal.promise(); + connect(asEventLoopContext(contextInternal), options).onComplete(promise); return promise.future(); } } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java index 8bdb1280e..59393fa37 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java @@ -37,7 +37,12 @@ public static Future connect(Vertx vertx, DB2ConnectOptions optio } catch (Exception e) { return ctx.failedFuture(e); } - return prepareForClose(ctx, client.connect((Context)ctx, options)).map(DB2Connection::cast); + return client.connect((Context)ctx, options).map(conn -> { + DB2ConnectionImpl impl = new DB2ConnectionImpl(ctx, client, conn); + conn.init(impl); + prepareForClose(ctx, impl); + return impl; + }); } public DB2ConnectionImpl(ContextInternal context, ConnectionFactory factory, Connection conn) { 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 d5a64f18a..e6eef8d97 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 @@ -64,7 +64,8 @@ public Pool newPool(Vertx vertx, Supplier> databases, private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, CloseFuture closeFuture) { boolean pipelinedPool = options instanceof Db2PoolOptions && ((Db2PoolOptions) options).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); - PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, options, null, null, context -> factory.connect(context, databases.get()), connectHandler, closeFuture); + PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, options, null, null, + factory, databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); return pool; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java index 515370e3c..c34efc989 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java @@ -106,16 +106,10 @@ private Future login(MSSQLSocketConnection conn, MSSQLConnectOptions } @Override - public Future connect(Context context, MSSQLConnectOptions options) { + public Future connect(Context context, MSSQLConnectOptions options) { ContextInternal ctx = (ContextInternal) context; - Promise promise = ctx.promise(); - connect(asEventLoopContext(ctx), options) - .map(conn -> { - MSSQLConnectionImpl msConn = new MSSQLConnectionImpl(ctx, this, conn); - conn.init(msConn); - return (SqlConnection)msConn; - }) - .onComplete(promise); + Promise promise = ctx.promise(); + connect(asEventLoopContext(ctx), options).onComplete(promise); return promise.future(); } } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java index eb96a5133..b280b2295 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java @@ -36,7 +36,12 @@ public MSSQLConnectionImpl(ContextInternal context, ConnectionFactory factory, C public static Future connect(Vertx vertx, MSSQLConnectOptions options) { ContextInternal ctx = (ContextInternal) vertx.getOrCreateContext(); MSSQLConnectionFactory client = new MSSQLConnectionFactory(ctx.owner()); - return prepareForClose(ctx, client.connect((Context)ctx, options)).map(MSSQLConnection::cast); + return client.connect((Context)ctx, options).map(conn -> { + MSSQLConnectionImpl impl = new MSSQLConnectionImpl(ctx, client, conn); + conn.init(impl); + prepareForClose(ctx, impl); + return impl; + }); } @Override 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 0c01516de..80f944711 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 @@ -65,7 +65,8 @@ public Pool newPool(Vertx vertx, Supplier> databases private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); - PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, null, null, context -> factory.connect(context, databases.get()), connectHandler, closeFuture); + PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, null, null, + factory, databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); return pool; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java index 30aa1d410..cdbe94782 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java @@ -142,15 +142,15 @@ private Future doConnect(MySQLConnectOptions options, SslMode sslMod } @Override - public Future connect(Context context, MySQLConnectOptions options) { + public Future connect(Context context, MySQLConnectOptions options) { ContextInternal contextInternal = (ContextInternal) context; - Promise promise = contextInternal.promise(); + Promise promise = contextInternal.promise(); connect(asEventLoopContext(contextInternal), options) - .map(conn -> { + /*.map(conn -> { MySQLConnectionImpl mySQLConnection = new MySQLConnectionImpl(contextInternal, this, conn); conn.init(mySQLConnection); return (SqlConnection)mySQLConnection; - }) + })*/ .onComplete(promise); return promise.future(); } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java index 3b0b31157..465dfc5fc 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java @@ -37,7 +37,12 @@ public static Future connect(ContextInternal ctx, MySQLConnectO } catch (Exception e) { return ctx.failedFuture(e); } - return prepareForClose(ctx, client.connect((Context)ctx, options)).map(MySQLConnection::cast); + return client.connect((Context)ctx, options).map(conn -> { + MySQLConnectionImpl impl = new MySQLConnectionImpl(ctx, client, conn); + conn.init(impl); + prepareForClose(ctx, impl); + return impl; + }); } public MySQLConnectionImpl(ContextInternal context, ConnectionFactory factory, Connection conn) { 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 76c8422f7..3314137a7 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 @@ -64,7 +64,8 @@ public Pool newPool(Vertx vertx, Supplier> databases private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { boolean pipelinedPool = poolOptions instanceof MySQLPoolOptions && ((MySQLPoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); - PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, context -> factory.connect(context, databases.get()), connectHandler, closeFuture); + PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, factory, + databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); return pool; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java index f19fdfc1c..aaa3610f8 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java @@ -13,7 +13,6 @@ import io.vertx.core.Completable; import io.vertx.core.Context; import io.vertx.core.Future; -import io.vertx.core.Promise; import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.VertxInternal; import io.vertx.core.json.JsonObject; @@ -21,7 +20,7 @@ import io.vertx.core.spi.metrics.VertxMetrics; import io.vertx.oracleclient.OracleConnectOptions; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.SqlConnection; +import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.spi.ConnectionFactory; import oracle.jdbc.OracleConnection; import oracle.jdbc.datasource.OracleDataSource; @@ -59,7 +58,7 @@ private OracleDataSource getDatasource(SqlConnectOptions options) { } @Override - public Future connect(Context context, OracleConnectOptions options) { + public Future connect(Context context, OracleConnectOptions options) { OracleDataSource datasource = getDatasource(options); VertxMetrics vertxMetrics = ((VertxInternal)context.owner()).metrics(); ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(options.getSocketAddress(), "sql", options.getMetricsName()) : null; @@ -68,9 +67,7 @@ public Future connect(Context context, OracleConnectOptions optio OracleConnection orac = datasource.createConnectionBuilder().build(); OracleMetadata metadata = new OracleMetadata(orac.getMetaData()); OracleJdbcConnection conn = new OracleJdbcConnection(ctx, metrics, options, orac, metadata); - OracleConnectionImpl msConn = new OracleConnectionImpl(ctx, this, conn); - conn.init(msConn); - return msConn; + return conn; }); } } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java index 6c428c0b3..64c69724f 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java @@ -11,6 +11,7 @@ package io.vertx.oracleclient.impl; +import io.vertx.core.Context; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.internal.ContextInternal; @@ -30,6 +31,11 @@ public OracleConnectionImpl(ContextInternal context, ConnectionFactory factory, public static Future connect(Vertx vertx, OracleConnectOptions options) { ContextInternal ctx = (ContextInternal) vertx.getOrCreateContext(); OracleConnectionFactory client = new OracleConnectionFactory(ctx.owner()); - return prepareForClose(ctx, client.connect(ctx, options)).map(OracleConnection::cast); + return client.connect(ctx, options).map(conn -> { + OracleConnectionImpl impl = new OracleConnectionImpl(ctx, client, conn); + conn.init(impl); + prepareForClose(ctx, impl); + return impl; + }); } } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java index d7f7083bc..b11bf9395 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java @@ -61,7 +61,8 @@ private PoolImpl newPoolImpl(VertxInternal vertx, Handler connect Function> afterAcquire = conn -> ((OracleJdbcConnection) conn).afterAcquire(); Function> beforeRecycle = conn -> ((OracleJdbcConnection) conn).beforeRecycle(); ConnectionFactory factory = createConnectionFactory(vertx, null); - PoolImpl pool = new PoolImpl(vertx, this, false, options, afterAcquire, beforeRecycle, context -> factory.connect(context, databases.get()), connectHandler, closeFuture); + PoolImpl pool = new PoolImpl(vertx, this, false, options, afterAcquire, beforeRecycle, + factory, databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); return pool; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java index 289b84786..bb9e96c82 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java @@ -28,7 +28,6 @@ import io.vertx.core.internal.net.NetSocketInternal; import io.vertx.pgclient.PgConnectOptions; import io.vertx.pgclient.SslMode; -import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.impl.ConnectionFactoryBase; @@ -153,19 +152,13 @@ private Future doConnect(ConnectOptions connectOptions, ContextInter } @Override - public Future connect(Context context, PgConnectOptions options) { + public Future connect(Context context, PgConnectOptions options) { ContextInternal contextInternal = (ContextInternal) context; if (options.isUsingDomainSocket() && !vertx.isNativeTransportEnabled()) { return contextInternal.failedFuture(new IllegalArgumentException(NATIVE_TRANSPORT_REQUIRED)); } - PromiseInternal promise = contextInternal.promise(); - connect(asEventLoopContext(contextInternal), options) - .map(conn -> { - PgConnectionImpl pgConn = new PgConnectionImpl(this, contextInternal, conn); - conn.init(pgConn); - return (SqlConnection)pgConn; - }) - .onComplete(promise); + PromiseInternal promise = contextInternal.promise(); + connect(asEventLoopContext(contextInternal), options).onComplete(promise); return promise.future(); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java index ed7433fa0..4820c3d2d 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java @@ -42,7 +42,12 @@ public static Future connect(ContextInternal context, PgConnectOpt } catch (Exception e) { return context.failedFuture(e); } - return prepareForClose(context, client.connect((Context)context, options)).map(PgConnection::cast); + return client.connect((Context)context, options).map(conn -> { + PgConnectionImpl impl = new PgConnectionImpl(client, context, conn); + conn.init(impl); + prepareForClose(context, impl); + return impl; + }); } private volatile Handler notificationHandler; 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 80f899ef5..f63476ca4 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 @@ -47,7 +47,8 @@ public Pool newPool(Vertx vertx, Supplier> databases, P private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { boolean pipelinedPool = poolOptions instanceof PgPoolOptions && ((PgPoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); - PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, context -> factory.connect(context, databases.get()), connectHandler, closeFuture); + PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, + factory, databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); return pool; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java index b74c78732..42af21c37 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java @@ -23,6 +23,7 @@ import io.vertx.core.internal.pool.*; import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.VertxInternal; +import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.internal.SqlConnectionBase; @@ -34,6 +35,7 @@ import java.util.List; import java.util.function.Function; +import java.util.function.Supplier; import java.util.stream.Collectors; /** @@ -47,7 +49,8 @@ public class SqlConnectionPool { private static final Object NO_METRICS = new Object(); - private final Function> connectionProvider; + private final Function> connectionProvider; + private final ConnectionFactory connectionFactory; private final VertxInternal vertx; private final PoolMetrics metrics; private final ConnectionPool pool; @@ -59,7 +62,9 @@ public class SqlConnectionPool { private final long maxLifetime; private final int maxSize; - public SqlConnectionPool(Function> connectionProvider, + // TODO : use connection provider with Connection instead of SqlConnection + public SqlConnectionPool(Supplier> optionsProvider, + ConnectionFactory connectionFactory, PoolMetrics metrics, Handler hook, Function> afterAcquire, @@ -78,6 +83,7 @@ public SqlConnectionPool(Function> connectionProv throw new IllegalArgumentException("afterAcquire and beforeRecycle hooks must be both not null"); } this.pool = ConnectionPool.pool(connector, new int[]{maxSize}, maxWaitQueueSize); + this.connectionFactory = connectionFactory; this.metrics = metrics; this.vertx = vertx; this.pipelined = pipelined; @@ -85,7 +91,7 @@ public SqlConnectionPool(Function> connectionProv this.maxLifetime = maxLifetime; this.maxSize = maxSize; this.hook = hook; - this.connectionProvider = connectionProvider; + this.connectionProvider = context -> connectionFactory.connect(context, optionsProvider.get()); this.afterAcquire = afterAcquire; this.beforeRecycle = beforeRecycle; @@ -114,12 +120,10 @@ public ContextInternal apply(ContextInternal contextInternal) { private final PoolConnector connector = new PoolConnector<>() { @Override public Future> connect(ContextInternal context, Listener listener) { - Future future = connectionProvider.apply(context); - return future.compose(res -> { - SqlConnectionBase connBase = (SqlConnectionBase) res; - Connection conn = connBase.unwrap(); + Future future = connectionProvider.apply(context); + return future.compose(conn -> { if (conn.isValid()) { - PooledConnection pooled = new PooledConnection(connBase.factory(), conn, listener); + PooledConnection pooled = new PooledConnection(connectionFactory, conn, listener); conn.init(pooled); if (hook != null) { Promise> p = Promise.promise(); diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java index cb8c79803..8084b5571 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java @@ -230,10 +230,13 @@ private void doClose(Completable promise) { protected static Future prepareForClose(ContextInternal ctx, Future future) { return future.andThen(ar -> { if (ar.succeeded()) { - SqlConnectionBase base = (SqlConnectionBase) ar.result(); - base.closeFactoryAfterUsage = true; - ctx.addCloseHook(base); + prepareForClose(ctx, (SqlConnectionBase) ar.result()); } }); } + + protected static void prepareForClose(ContextInternal ctx, SqlConnectionBase base) { + base.closeFactoryAfterUsage = true; + ctx.addCloseHook(base); + } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/PoolImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/PoolImpl.java index 1a82ba721..545ba6a7d 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/PoolImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/PoolImpl.java @@ -32,9 +32,11 @@ import io.vertx.sqlclient.internal.SqlClientBase; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.ConnectionFactory; import io.vertx.sqlclient.spi.Driver; import java.util.function.Function; +import java.util.function.Supplier; import static java.util.concurrent.TimeUnit.MILLISECONDS; @@ -55,13 +57,14 @@ public class PoolImpl extends SqlClientBase implements Pool, Closeable { private final Handler connectionInitializer; private long timerID; - public PoolImpl(VertxInternal vertx, + public PoolImpl(VertxInternal vertx, Driver driver, boolean pipelined, PoolOptions poolOptions, Function> afterAcquire, Function> beforeRecycle, - Function> connectionProvider, + ConnectionFactory connectionFactory, + Supplier> connectionProvider, Handler connectionInitializer, CloseFuture closeFuture) { super(driver); @@ -83,7 +86,9 @@ public PoolImpl(VertxInternal vertx, this.timerID = -1L; this.pipelined = pipelined; this.vertx = vertx; - this.pool = new SqlConnectionPool(connectionProvider, poolMetrics, hook, afterAcquire, beforeRecycle, vertx, idleTimeout, maxLifetime, poolOptions.getMaxSize(), pipelined, poolOptions.getMaxWaitQueueSize(), poolOptions.getEventLoopSize()); + this.pool = new SqlConnectionPool(connectionProvider, connectionFactory, poolMetrics, hook, afterAcquire, + beforeRecycle, vertx, idleTimeout, maxLifetime, poolOptions.getMaxSize(), pipelined, + poolOptions.getMaxWaitQueueSize(), poolOptions.getEventLoopSize()); this.closeFuture = closeFuture; this.connectionInitializer = connectionInitializer; } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java index 2ef4a63c2..68f6167b5 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java @@ -6,14 +6,14 @@ import io.vertx.core.*; import io.vertx.core.internal.ContextInternal; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.SqlConnection; +import io.vertx.sqlclient.internal.Connection; /** * A connection factory, can be obtained from {@link Driver#createConnectionFactory} */ public interface ConnectionFactory extends Closeable { - default Future connect(Context context, Future fut) { + default Future connect(Context context, Future fut) { // The future might be on any context or context-less // So we need to use a specific context promise Promise promise = ((ContextInternal) context).promise(); @@ -30,6 +30,6 @@ default Future connect(Context context, Future fut) { * @param context the context * @return the future connection */ - Future connect(Context context, C options); + Future connect(Context context, C options); } From d7f63b2d74b01baae46fb8de2f74c5375d80a494 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Mon, 30 Jun 2025 12:50:05 +0200 Subject: [PATCH 03/25] Add generic driver with testing. --- .../io/vertx/db2client/spi/DB2Driver.java | 29 +-- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 40 +--- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 25 +- .../vertx/oracleclient/spi/OracleDriver.java | 27 +-- .../java/io/vertx/pgclient/spi/PgDriver.java | 21 +- .../internal/command/CommandBase.java | 1 + .../io/vertx/sqlclient/spi/GenericDriver.java | 46 ++++ .../spi/backend/GenericDriverTest.java | 222 ++++++++++++++++++ 8 files changed, 313 insertions(+), 98 deletions(-) create mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java create mode 100644 vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java 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 e6eef8d97..415ce3b58 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 @@ -30,41 +30,34 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.CloseablePool; import io.vertx.sqlclient.internal.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; -import io.vertx.sqlclient.spi.Driver; +import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Supplier; -public class DB2Driver implements Driver { +public class DB2Driver extends GenericDriver { - private static final String SHARED_CLIENT_KEY = "__vertx.shared.db2client"; + private static final String DISCRIMINANT = "db2client"; public static final DB2Driver INSTANCE = new DB2Driver(); @Override - public DB2ConnectOptions downcast(SqlConnectOptions connectOptions) { - return connectOptions instanceof DB2ConnectOptions ? (DB2ConnectOptions) connectOptions : new DB2ConnectOptions(connectOptions); + protected String discriminant() { + return DISCRIMINANT; } @Override - public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { - VertxInternal vx = (VertxInternal) vertx; - PoolImpl pool; - if (poolOptions.isShared()) { - pool = vx.createSharedResource(SHARED_CLIENT_KEY, poolOptions.getName(), closeFuture, cf -> newPoolImpl(vx, connectHandler, databases, poolOptions, transportOptions, cf)); - } else { - pool = newPoolImpl(vx, connectHandler, databases, poolOptions, transportOptions, closeFuture); - } - return new CloseablePool(vx, closeFuture, pool); + public DB2ConnectOptions downcast(SqlConnectOptions connectOptions) { + return connectOptions instanceof DB2ConnectOptions ? (DB2ConnectOptions) connectOptions : new DB2ConnectOptions(connectOptions); } - private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, CloseFuture closeFuture) { - boolean pipelinedPool = options instanceof Db2PoolOptions && ((Db2PoolOptions) options).isPipelined(); + @Override + protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { + boolean pipelinedPool = poolOptions instanceof Db2PoolOptions && ((Db2PoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); - PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, options, null, null, + PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, factory, databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); 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 80f944711..2f2afca0c 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 @@ -15,10 +15,7 @@ */ package io.vertx.mssqlclient.spi; -import io.vertx.core.Future; -import io.vertx.core.Handler; import io.vertx.core.Vertx; -import io.vertx.core.internal.CloseFuture; import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.VertxInternal; import io.vertx.core.json.JsonObject; @@ -27,49 +24,26 @@ import io.vertx.mssqlclient.impl.MSSQLConnectionFactory; import io.vertx.mssqlclient.impl.MSSQLConnectionImpl; import io.vertx.mssqlclient.impl.MSSQLConnectionUriParser; -import io.vertx.sqlclient.Pool; -import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.CloseablePool; -import io.vertx.sqlclient.internal.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; -import io.vertx.sqlclient.spi.Driver; +import io.vertx.sqlclient.spi.GenericDriver; -import java.util.function.Supplier; +public class MSSQLDriver extends GenericDriver { -public class MSSQLDriver implements Driver { - - private static final String SHARED_CLIENT_KEY = "__vertx.shared.mssqlclient"; + private static final String DISCRIMINANT = "mssqlclient"; public static final MSSQLDriver INSTANCE = new MSSQLDriver(); @Override - public MSSQLConnectOptions downcast(SqlConnectOptions connectOptions) { - return connectOptions instanceof MSSQLConnectOptions ? (MSSQLConnectOptions) connectOptions : new MSSQLConnectOptions(connectOptions); + protected String discriminant() { + return DISCRIMINANT; } @Override - public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { - VertxInternal vx = (VertxInternal) vertx; - PoolImpl pool; - if (options.isShared()) { - pool = vx.createSharedResource(SHARED_CLIENT_KEY, options.getName(), closeFuture, cf -> newPoolImpl(vx, connectHandler, databases, options, transportOptions, cf)); - } else { - pool = newPoolImpl(vx, connectHandler, databases, options, transportOptions, closeFuture); - } - return new CloseablePool(vx, closeFuture, pool); - } - - private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { - ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); - PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, null, null, - factory, databases, connectHandler, closeFuture); - pool.init(); - closeFuture.add(factory); - return pool; + public MSSQLConnectOptions downcast(SqlConnectOptions connectOptions) { + return connectOptions instanceof MSSQLConnectOptions ? (MSSQLConnectOptions) connectOptions : new MSSQLConnectOptions(connectOptions); } @Override 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 3314137a7..5dcad05d1 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 @@ -30,38 +30,31 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.CloseablePool; import io.vertx.sqlclient.internal.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; -import io.vertx.sqlclient.spi.Driver; +import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Supplier; -public class MySQLDriver implements Driver { +public class MySQLDriver extends GenericDriver { - private static final String SHARED_CLIENT_KEY = "__vertx.shared.mysqlclient"; + private static final String DISCRIMINANT = "mysqlclient"; public static final MySQLDriver INSTANCE = new MySQLDriver(); @Override - public MySQLConnectOptions downcast(SqlConnectOptions connectOptions) { - return connectOptions instanceof MySQLConnectOptions ? (MySQLConnectOptions) connectOptions : new MySQLConnectOptions(connectOptions); + protected String discriminant() { + return DISCRIMINANT; } @Override - public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { - VertxInternal vx = (VertxInternal) vertx; - PoolImpl pool; - if (options.isShared()) { - pool = vx.createSharedResource(SHARED_CLIENT_KEY, options.getName(), closeFuture, cf -> newPoolImpl(vx, connectHandler, databases, options, transportOptions, cf)); - } else { - pool = newPoolImpl(vx, connectHandler, databases, options, transportOptions, closeFuture); - } - return new CloseablePool(vx, closeFuture, pool); + public MySQLConnectOptions downcast(SqlConnectOptions connectOptions) { + return connectOptions instanceof MySQLConnectOptions ? (MySQLConnectOptions) connectOptions : new MySQLConnectOptions(connectOptions); } - private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { + @Override + protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { boolean pipelinedPool = poolOptions instanceof MySQLPoolOptions && ((MySQLPoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, factory, diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java index b11bf9395..0ba498786 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java @@ -25,43 +25,36 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.CloseablePool; import io.vertx.sqlclient.internal.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; -import io.vertx.sqlclient.spi.Driver; +import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Function; import java.util.function.Supplier; -public class OracleDriver implements Driver { +public class OracleDriver extends GenericDriver { - private static final String SHARED_CLIENT_KEY = "__vertx.shared.oracleclient"; + private static final String DISCRIMINANT = "oracleclient"; public static final OracleDriver INSTANCE = new OracleDriver(); @Override - public OracleConnectOptions downcast(SqlConnectOptions connectOptions) { - return connectOptions instanceof OracleConnectOptions ? (OracleConnectOptions) connectOptions : new OracleConnectOptions(connectOptions); + protected String discriminant() { + return DISCRIMINANT; } @Override - public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { - VertxInternal vx = (VertxInternal) vertx; - PoolImpl pool; - if (options.isShared()) { - pool = vx.createSharedResource(SHARED_CLIENT_KEY, options.getName(), closeFuture, cf -> newPoolImpl(vx, connectHandler, databases, options, cf)); - } else { - pool = newPoolImpl(vx, connectHandler, databases, options, closeFuture); - } - return new CloseablePool(vx, closeFuture, pool); + public OracleConnectOptions downcast(SqlConnectOptions connectOptions) { + return connectOptions instanceof OracleConnectOptions ? (OracleConnectOptions) connectOptions : new OracleConnectOptions(connectOptions); } - private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions options, CloseFuture closeFuture) { + @Override + protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { Function> afterAcquire = conn -> ((OracleJdbcConnection) conn).afterAcquire(); Function> beforeRecycle = conn -> ((OracleJdbcConnection) conn).beforeRecycle(); ConnectionFactory factory = createConnectionFactory(vertx, null); - PoolImpl pool = new PoolImpl(vertx, this, false, options, afterAcquire, beforeRecycle, + PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, afterAcquire, beforeRecycle, factory, databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); 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 f63476ca4..7223cd1dc 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 @@ -18,33 +18,26 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.CloseablePool; import io.vertx.sqlclient.internal.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; -import io.vertx.sqlclient.spi.Driver; +import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Supplier; -public class PgDriver implements Driver { +public class PgDriver extends GenericDriver { - private static final String SHARED_CLIENT_KEY = "__vertx.shared.pgclient"; + private static final String DISCRIMINANT = "pgclient"; public static final PgDriver INSTANCE = new PgDriver(); @Override - public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { - VertxInternal vx = (VertxInternal) vertx; - PoolImpl pool; - if (poolOptions.isShared()) { - pool = vx.createSharedResource(SHARED_CLIENT_KEY, poolOptions.getName(), closeFuture, cf -> newPoolImpl(vx, connectHandler, databases, poolOptions, transportOptions, cf)); - } else { - pool = newPoolImpl(vx, connectHandler, databases, poolOptions, transportOptions, closeFuture); - } - return new CloseablePool(vx, closeFuture, pool); + protected String discriminant() { + return DISCRIMINANT; } - private PoolImpl newPoolImpl(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { + @Override + protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { boolean pipelinedPool = poolOptions instanceof PgPoolOptions && ((PgPoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java index c2688cff7..f3cd2eadc 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java @@ -28,6 +28,7 @@ public abstract class CommandBase { + // Todo : hide this public Completable handler; public final void fail(Throwable err) { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java new file mode 100644 index 000000000..72a802875 --- /dev/null +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java @@ -0,0 +1,46 @@ +package io.vertx.sqlclient.spi; + +import io.vertx.core.Future; +import io.vertx.core.Handler; +import io.vertx.core.Vertx; +import io.vertx.core.internal.CloseFuture; +import io.vertx.core.internal.VertxInternal; +import io.vertx.core.net.NetClientOptions; +import io.vertx.sqlclient.Pool; +import io.vertx.sqlclient.PoolOptions; +import io.vertx.sqlclient.SqlConnectOptions; +import io.vertx.sqlclient.SqlConnection; +import io.vertx.sqlclient.internal.pool.CloseablePool; +import io.vertx.sqlclient.internal.pool.PoolImpl; + +import java.util.function.Supplier; + +public abstract class GenericDriver implements Driver { + + private static final String SHARED_CLIENT_KEY_PREFIX = "__vertx.shared."; + + private final String sharedClientKey = SHARED_CLIENT_KEY_PREFIX + "." + discriminant(); + + protected abstract String discriminant(); + + @Override + public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { + VertxInternal vx = (VertxInternal) vertx; + Pool pool; + if (options.isShared()) { + pool = vx.createSharedResource(sharedClientKey, options.getName(), closeFuture, cf -> newPool(vx, connectHandler, databases, options, transportOptions, cf)); + } else { + pool = newPool(vx, connectHandler, databases, options, transportOptions, closeFuture); + } + return new CloseablePool(vx, closeFuture, pool); + } + + protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { + ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); + PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, null, null, + factory, databases, connectHandler, closeFuture); + pool.init(); + closeFuture.add(factory); + return pool; + } +} diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java new file mode 100644 index 000000000..7e5d3a074 --- /dev/null +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java @@ -0,0 +1,222 @@ +package io.vertx.tests.sqlclient.spi.backend; + +import io.vertx.core.Completable; +import io.vertx.core.Context; +import io.vertx.core.Future; +import io.vertx.core.Vertx; +import io.vertx.core.net.NetClientOptions; +import io.vertx.core.net.SocketAddress; +import io.vertx.core.spi.metrics.ClientMetrics; +import io.vertx.core.tracing.TracingPolicy; +import io.vertx.sqlclient.Pool; +import io.vertx.sqlclient.PoolOptions; +import io.vertx.sqlclient.Row; +import io.vertx.sqlclient.RowIterator; +import io.vertx.sqlclient.RowSet; +import io.vertx.sqlclient.SqlConnectOptions; +import io.vertx.sqlclient.desc.ColumnDescriptor; +import io.vertx.sqlclient.impl.RowBase; +import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.internal.QueryResultHandler; +import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.GenericDriver; +import org.junit.Test; + +import java.sql.JDBCType; +import java.util.function.BiConsumer; +import java.util.stream.Collector; + +import static org.junit.Assert.*; + +public class GenericDriverTest { + + private static class GenericRowDesc extends RowDesc { + public GenericRowDesc(ColumnDescriptor[] columnDescriptors) { + super(columnDescriptors); + } + } + + + private static class VarcharColumnDescriptor implements ColumnDescriptor { + + private final String name; + + public VarcharColumnDescriptor(String name) { + this.name = name; + } + + @Override + public String name() { + return name; + } + @Override + public boolean isArray() { + return false; + } + @Override + public String typeName() { + return "VARCHAR"; + } + @Override + public JDBCType jdbcType() { + return JDBCType.VARCHAR; + } + } + + private static class GenericRow extends RowBase { + public GenericRow() { + super(10); + } + @Override + public String getColumnName(int pos) { + switch (pos) { + case 0: + return "value"; + default: + return null; + } + } + + @Override + public int getColumnIndex(String column) { + switch (column) { + case "value": + return 0; + default: + return -1; + } + } + } + + @Test + public void testSimple() { + + GenericDriver driver = new GenericDriver() { + @Override + protected String discriminant() { + return "generic"; + } + @Override + public ConnectionFactory createConnectionFactory(Vertx vertx, NetClientOptions transportOptions) { + return new ConnectionFactory<>() { + @Override + public Future connect(Context context, SqlConnectOptions options) { + return Future.succeededFuture(new Connection() { + @Override + public TracingPolicy tracingPolicy() { + return null; + } + @Override + public SocketAddress server() { + return null; + } + @Override + public String database() { + return ""; + } + @Override + public String user() { + return ""; + } + @Override + public ClientMetrics metrics() { + return null; + } + @Override + public void init(Holder holder) { + } + @Override + public boolean isSsl() { + return false; + } + @Override + public boolean isValid() { + return true; + } + @Override + public int pipeliningLimit() { + return 1; + } + @Override + public DatabaseMetadata getDatabaseMetaData() { + throw new UnsupportedOperationException(); + } + @Override + public void close(Holder holder, Completable promise) { + promise.succeed(); + } + @Override + public int getProcessId() { + return 0; + } + @Override + public int getSecretKey() { + return 0; + } + @Override + public void schedule(CommandBase cmd, Completable handler) { + if (cmd instanceof SimpleQueryCommand) { + SimpleQueryCommand simpleQueryCmd = (SimpleQueryCommand) cmd; + scheduleQueryCommand(simpleQueryCmd, (Completable) handler); + } else { + handler.fail(new UnsupportedOperationException()); + } + } + private void scheduleQueryCommand(SimpleQueryCommand simpleQuery, Completable handler) { + QueryResultHandler qrh = simpleQuery.resultHandler(); + Collector collector = (Collector) simpleQuery.collector(); + A container = collector.supplier().get(); + BiConsumer accumulator = collector.accumulator(); + Row row = new GenericRow(); + row.addValue("Hello " + simpleQuery.sql()); + accumulator.accept(container, row); + T result = collector.finisher().apply(container); + qrh.handleResult(0, 1, new GenericRowDesc(new ColumnDescriptor[] { new VarcharColumnDescriptor("value") }) + , result, null); + handler.succeed(true); + } + }); + } + @Override + public void close(Completable completable) { + completable.succeed(); + } + }; + } + @Override + public SqlConnectOptions parseConnectionUri(String uri) { + throw new UnsupportedOperationException(); + } + @Override + public boolean acceptsOptions(SqlConnectOptions connectOptions) { + return true; + } + @Override + public SqlConnectOptions downcast(SqlConnectOptions connectOptions) { + return connectOptions; + } + }; + + Vertx vertx = Vertx.vertx(); + + try { + Pool pool = driver.createPool(vertx, () -> Future.succeededFuture(new SqlConnectOptions()), new PoolOptions(), new NetClientOptions(), null); + + Future> res = pool.withConnection(conn -> conn.query("Julien").execute()); + + RowSet rowset = res.await(); + RowIterator iterator = rowset.iterator(); + assertTrue(iterator.hasNext()); + Row row = iterator.next(); + assertEquals(1, row.size()); + assertEquals("Hello Julien", row.getString(0)); + assertFalse(iterator.hasNext()); + } finally { + vertx.close().await(); + } + } +} From 4ccee4d12344c9006135c65bb7d61a0e2f8fb817 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Mon, 30 Jun 2025 18:14:15 +0200 Subject: [PATCH 04/25] Avoid dealing with the command base handler when we can, since we want to remove it. --- .../impl/codec/TdsMessageCodec.java | 5 +-- .../mysqlclient/impl/codec/MySQLCodec.java | 5 +-- .../io/vertx/pgclient/impl/codec/PgCodec.java | 5 +-- .../sqlclient/impl/SocketConnectionBase.java | 2 +- .../vertx/sqlclient/impl/TransactionImpl.java | 41 ++++++++----------- .../internal/command/CommandBase.java | 1 - .../internal/command/CompositeCommand.java | 4 ++ 7 files changed, 25 insertions(+), 38 deletions(-) diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java index a25fd6dee..27f19c64d 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java @@ -65,10 +65,7 @@ private void fail(Throwable cause) { } private void fail(MSSQLCommandCodec codec, Throwable cause) { - Completable handler = codec.cmd.handler; - if (handler != null) { - handler.complete(null, cause); - } + codec.cmd.fail(cause); } @Override diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java index bc1bb7c3d..b2a9e993d 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java @@ -81,10 +81,7 @@ private void clearInflightCommands(Throwable cause) { private void fail(CommandCodec codec, Throwable cause) { if (failure == null) { failure = cause; - Completable handler = codec.cmd.handler; - if (handler != null) { - handler.complete(null, cause); - } + codec.cmd.fail(cause); } } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java index ec58b604e..b7014a86c 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java @@ -83,10 +83,7 @@ private void fail(Throwable cause) { } private void fail(PgCommandCodec codec, Throwable cause) { - Completable handler = codec.cmd.handler; - if (handler != null) { - handler.complete(null, cause); - } + codec.cmd.fail(cause); } @Override diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index 8853f8595..ecaa8b11e 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -213,7 +213,7 @@ protected void doSchedule(CommandBase cmd, Completable handler) { CompositeCommand composite = (CompositeCommand) cmd; List> commands = composite.commands(); pending.addAll(commands); - composite.handler.succeed(); + composite.succeed(); } else { pending.add(cmd); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java index a52bdda20..4b7a265c0 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java @@ -46,8 +46,7 @@ public TransactionImpl(ContextInternal context, Handler endHandler, Connec public Future begin() { PromiseInternal promise = context.promise(); TxCommand begin = new TxCommand<>(TxCommand.Kind.BEGIN, this); - begin.handler = wrap(begin, promise); - schedule(begin); + scheduleInternal(begin, wrap(begin, promise)); return promise.future(); } @@ -55,8 +54,7 @@ public void fail() { failed = true; } - private void execute(CommandBase cmd) { - Completable handler = cmd.handler; + private void execute(CommandBase cmd, Completable handler) { connection.schedule(cmd, handler); } @@ -71,35 +69,42 @@ private Completable wrap(CommandBase cmd, Completable handler) { } public void schedule(CommandBase cmd, Completable handler) { - cmd.handler = wrap(cmd, handler); - if (!schedule(cmd)) { + if (!scheduleInternal(cmd, wrap(cmd, handler))) { handler.fail("Transaction already completed"); } } - public boolean schedule(CommandBase b) { + public boolean scheduleInternal(CommandBase b, Completable handler) { synchronized (this) { if (ended) { return false; } pendingQueries++; } - execute(b); + execute(b, handler); return true; } private void checkEnd() { - TxCommand cmd; + TxCommand cmd; + Completable handler; synchronized (this) { if (pendingQueries > 0 || !ended || endCommand != null) { return; } TxCommand.Kind kind = failed ? TxCommand.Kind.ROLLBACK : TxCommand.Kind.COMMIT; - endCommand = txCommand(kind); - cmd = endCommand; + cmd = new TxCommand<>(kind, null); + handler = (res, err) -> { + if (err == null) { + completion.complete(kind); + } else { + completion.fail(err); + } + }; + endCommand = cmd; } endHandler.handle(null); - execute(cmd); + execute(cmd, handler); } private Future end(boolean rollback) { @@ -144,18 +149,6 @@ public void rollback(Handler> handler) { } } - private TxCommand txCommand(TxCommand.Kind kind) { - TxCommand cmd = new TxCommand<>(kind, null); - cmd.handler = (res, err) -> { - if (err == null) { - completion.complete(kind); - } else { - completion.fail(err); - } - }; - return cmd; - } - @Override public Future completion() { return completion.future().flatMap(k -> { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java index f3cd2eadc..c2688cff7 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java @@ -28,7 +28,6 @@ public abstract class CommandBase { - // Todo : hide this public Completable handler; public final void fail(Throwable err) { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java index ed28068a3..b9559d634 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java @@ -20,4 +20,8 @@ public void add(CommandBase cmd, Completable handler) { public List> commands() { return commands; } + + public final void succeed() { + handler.succeed(); + } } From 90e29f58bcebd7c5d3e2444eb5b78ef6ac6aef4e Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Mon, 30 Jun 2025 22:08:35 +0200 Subject: [PATCH 05/25] Refactor socket based clients to produce a command message from a command. Motivation: Commands are currently sent to every socket based encoder (e.g. PgEncoder) that then turns it into a codec object that is then encoded. There are two issues related to this: 1. the codec is actually the message to be sent and not the command 2. the command requires the handler to be executed and we want to make the command base handler private (so it can be removed later) Then: Most likely we will continue this refactor by renaming *Codec classes to *Message and make the Completable handler part of the message, so we can remove it from CommandBase --- .../db2client/impl/DB2SocketConnection.java | 7 ++ .../db2client/impl/codec/CommandCodec.java | 57 +++++++++++++- .../db2client/impl/codec/DB2Encoder.java | 74 +++---------------- .../impl/MSSQLSocketConnection.java | 7 ++ .../codec/CloseConnectionCommandCodec.java | 4 +- .../impl/codec/CloseCursorCommandCodec.java | 8 +- .../codec/CloseStatementCommandCodec.java | 4 +- .../codec/ExtendedBatchQueryCommandCodec.java | 4 +- .../ExtendedCursorQueryCommandCodec.java | 8 +- .../codec/ExtendedQueryCommandBaseCodec.java | 12 +-- .../impl/codec/ExtendedQueryCommandCodec.java | 4 +- .../impl/codec/InitCommandCodec.java | 4 +- .../impl/codec/MSSQLCommandCodec.java | 38 +++++++++- .../impl/codec/PreLoginCommandCodec.java | 4 +- .../impl/codec/PrepareStatementCodec.java | 4 +- .../impl/codec/QueryCommandBaseCodec.java | 4 +- .../impl/codec/SQLBatchCommandCodec.java | 4 +- .../impl/codec/TdsMessageEncoder.java | 35 ++------- .../impl/MySQLSocketConnection.java | 7 ++ .../mysqlclient/impl/codec/CommandCodec.java | 57 +++++++++++++- .../mysqlclient/impl/codec/MySQLCodec.java | 3 - .../mysqlclient/impl/codec/MySQLEncoder.java | 53 ++----------- .../pgclient/impl/PgSocketConnection.java | 7 ++ .../pgclient/impl/codec/PgCommandCodec.java | 29 +++++++- .../vertx/pgclient/impl/codec/PgEncoder.java | 34 ++------- .../vertx/sqlclient/impl/CommandMessage.java | 16 ++++ .../sqlclient/impl/SocketConnectionBase.java | 12 ++- 27 files changed, 285 insertions(+), 215 deletions(-) create mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index b79c3a0e0..1b60e2dc2 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -24,10 +24,12 @@ import io.vertx.core.internal.net.NetSocketInternal; import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.db2client.DB2ConnectOptions; +import io.vertx.db2client.impl.codec.CommandCodec; import io.vertx.db2client.impl.codec.DB2Codec; import io.vertx.db2client.impl.command.InitialHandshakeCommand; import io.vertx.db2client.impl.drda.ConnectionMetaData; import io.vertx.sqlclient.SqlConnectOptions; +import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; @@ -79,6 +81,11 @@ public void init() { super.init(); } + @Override + protected CommandMessage toMessage(CommandBase command) { + return CommandCodec.wrap(command); + } + @Override protected void doSchedule(CommandBase cmd, Completable handler) { if (cmd instanceof TxCommand) { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java index 343a0a08a..029ac78f0 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java @@ -17,10 +17,19 @@ import io.netty.buffer.ByteBuf; import io.vertx.core.Handler; +import io.vertx.db2client.impl.command.InitialHandshakeCommand; +import io.vertx.db2client.impl.command.PingCommand; +import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.internal.command.SimpleQueryCommand; -abstract class CommandCodec> { +public abstract class CommandCodec> extends CommandMessage { Handler> completionHandler; public Throwable failure; @@ -32,6 +41,52 @@ abstract class CommandCodec> { this.cmd = cmd; } + @SuppressWarnings({ "rawtypes", "unchecked" }) + public static CommandCodec wrap(CommandBase cmd) { + CommandCodec codec = null; + if (cmd instanceof InitialHandshakeCommand) { + codec = new InitialHandshakeCommandCodec((InitialHandshakeCommand) cmd); + } else if (cmd instanceof SimpleQueryCommand) { + codec = new SimpleQueryCommandCodec((SimpleQueryCommand) cmd); + } else if (cmd instanceof ExtendedQueryCommand) { + ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; + if (queryCmd.isBatch()) { + codec = new ExtendedBatchQueryCommandCodec<>(queryCmd); + } else { + codec = new ExtendedQueryCommandCodec(queryCmd); + } + } else if (cmd instanceof CloseConnectionCommand) { + codec = new CloseConnectionCommandCodec((CloseConnectionCommand) cmd); + } else if (cmd instanceof PrepareStatementCommand) { + codec = new PrepareStatementCodec((PrepareStatementCommand) cmd); + } else if (cmd instanceof CloseStatementCommand) { + codec = new CloseStatementCommandCodec((CloseStatementCommand) cmd); + } else if (cmd instanceof CloseCursorCommand) { + codec = new CloseCursorCommandCodec((CloseCursorCommand) cmd); + } else if (cmd instanceof PingCommand) { + codec = new PingCommandCodec((PingCommand) cmd); +// } else if (cmd instanceof InitDbCommand) { +// codec = new InitDbCommandCodec((InitDbCommand) cmd); + // } else if (cmd instanceof StatisticsCommand) { + // codec = new StatisticsCommandCodec((StatisticsCommand) cmd); + // } else if (cmd instanceof SetOptionCommand) { + // codec = new SetOptionCommandCodec((SetOptionCommand) cmd); + // } else if (cmd instanceof ResetConnectionCommand) { + // codec = new ResetConnectionCommandCodec((ResetConnectionCommand) cmd); + // } else if (cmd instanceof DebugCommand) { + // codec = new DebugCommandCodec((DebugCommand) cmd); + // } else if (cmd instanceof ChangeUserCommand) { + // codec = new ChangeUserCommandCodec((ChangeUserCommand) cmd); + } else { + UnsupportedOperationException uoe = new UnsupportedOperationException("Unsupported command type: " + cmd); + DB2Encoder.LOG.error(uoe); + throw uoe; + } + if (DB2Encoder.LOG.isDebugEnabled()) + DB2Encoder.LOG.debug(">>> ENCODE " + codec); + return codec; + } + abstract void decodePayload(ByteBuf payload, int payloadLength); void encode(DB2Encoder encoder) { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java index 6ebd0a00c..53ddd2fae 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java @@ -23,20 +23,12 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.impl.DB2SocketConnection; -import io.vertx.db2client.impl.command.InitialHandshakeCommand; -import io.vertx.db2client.impl.command.PingCommand; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; import io.vertx.sqlclient.internal.command.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; class DB2Encoder extends ChannelOutboundHandlerAdapter { - private static final Logger LOG = LoggerFactory.getLogger(DB2Encoder.class); + public static final Logger LOG = LoggerFactory.getLogger(DB2Encoder.class); private final ArrayDeque> inflight; ChannelHandlerContext chctx; @@ -55,8 +47,8 @@ public void handlerAdded(ChannelHandlerContext ctx) { @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { - if (msg instanceof CommandBase) { - CommandBase cmd = (CommandBase) msg; + if (msg instanceof CommandCodec) { + CommandCodec cmd = (CommandCodec) msg; write(cmd); } else { super.write(ctx, msg, promise); @@ -64,66 +56,18 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) } @SuppressWarnings({ "unchecked", "rawtypes" }) - void write(CommandBase cmd) { - CommandCodec codec = wrap(cmd); - codec.completionHandler = resp -> { + void write(CommandCodec msg) { + msg.completionHandler = resp -> { CommandCodec c = inflight.poll(); resp.cmd = (CommandBase) c.cmd; chctx.fireChannelRead(resp); }; - inflight.add(codec); + inflight.add(msg); try { - codec.encode(this); + msg.encode(this); } catch (Throwable e) { - LOG.error("FATAL: Unable to encode command: " + cmd, e); - codec.completionHandler.handle(CommandResponse.failure(e)); + LOG.error("FATAL: Unable to encode command: " + msg, e); + msg.completionHandler.handle(CommandResponse.failure(e)); } } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - private CommandCodec wrap(CommandBase cmd) { - CommandCodec codec = null; - if (cmd instanceof InitialHandshakeCommand) { - codec = new InitialHandshakeCommandCodec((InitialHandshakeCommand) cmd); - } else if (cmd instanceof SimpleQueryCommand) { - codec = new SimpleQueryCommandCodec((SimpleQueryCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; - if (queryCmd.isBatch()) { - codec = new ExtendedBatchQueryCommandCodec<>(queryCmd); - } else { - codec = new ExtendedQueryCommandCodec(queryCmd); - } - } else if (cmd instanceof CloseConnectionCommand) { - codec = new CloseConnectionCommandCodec((CloseConnectionCommand) cmd); - } else if (cmd instanceof PrepareStatementCommand) { - codec = new PrepareStatementCodec((PrepareStatementCommand) cmd); - } else if (cmd instanceof CloseStatementCommand) { - codec = new CloseStatementCommandCodec((CloseStatementCommand) cmd); - } else if (cmd instanceof CloseCursorCommand) { - codec = new CloseCursorCommandCodec((CloseCursorCommand) cmd); - } else if (cmd instanceof PingCommand) { - codec = new PingCommandCodec((PingCommand) cmd); -// } else if (cmd instanceof InitDbCommand) { -// codec = new InitDbCommandCodec((InitDbCommand) cmd); - // } else if (cmd instanceof StatisticsCommand) { - // codec = new StatisticsCommandCodec((StatisticsCommand) cmd); - // } else if (cmd instanceof SetOptionCommand) { - // codec = new SetOptionCommandCodec((SetOptionCommand) cmd); - // } else if (cmd instanceof ResetConnectionCommand) { - // codec = new ResetConnectionCommandCodec((ResetConnectionCommand) cmd); - // } else if (cmd instanceof DebugCommand) { - // codec = new DebugCommandCodec((DebugCommand) cmd); - // } else if (cmd instanceof ChangeUserCommand) { - // codec = new ChangeUserCommandCodec((ChangeUserCommand) cmd); - } else { - UnsupportedOperationException uoe = new UnsupportedOperationException("Unsupported command type: " + cmd); - LOG.error(uoe); - throw uoe; - } - if (LOG.isDebugEnabled()) - LOG.debug(">>> ENCODE " + codec); - return codec; - } - } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java index 579b6dd5d..e70206a33 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java @@ -29,12 +29,14 @@ import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.mssqlclient.MSSQLConnectOptions; import io.vertx.mssqlclient.MSSQLInfo; +import io.vertx.mssqlclient.impl.codec.MSSQLCommandCodec; import io.vertx.mssqlclient.impl.codec.TdsLoginSentCompletionHandler; import io.vertx.mssqlclient.impl.codec.TdsMessageCodec; import io.vertx.mssqlclient.impl.codec.TdsPacketDecoder; import io.vertx.mssqlclient.impl.codec.TdsSslHandshakeCodec; import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.sqlclient.SqlConnectOptions; +import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; @@ -147,6 +149,11 @@ public void init() { super.init(); } + @Override + protected CommandMessage toMessage(CommandBase command) { + return MSSQLCommandCodec.wrap(command); + } + @Override protected void doSchedule(CommandBase cmd, Completable handler) { if (cmd instanceof TxCommand) { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java index 7dc4a4553..3dd7e431e 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java @@ -14,8 +14,8 @@ import io.vertx.sqlclient.internal.command.CloseConnectionCommand; class CloseConnectionCommandCodec extends MSSQLCommandCodec { - CloseConnectionCommandCodec(TdsMessageCodec tdsMessageCodec, CloseConnectionCommand cmd) { - super(tdsMessageCodec, cmd); + CloseConnectionCommandCodec(CloseConnectionCommand cmd) { + super(cmd); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java index fa6071e18..79e3a9ac2 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java @@ -20,16 +20,16 @@ public class CloseCursorCommandCodec extends MSSQLCommandCodec { - private final CursorData cursorData; + private CursorData cursorData; private boolean cursorClosed; - public CloseCursorCommandCodec(TdsMessageCodec tdsMessageCodec, CloseCursorCommand cmd) { - super(tdsMessageCodec, cmd); - cursorData = tdsMessageCodec.removeCursorData(cmd.id()); + public CloseCursorCommandCodec(CloseCursorCommand cmd) { + super(cmd); } @Override void encode() { + cursorData = tdsMessageCodec.removeCursorData(cmd.id()); if (cursorData != null && cursorData.serverCursorId > 0) { sendCursorClose(); } else { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java index 020c07b28..f3b665835 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java @@ -20,8 +20,8 @@ class CloseStatementCommandCodec extends MSSQLCommandCodec { - CloseStatementCommandCodec(TdsMessageCodec tdsMessageCodec, CloseStatementCommand cmd) { - super(tdsMessageCodec, cmd); + CloseStatementCommandCodec(CloseStatementCommand cmd) { + super(cmd); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 9f26d6ac1..71f126277 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -25,8 +25,8 @@ class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec private int paramsIdx; private int messageDecoded; - ExtendedBatchQueryCommandCodec(TdsMessageCodec tdsMessageCodec, ExtendedQueryCommand cmd) { - super(tdsMessageCodec, cmd); + ExtendedBatchQueryCommandCodec(ExtendedQueryCommand cmd) { + super(cmd); paramsList = cmd.paramsList(); } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java index da1b68023..df318f500 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java @@ -21,15 +21,15 @@ class ExtendedCursorQueryCommandCodec extends ExtendedQueryCommandBaseCodec { - private final CursorData cursorData; + private CursorData cursorData; - ExtendedCursorQueryCommandCodec(TdsMessageCodec tdsMessageCodec, ExtendedQueryCommand cmd) { - super(tdsMessageCodec, cmd); - cursorData = tdsMessageCodec.getOrCreateCursorData(cmd.cursorId()); + ExtendedCursorQueryCommandCodec(ExtendedQueryCommand cmd) { + super(cmd); } @Override void encode() { + cursorData = tdsMessageCodec.getOrCreateCursorData(cmd.cursorId()); if (cursorData.preparedHandle == 0) { sendCursorPrepExec(); } else { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java index c4cb2b849..dc9436911 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -23,18 +23,18 @@ abstract class ExtendedQueryCommandBaseCodec extends QueryCommandBaseCodec cmd) { - super(tdsMessageCodec, cmd); + ExtendedQueryCommandBaseCodec(ExtendedQueryCommand cmd) { + super(cmd); ps = (MSSQLPreparedStatement) this.cmd.preparedStatement(); } - public static MSSQLCommandCodec create(TdsMessageCodec tdsMessageCodec, ExtendedQueryCommand queryCmd) { + public static MSSQLCommandCodec create(ExtendedQueryCommand queryCmd) { if (queryCmd.isBatch()) { - return new ExtendedBatchQueryCommandCodec<>(tdsMessageCodec, queryCmd); + return new ExtendedBatchQueryCommandCodec<>(queryCmd); } else if (queryCmd.cursorId() != null) { - return new ExtendedCursorQueryCommandCodec<>(tdsMessageCodec, queryCmd); + return new ExtendedCursorQueryCommandCodec<>(queryCmd); } else { - return new ExtendedQueryCommandCodec<>(tdsMessageCodec, queryCmd); + return new ExtendedQueryCommandCodec<>(queryCmd); } } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java index 002ad57dd..ef0abdd26 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -16,8 +16,8 @@ class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec { - ExtendedQueryCommandCodec(TdsMessageCodec tdsMessageCodec, ExtendedQueryCommand cmd) { - super(tdsMessageCodec, cmd); + ExtendedQueryCommandCodec(ExtendedQueryCommand cmd) { + super(cmd); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java index 454a185c5..964d2010d 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java @@ -31,8 +31,8 @@ class InitCommandCodec extends MSSQLCommandCodec { static final Object LOGIN_SENT = new Object(); - InitCommandCodec(TdsMessageCodec tdsMessageCodec, InitCommand cmd) { - super(tdsMessageCodec, cmd); + InitCommandCodec(InitCommand cmd) { + super(cmd); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index b195e4d11..b10ebc1ac 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -16,27 +16,57 @@ import io.netty.handler.ssl.SslHandler; import io.vertx.mssqlclient.MSSQLException; import io.vertx.mssqlclient.MSSQLInfo; +import io.vertx.mssqlclient.impl.command.PreLoginCommand; +import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.internal.command.InitCommand; +import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.internal.command.SimpleQueryCommand; import static io.vertx.mssqlclient.impl.codec.EnvChange.*; import static io.vertx.mssqlclient.impl.codec.TokenType.*; import static io.vertx.mssqlclient.impl.utils.ByteBufUtils.readUnsignedByteLengthString; import static io.vertx.mssqlclient.impl.utils.ByteBufUtils.readUnsignedShortLengthString; -abstract class MSSQLCommandCodec> { +public abstract class MSSQLCommandCodec> extends CommandMessage { - protected final TdsMessageCodec tdsMessageCodec; + public TdsMessageCodec tdsMessageCodec; final C cmd; public MSSQLException failure; public R result; - MSSQLCommandCodec(TdsMessageCodec tdsMessageCodec, C cmd) { - this.tdsMessageCodec = tdsMessageCodec; + MSSQLCommandCodec(C cmd) { this.cmd = cmd; } + public static MSSQLCommandCodec wrap(CommandBase cmd) { + if (cmd instanceof PreLoginCommand) { + return new PreLoginCommandCodec((PreLoginCommand) cmd); + } else if (cmd instanceof InitCommand) { + return new InitCommandCodec((InitCommand) cmd); + } else if (cmd instanceof SimpleQueryCommand) { + return new SQLBatchCommandCodec<>((SimpleQueryCommand) cmd); + } else if (cmd instanceof PrepareStatementCommand) { + return new PrepareStatementCodec((PrepareStatementCommand) cmd); + } else if (cmd instanceof ExtendedQueryCommand) { + return ExtendedQueryCommandBaseCodec.create((ExtendedQueryCommand) cmd); + } else if (cmd instanceof CloseStatementCommand) { + return new CloseStatementCommandCodec((CloseStatementCommand) cmd); + } else if (cmd == CloseConnectionCommand.INSTANCE) { + return new CloseConnectionCommandCodec((CloseConnectionCommand) cmd); + } else if (cmd instanceof CloseCursorCommand) { + return new CloseCursorCommandCodec((CloseCursorCommand) cmd); + } else { + throw new UnsupportedOperationException(); + } + } + abstract void encode(); void decode(ByteBuf payload) { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java index 485657ef4..bac8c830d 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java @@ -27,8 +27,8 @@ class PreLoginCommandCodec extends MSSQLCommandCodec { - PrepareStatementCodec(TdsMessageCodec tdsMessageCodec, PrepareStatementCommand cmd) { - super(tdsMessageCodec, cmd); + PrepareStatementCodec(PrepareStatementCommand cmd) { + super(cmd); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java index 6d83b241c..46d9b496c 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java @@ -23,8 +23,8 @@ abstract class QueryCommandBaseCodec> extends M protected int rowCount; protected RowResultDecoder rowResultDecoder; - QueryCommandBaseCodec(TdsMessageCodec tdsMessageCodec, C cmd) { - super(tdsMessageCodec, cmd); + QueryCommandBaseCodec(C cmd) { + super(cmd); } private static T emptyResult(Collector collector) { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java index 9a8039b2c..80fd1342b 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java @@ -19,8 +19,8 @@ import static io.vertx.mssqlclient.impl.codec.MessageType.SQL_BATCH; class SQLBatchCommandCodec extends QueryCommandBaseCodec> { - SQLBatchCommandCodec(TdsMessageCodec tdsMessageCodec, SimpleQueryCommand cmd) { - super(tdsMessageCodec, cmd); + SQLBatchCommandCodec(SimpleQueryCommand cmd) { + super(cmd); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java index 7f7385cc1..a92464c4a 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java @@ -15,7 +15,6 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; -import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.sqlclient.internal.command.*; import static io.vertx.mssqlclient.MSSQLConnectOptions.MIN_PACKET_SIZE; @@ -42,40 +41,18 @@ public void handlerAdded(ChannelHandlerContext ctx) throws Exception { @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { - if (msg instanceof CommandBase) { - CommandBase cmd = (CommandBase) msg; + if (msg instanceof MSSQLCommandCodec) { + MSSQLCommandCodec cmd = (MSSQLCommandCodec) msg; + cmd.tdsMessageCodec = tdsMessageCodec; write(cmd); } else { super.write(ctx, msg, promise); } } - void write(CommandBase cmd) { - MSSQLCommandCodec codec = wrap(cmd); - if (tdsMessageCodec.add(codec)) { - codec.encode(); - } - } - - private MSSQLCommandCodec wrap(CommandBase cmd) { - if (cmd instanceof PreLoginCommand) { - return new PreLoginCommandCodec(tdsMessageCodec, (PreLoginCommand) cmd); - } else if (cmd instanceof InitCommand) { - return new InitCommandCodec(tdsMessageCodec, (InitCommand) cmd); - } else if (cmd instanceof SimpleQueryCommand) { - return new SQLBatchCommandCodec<>(tdsMessageCodec, (SimpleQueryCommand) cmd); - } else if (cmd instanceof PrepareStatementCommand) { - return new PrepareStatementCodec(tdsMessageCodec, (PrepareStatementCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - return ExtendedQueryCommandBaseCodec.create(tdsMessageCodec, (ExtendedQueryCommand) cmd); - } else if (cmd instanceof CloseStatementCommand) { - return new CloseStatementCommandCodec(tdsMessageCodec, (CloseStatementCommand) cmd); - } else if (cmd == CloseConnectionCommand.INSTANCE) { - return new CloseConnectionCommandCodec(tdsMessageCodec, (CloseConnectionCommand) cmd); - } else if (cmd instanceof CloseCursorCommand) { - return new CloseCursorCommandCodec(tdsMessageCodec, (CloseCursorCommand) cmd); - } else { - throw new UnsupportedOperationException(); + void write(MSSQLCommandCodec cmd) { + if (tdsMessageCodec.add(cmd)) { + cmd.encode(); } } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java index 560c1614c..eb3ac6fd8 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java @@ -28,10 +28,12 @@ import io.vertx.mysqlclient.MySQLConnectOptions; import io.vertx.mysqlclient.SslMode; import io.vertx.mysqlclient.impl.codec.ClearCachedStatementsEvent; +import io.vertx.mysqlclient.impl.codec.CommandCodec; import io.vertx.mysqlclient.impl.codec.MySQLCodec; import io.vertx.mysqlclient.impl.codec.MySQLPacketDecoder; import io.vertx.mysqlclient.impl.command.InitialHandshakeCommand; import io.vertx.sqlclient.SqlConnectOptions; +import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; @@ -96,6 +98,11 @@ public void init() { super.init(); } + @Override + protected CommandMessage toMessage(CommandBase command) { + return CommandCodec.wrap(command); + } + @Override protected void doSchedule(CommandBase cmd, Completable handler) { if (cmd instanceof TxCommand) { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java index 00eb14862..561fbf793 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java @@ -18,19 +18,34 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.MySQLException; +import io.vertx.mysqlclient.impl.command.ChangeUserCommand; +import io.vertx.mysqlclient.impl.command.DebugCommand; +import io.vertx.mysqlclient.impl.command.InitDbCommand; +import io.vertx.mysqlclient.impl.command.InitialHandshakeCommand; +import io.vertx.mysqlclient.impl.command.PingCommand; +import io.vertx.mysqlclient.impl.command.ResetConnectionCommand; +import io.vertx.mysqlclient.impl.command.SetOptionCommand; +import io.vertx.mysqlclient.impl.command.StatisticsCommand; import io.vertx.mysqlclient.impl.datatype.DataType; import io.vertx.mysqlclient.impl.protocol.CapabilitiesFlag; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.util.BufferUtils; +import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.internal.command.SimpleQueryCommand; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import static io.vertx.mysqlclient.impl.protocol.Packets.*; -abstract class CommandCodec> { +public abstract class CommandCodec> extends CommandMessage { public Throwable failure; public R result; @@ -42,6 +57,46 @@ abstract class CommandCodec> { this.cmd = cmd; } + public static CommandCodec wrap(CommandBase cmd) { + if (cmd instanceof InitialHandshakeCommand) { + return new InitialHandshakeCommandCodec((InitialHandshakeCommand) cmd); + } else if (cmd instanceof SimpleQueryCommand) { + return new SimpleQueryCommandCodec<>((SimpleQueryCommand) cmd); + } else if (cmd instanceof ExtendedQueryCommand) { + ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; + if (queryCmd.isBatch()) { + return new ExtendedBatchQueryCommandCodec<>(queryCmd); + } else { + return new ExtendedQueryCommandCodec<>(queryCmd); + } + } else if (cmd instanceof CloseConnectionCommand) { + return new CloseConnectionCommandCodec((CloseConnectionCommand) cmd); + } else if (cmd instanceof PrepareStatementCommand) { + return new PrepareStatementCodec((PrepareStatementCommand) cmd); + } else if (cmd instanceof CloseStatementCommand) { + return new CloseStatementCommandCodec((CloseStatementCommand) cmd); + } else if (cmd instanceof CloseCursorCommand) { + return new ResetStatementCommandCodec((CloseCursorCommand) cmd); + } else if (cmd instanceof PingCommand) { + return new PingCommandCodec((PingCommand) cmd); + } else if (cmd instanceof InitDbCommand) { + return new InitDbCommandCodec((InitDbCommand) cmd); + } else if (cmd instanceof StatisticsCommand) { + return new StatisticsCommandCodec((StatisticsCommand) cmd); + } else if (cmd instanceof SetOptionCommand) { + return new SetOptionCommandCodec((SetOptionCommand) cmd); + } else if (cmd instanceof ResetConnectionCommand) { + return new ResetConnectionCommandCodec((ResetConnectionCommand) cmd); + } else if (cmd instanceof DebugCommand) { + return new DebugCommandCodec((DebugCommand) cmd); + } else if (cmd instanceof ChangeUserCommand) { + return new ChangeUserCommandCodec((ChangeUserCommand) cmd); + } else { + System.out.println("Unsupported command " + cmd); + throw new UnsupportedOperationException("Todo"); + } + } + abstract void decodePayload(ByteBuf payload, int payloadLength); void encode(MySQLEncoder encoder) { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java index b2a9e993d..3b09a67f5 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java @@ -18,11 +18,8 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.CombinedChannelDuplexHandler; -import io.vertx.core.Completable; import io.vertx.mysqlclient.impl.MySQLSocketConnection; import io.vertx.sqlclient.ClosedConnectionException; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; import java.util.ArrayDeque; import java.util.Iterator; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java index 70d984bf7..b142cb9e7 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java @@ -15,7 +15,6 @@ import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; import io.vertx.mysqlclient.impl.MySQLSocketConnection; -import io.vertx.mysqlclient.impl.command.*; import io.vertx.sqlclient.internal.command.*; import java.nio.charset.Charset; @@ -41,8 +40,8 @@ public void handlerAdded(ChannelHandlerContext ctx) { @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { - if (msg instanceof CommandBase) { - CommandBase cmd = (CommandBase) msg; + if (msg instanceof CommandCodec) { + CommandCodec cmd = (CommandCodec) msg; write(cmd); codec.checkFireAndForgetCommands(); } else { @@ -50,10 +49,9 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) } } - void write(CommandBase cmd) { - CommandCodec cmdCodec = wrap(cmd); - if (codec.add(cmdCodec)) { - cmdCodec.encode(this); + void write(CommandCodec cmd) { + if (codec.add(cmd)) { + cmd.encode(this); } } @@ -62,45 +60,4 @@ final void fireCommandResponse(CommandResponse commandResponse) { commandResponse.cmd = (CommandBase) c.cmd; chctx.fireChannelRead(commandResponse); } - - private CommandCodec wrap(CommandBase cmd) { - if (cmd instanceof InitialHandshakeCommand) { - return new InitialHandshakeCommandCodec((InitialHandshakeCommand) cmd); - } else if (cmd instanceof SimpleQueryCommand) { - return new SimpleQueryCommandCodec<>((SimpleQueryCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; - if (queryCmd.isBatch()) { - return new ExtendedBatchQueryCommandCodec<>(queryCmd); - } else { - return new ExtendedQueryCommandCodec<>(queryCmd); - } - } else if (cmd instanceof CloseConnectionCommand) { - return new CloseConnectionCommandCodec((CloseConnectionCommand) cmd); - } else if (cmd instanceof PrepareStatementCommand) { - return new PrepareStatementCodec((PrepareStatementCommand) cmd); - } else if (cmd instanceof CloseStatementCommand) { - return new CloseStatementCommandCodec((CloseStatementCommand) cmd); - } else if (cmd instanceof CloseCursorCommand) { - return new ResetStatementCommandCodec((CloseCursorCommand) cmd); - } else if (cmd instanceof PingCommand) { - return new PingCommandCodec((PingCommand) cmd); - } else if (cmd instanceof InitDbCommand) { - return new InitDbCommandCodec((InitDbCommand) cmd); - } else if (cmd instanceof StatisticsCommand) { - return new StatisticsCommandCodec((StatisticsCommand) cmd); - } else if (cmd instanceof SetOptionCommand) { - return new SetOptionCommandCodec((SetOptionCommand) cmd); - } else if (cmd instanceof ResetConnectionCommand) { - return new ResetConnectionCommandCodec((ResetConnectionCommand) cmd); - } else if (cmd instanceof DebugCommand) { - return new DebugCommandCodec((DebugCommand) cmd); - } else if (cmd instanceof ChangeUserCommand) { - return new ChangeUserCommandCodec((ChangeUserCommand) cmd); - } else { - System.out.println("Unsupported command " + cmd); - throw new UnsupportedOperationException("Todo"); - } - } - } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index 880bd6553..79cabcc8c 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -29,7 +29,9 @@ import io.vertx.pgclient.PgException; import io.vertx.pgclient.impl.codec.NoticeResponse; import io.vertx.pgclient.impl.codec.PgCodec; +import io.vertx.pgclient.impl.codec.PgCommandCodec; import io.vertx.pgclient.impl.codec.TxFailedEvent; +import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.internal.QueryResultHandler; @@ -172,6 +174,11 @@ protected void doSchedule(CommandBase cmd, Completable handler) { } } + @Override + protected CommandMessage toMessage(CommandBase command) { + return PgCommandCodec.wrap(command); + } + @Override public boolean isIndeterminatePreparedStatementError(Throwable error) { if (error instanceof PgException) { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java index e39b38256..a38300fde 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java @@ -20,12 +20,20 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.pgclient.PgException; +import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.internal.command.InitCommand; +import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.internal.command.SimpleQueryCommand; import java.util.Arrays; -abstract class PgCommandCodec> { +public abstract class PgCommandCodec> extends CommandMessage { private static final Logger logger = LoggerFactory.getLogger(PgCommandCodec.class); @@ -38,6 +46,25 @@ abstract class PgCommandCodec> { this.cmd = cmd; } + public static PgCommandCodec wrap(CommandBase cmd) { + if (cmd instanceof InitCommand) { + return new InitCommandCodec((InitCommand) cmd); + } else if (cmd instanceof SimpleQueryCommand) { + return new SimpleQueryCodec<>((SimpleQueryCommand) cmd); + } else if (cmd instanceof ExtendedQueryCommand) { + return new ExtendedQueryCommandCodec<>((ExtendedQueryCommand) cmd); + } else if (cmd instanceof PrepareStatementCommand) { + return new PrepareStatementCommandCodec((PrepareStatementCommand) cmd); + } else if (cmd instanceof CloseConnectionCommand) { + return CloseConnectionCommandCodec.INSTANCE; + } else if (cmd instanceof CloseCursorCommand) { + return new ClosePortalCommandCodec((CloseCursorCommand) cmd); + } else if (cmd instanceof CloseStatementCommand) { + return new CloseStatementCommandCodec((CloseStatementCommand) cmd); + } + throw new AssertionError(); + } + abstract void encode(PgEncoder encoder); void handleBackendKeyData(int processId, int secretKey) { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java index e4e972349..914ae4e57 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java @@ -25,6 +25,7 @@ import io.netty.channel.socket.SocketChannel; import io.vertx.sqlclient.Tuple; import io.vertx.pgclient.impl.util.Util; +import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.impl.HexSequence; import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.RowDesc; @@ -97,7 +98,7 @@ private void enqueueMessage(Object msg, Object p1, Object p2, Object p3, int est public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { if (!closeSent) { CloseConnectionCommand cmd = CloseConnectionCommand.INSTANCE; - PgCommandCodec codec = wrap(cmd); + PgCommandCodec codec = PgCommandCodec.wrap(cmd); codec.encode(this); } } @@ -108,32 +109,12 @@ public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { capacityEstimate = 0; } - void write(CommandBase cmd) { - PgCommandCodec cmdCodec = wrap(cmd); - if (codec.add(cmdCodec)) { - cmdCodec.encode(this); + void write(PgCommandCodec cmd) { + if (codec.add(cmd)) { + cmd.encode(this); } } - private PgCommandCodec wrap(CommandBase cmd) { - if (cmd instanceof InitCommand) { - return new InitCommandCodec((InitCommand) cmd); - } else if (cmd instanceof SimpleQueryCommand) { - return new SimpleQueryCodec<>((SimpleQueryCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - return new ExtendedQueryCommandCodec<>((ExtendedQueryCommand) cmd); - } else if (cmd instanceof PrepareStatementCommand) { - return new PrepareStatementCommandCodec((PrepareStatementCommand) cmd); - } else if (cmd instanceof CloseConnectionCommand) { - return CloseConnectionCommandCodec.INSTANCE; - } else if (cmd instanceof CloseCursorCommand) { - return new ClosePortalCommandCodec((CloseCursorCommand) cmd); - } else if (cmd instanceof CloseStatementCommand) { - return new CloseStatementCommandCodec((CloseStatementCommand) cmd); - } - throw new AssertionError(); - } - @Override public void handlerAdded(ChannelHandlerContext ctx) throws Exception { this.ctx = ctx; @@ -141,9 +122,8 @@ public void handlerAdded(ChannelHandlerContext ctx) throws Exception { @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { - if (msg instanceof CommandBase) { - CommandBase cmd = (CommandBase) msg; - write(cmd); + if (msg instanceof PgCommandCodec) { + write((PgCommandCodec) msg); } else { super.write(ctx, msg, promise); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java new file mode 100644 index 000000000..ac3f9e458 --- /dev/null +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2011-2025 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 + * which is available at https://www.apache.org/licenses/LICENSE-2.0. + * + * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 + */ +package io.vertx.sqlclient.impl; + +import io.vertx.sqlclient.internal.command.CommandBase; + +public class CommandMessage> { +} diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index ecaa8b11e..cd9e6de89 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -249,7 +249,7 @@ private void checkPending() { if (closeCmd != null) { inflight++; written++; - ctx.write(closeCmd, ctx.voidPromise()); + ctx.write(toMessage(closeCmd), ctx.voidPromise()); } } PrepareStatementCommand prepareCmd = prepareCommand(queryCmd, cache, false); @@ -266,7 +266,7 @@ private void checkPending() { } } written++; - ctx.write(cmd, ctx.voidPromise()); + ctx.write(toMessage(cmd), ctx.voidPromise()); } if (written > 0) { ctx.flush(); @@ -276,6 +276,10 @@ private void checkPending() { } } + protected CommandMessage toMessage(CommandBase command) { + throw new UnsupportedOperationException(); + } + private PrepareStatementCommand prepareCommand(ExtendedQueryCommand queryCmd, boolean cache, boolean sendParameterTypes) { PrepareStatementCommand prepareCmd = new PrepareStatementCommand(queryCmd.sql(), null, cache, sendParameterTypes ? queryCmd.parameterTypes() : null); prepareCmd.handler = (ps, cause) -> { @@ -291,14 +295,14 @@ private PrepareStatementCommand prepareCommand(ExtendedQueryCommand queryCmd, queryCmd.fail(VertxException.noStackTrace(msg)); } else { ChannelHandlerContext ctx = socket.channelHandlerContext(); - ctx.write(queryCmd, ctx.voidPromise()); + ctx.write(toMessage(queryCmd), ctx.voidPromise()); ctx.flush(); } } else { if (isIndeterminatePreparedStatementError(cause) && !sendParameterTypes) { ChannelHandlerContext ctx = socket.channelHandlerContext(); // We cannot cache this prepared statement because it might be executed with another type - ctx.write(prepareCommand(queryCmd, false, true), ctx.voidPromise()); + ctx.write(toMessage(prepareCommand(queryCmd, false, true)), ctx.voidPromise()); ctx.flush(); } else { inflight--; From 0aa40935386c95b24740e8562f362ed42e0bed44 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Mon, 30 Jun 2025 23:52:27 +0200 Subject: [PATCH 06/25] Replace usage of CommandBase#handler by CommandMessage#handler Motivation: In the quest of removing CommandBase#handler, we are replacing its usage by CommandMessage#handler. Hopefully we will remove it also for the Oracle implementation. --- .../db2client/impl/DB2SocketConnection.java | 3 +- .../db2client/impl/codec/CommandCodec.java | 3 +- .../vertx/db2client/impl/codec/DB2Codec.java | 2 +- .../db2client/impl/codec/DB2Encoder.java | 3 +- .../codec/InitialHandshakeCommandCodec.java | 4 +- .../impl/codec/MSSQLCommandCodec.java | 3 +- .../impl/codec/TdsMessageCodec.java | 2 +- .../impl/codec/TdsMessageDecoder.java | 3 +- .../mysqlclient/impl/codec/CommandCodec.java | 3 +- .../mysqlclient/impl/codec/MySQLCodec.java | 2 +- .../mysqlclient/impl/codec/MySQLEncoder.java | 3 +- .../impl/OracleJdbcConnection.java | 12 ++- .../impl/commands/OracleCommand.java | 5 +- .../io/vertx/pgclient/impl/codec/PgCodec.java | 2 +- .../pgclient/impl/codec/PgCommandCodec.java | 5 +- .../vertx/pgclient/impl/codec/PgDecoder.java | 3 +- .../vertx/sqlclient/impl/CommandMessage.java | 24 ++++++ .../sqlclient/impl/SocketConnectionBase.java | 73 +++++++++++++------ .../internal/command/CommandResponse.java | 8 +- .../internal/command/CompositeCommand.java | 10 +-- 20 files changed, 118 insertions(+), 55 deletions(-) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index 1b60e2dc2..9ab50ac6b 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -93,8 +93,7 @@ protected void doSchedule(CommandBase cmd, Completable handler) { if (txCmd.kind == TxCommand.Kind.BEGIN) { // DB2 always implicitly starts a transaction with each query, and does // not support the 'BEGIN' keyword. Instead we can no-op BEGIN commands - cmd.handler = handler; - cmd.complete(CommandResponse.success(txCmd.result).toAsyncResult()); + handler.succeed(txCmd.result); } else { SimpleQueryCommand cmd2 = new SimpleQueryCommand<>(txCmd.kind.sql, false, false, QueryCommandBase.NULL_COLLECTOR, QueryResultHandler.NOOP_HANDLER); diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java index 029ac78f0..de5c0c963 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java @@ -34,11 +34,10 @@ public abstract class CommandCodec> extends CommandM Handler> completionHandler; public Throwable failure; public R result; - final C cmd; DB2Encoder encoder; CommandCodec(C cmd) { - this.cmd = cmd; + super(cmd); } @SuppressWarnings({ "rawtypes", "unchecked" }) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Codec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Codec.java index 29d592226..6891d2114 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Codec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Codec.java @@ -43,7 +43,7 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception { private void clearInflightCommands(Throwable failure) { for (CommandCodec commandCodec : inflight) { - commandCodec.cmd.fail(failure); + commandCodec.fail(failure); } } } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java index 53ddd2fae..fcf9fd20f 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java @@ -20,6 +20,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; +import io.vertx.core.Completable; import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.impl.DB2SocketConnection; @@ -59,7 +60,7 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) void write(CommandCodec msg) { msg.completionHandler = resp -> { CommandCodec c = inflight.poll(); - resp.cmd = (CommandBase) c.cmd; + resp.handler = (Completable) c.handler; chctx.fireChannelRead(resp); }; inflight.add(msg); diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java index 8b1fee817..f72e2b31b 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java @@ -59,7 +59,7 @@ void encode(DB2Encoder encoder) { // -4499 = A fatal error occurred that resulted in a disconnect from the data // source. // 08001 = "The connection was unable to be established" - cmd.fail(new DB2Exception("The connection was closed by the database server.", SqlCode.CONNECTION_REFUSED, + fail(new DB2Exception("The connection was closed by the database server.", SqlCode.CONNECTION_REFUSED, SQLState.AUTH_DATABASE_CONNECTION_REFUSED)); } }); @@ -130,7 +130,7 @@ void decodePayload(ByteBuf payload, int payloadLength) { break; default: - cmd.fail(new DB2Exception("The connection was unable to be established. Invalid connection state.", SqlCode.CONNECTION_REFUSED, + fail(new DB2Exception("The connection was unable to be established. Invalid connection state.", SqlCode.CONNECTION_REFUSED, SQLState.AUTH_DATABASE_CONNECTION_REFUSED)); break; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index b10ebc1ac..a57773d2c 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -37,12 +37,11 @@ public abstract class MSSQLCommandCodec> extends Com public TdsMessageCodec tdsMessageCodec; - final C cmd; public MSSQLException failure; public R result; MSSQLCommandCodec(C cmd) { - this.cmd = cmd; + super(cmd); } public static MSSQLCommandCodec wrap(CommandBase cmd) { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java index 27f19c64d..10c217cd4 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageCodec.java @@ -65,7 +65,7 @@ private void fail(Throwable cause) { } private void fail(MSSQLCommandCodec codec, Throwable cause) { - codec.cmd.fail(cause); + codec.fail(cause); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java index 8283a3047..2619704fd 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java @@ -14,6 +14,7 @@ import io.netty.buffer.ByteBufAllocator; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.vertx.core.Completable; import io.vertx.sqlclient.internal.command.CommandBase; import io.vertx.sqlclient.internal.command.CommandResponse; @@ -55,7 +56,7 @@ public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { void fireCommandResponse(CommandResponse commandResponse) { MSSQLCommandCodec c = tdsMessageCodec.poll(); - commandResponse.cmd = (CommandBase) c.cmd; + commandResponse.handler = (Completable) c.handler; chctx.fireChannelRead(commandResponse); } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java index 561fbf793..5adcca264 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java @@ -49,12 +49,11 @@ public abstract class CommandCodec> extends CommandM public Throwable failure; public R result; - final C cmd; MySQLEncoder encoder; int sequenceId; CommandCodec(C cmd) { - this.cmd = cmd; + super(cmd); } public static CommandCodec wrap(CommandBase cmd) { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java index 3b09a67f5..f50e15d82 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLCodec.java @@ -78,7 +78,7 @@ private void clearInflightCommands(Throwable cause) { private void fail(CommandCodec codec, Throwable cause) { if (failure == null) { failure = cause; - codec.cmd.fail(cause); + codec.fail(cause); } } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java index b142cb9e7..b15b93583 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java @@ -14,6 +14,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; +import io.vertx.core.Completable; import io.vertx.mysqlclient.impl.MySQLSocketConnection; import io.vertx.sqlclient.internal.command.*; @@ -57,7 +58,7 @@ void write(CommandCodec cmd) { final void fireCommandResponse(CommandResponse commandResponse) { CommandCodec c = codec.poll(); - commandResponse.cmd = (CommandBase) c.cmd; + commandResponse.handler = (Completable) c.handler; chctx.fireChannelRead(commandResponse); } } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java index 8ed768d37..450333f38 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java @@ -35,6 +35,8 @@ public class OracleJdbcConnection implements Connection { + private static final Completable NULL_HANDLER = (res, err) -> {}; + private static final Logger log = LoggerFactory.getLogger(OracleJdbcConnection.class); private final ClientMetrics metrics; @@ -49,6 +51,7 @@ public class OracleJdbcConnection implements Connection { // Command pipeline state @SuppressWarnings("rawtypes") private final Deque pending = new ArrayDeque<>(); + private final Deque> completables = new ArrayDeque<>(); private Promise closePromise; private boolean inflight, executing; @@ -128,6 +131,7 @@ public void close(Holder holder, Completable promise) { closePromise = context.promise(); future = closePromise.future().andThen(ar -> holder.handleClosed()); pending.add(CloseConnectionCommand.INSTANCE); + completables.add(NULL_HANDLER); checkPending(); } else { future = closePromise.future(); @@ -172,12 +176,12 @@ public void schedule(CommandBase cmd, Completable handler) { } private void doSchedule(CommandBase cmd, Completable handler) { - cmd.handler = handler; if (closePromise == null) { pending.add(cmd); + completables.add(handler); checkPending(); } else { - cmd.fail(VertxException.noStackTrace("Connection is no longer active")); + handler.fail(VertxException.noStackTrace("Connection is no longer active")); } } @@ -190,12 +194,14 @@ private void checkPending() { executing = true; CommandBase cmd; while (!inflight && (cmd = pending.poll()) != null) { + Completable handler = completables.poll(); inflight = true; if (metrics != null && cmd instanceof CloseConnectionCommand) { metrics.close(); } OracleCommand action = wrap(cmd); - Future future = action.processCommand(cmd); + action.handler = handler; + Future future = action.processCommand(cmd, handler); CommandBase capture = cmd; future.onComplete(ar -> actionComplete(capture, action, ar)); } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java index 9524b2e12..c31fac61a 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java @@ -10,6 +10,7 @@ */ package io.vertx.oracleclient.impl.commands; +import io.vertx.core.Completable; import io.vertx.core.Future; import io.vertx.core.Promise; import io.vertx.core.internal.ContextInternal; @@ -25,6 +26,7 @@ public abstract class OracleCommand { + public Completable handler; protected final OracleConnection oracleConnection; protected final ContextInternal connectionContext; private CommandResponse response; @@ -34,7 +36,7 @@ protected OracleCommand(OracleConnection oracleConnection, ContextInternal conne this.connectionContext = connectionContext; } - public final Future processCommand(CommandBase cmd) { + public final Future processCommand(CommandBase cmd, Completable handler) { return execute().andThen(ar -> { if (ar.succeeded()) { response = CommandResponse.success(ar.result()); @@ -42,6 +44,7 @@ public final Future processCommand(CommandBase cmd) { response = CommandResponse.failure(ar.cause()); } response.cmd = cmd; + response.handler = handler; }).mapEmpty(); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java index b7014a86c..3c109ed60 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java @@ -83,7 +83,7 @@ private void fail(Throwable cause) { } private void fail(PgCommandCodec codec, Throwable cause) { - codec.cmd.fail(cause); + codec.fail(cause); } @Override diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java index a38300fde..a68099af2 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java @@ -40,10 +40,9 @@ public abstract class PgCommandCodec> extends Comman PgDecoder decoder; PgException failure; R result; - final C cmd; PgCommandCodec(C cmd) { - this.cmd = cmd; + super(cmd); } public static PgCommandCodec wrap(CommandBase cmd) { @@ -62,7 +61,7 @@ public abstract class PgCommandCodec> extends Comman } else if (cmd instanceof CloseStatementCommand) { return new CloseStatementCommandCodec((CloseStatementCommand) cmd); } - throw new AssertionError(); + throw new AssertionError("Invalid command " + cmd); } abstract void encode(PgEncoder encoder); diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java index 122c80418..7b15e35a2 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java @@ -23,6 +23,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.util.ByteProcessor; +import io.vertx.core.Completable; import io.vertx.pgclient.impl.util.Util; import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.internal.command.CommandBase; @@ -48,7 +49,7 @@ class PgDecoder extends ChannelInboundHandlerAdapter { void fireCommandResponse(CommandResponse commandResponse) { PgCommandCodec c = codec.poll(); - commandResponse.cmd = (CommandBase) c.cmd; + commandResponse.handler = (Completable) c.handler; chctx.fireChannelRead(commandResponse); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java index ac3f9e458..af8b0f16c 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java @@ -10,7 +10,31 @@ */ package io.vertx.sqlclient.impl; +import io.vertx.core.AsyncResult; +import io.vertx.core.Completable; +import io.vertx.core.Future; import io.vertx.sqlclient.internal.command.CommandBase; public class CommandMessage> { + + public Completable handler; + public final C cmd; + + public CommandMessage(C cmd) { + this.cmd = cmd; + } + + public final void fail(Throwable err) { + complete(Future.failedFuture(err)); + } + + public final void fail(String failureMsg) { + complete(Future.failedFuture(failureMsg)); + } + + public final void complete(AsyncResult resp) { + if (handler != null) { + handler.complete(resp.result(), resp.cause()); + } + } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index cd9e6de89..2c68bb562 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -46,6 +46,8 @@ */ public abstract class SocketConnectionBase implements Connection { + private static final Completable NULL_HANDLER = (res, err) -> {}; + public static final Logger logger = LoggerFactory.getLogger(SocketConnectionBase.class); public enum Status { @@ -65,6 +67,7 @@ public enum Status { // Command pipeline state private final ArrayDeque> pending = new ArrayDeque<>(); + private final ArrayDeque> handlers = new ArrayDeque<>(); private boolean executing; private int inflight; private boolean paused; @@ -185,6 +188,7 @@ public void close(Holder holder, Completable promise) { status = Status.CLOSING; // Append directly since schedule checks the status and won't enqueue the command pending.add(CloseConnectionCommand.INSTANCE); + handlers.add(NULL_HANDLER); checkPending(); } ch.closeFuture() @@ -207,19 +211,20 @@ protected void doSchedule(CommandBase cmd, Completable handler) { if (context != this.context) { throw new IllegalStateException(); } - cmd.handler = handler; +// cmd.handler = handler; if (status == Status.CONNECTED) { if (cmd instanceof CompositeCommand) { CompositeCommand composite = (CompositeCommand) cmd; - List> commands = composite.commands(); - pending.addAll(commands); - composite.succeed(); + pending.addAll(composite.commands()); + handlers.addAll(composite.handlers()); + handler.succeed(); } else { pending.add(cmd); + handlers.add(handler); } checkPending(); } else { - cmd.fail(VertxException.noStackTrace("Connection is not active now, current status: " + status)); + handler.fail(VertxException.noStackTrace("Connection is not active now, current status: " + status)); } } @@ -234,6 +239,8 @@ private void checkPending() { CommandBase cmd; while (!paused && inflight < pipeliningLimit && (cmd = pending.poll()) != null) { inflight++; + Completable handler = handlers.poll(); + CommandMessage toSend; if (cmd instanceof ExtendedQueryCommand) { ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; if (queryCmd.ps == null) { @@ -245,28 +252,32 @@ private void checkPending() { // Execute prepare boolean cache = psCache != null && preparedStatementCacheSqlFilter.test(queryCmd.sql()); if (cache) { - CloseStatementCommand closeCmd = evictStatementIfNecessary(); + CommandMessage closeCmd = evictStatementIfNecessary(); if (closeCmd != null) { inflight++; written++; - ctx.write(toMessage(closeCmd), ctx.voidPromise()); + ctx.write(closeCmd, ctx.voidPromise()); } } - PrepareStatementCommand prepareCmd = prepareCommand(queryCmd, cache, false); + CommandMessage prepareCmd = prepareCommand(queryCmd, handler, cache, false); paused = true; inflight++; - cmd = prepareCmd; + toSend = prepareCmd; } else { String msg = queryCmd.prepare(); if (msg != null) { inflight--; - queryCmd.fail(VertxException.noStackTrace(msg)); + handler.fail(VertxException.noStackTrace(msg)); continue; + } else { + toSend = createMessage(cmd, handler); } } + } else { + toSend = createMessage(cmd, handler); } written++; - ctx.write(toMessage(cmd), ctx.voidPromise()); + ctx.write(toSend, ctx.voidPromise()); } if (written > 0) { ctx.flush(); @@ -276,13 +287,29 @@ private void checkPending() { } } + private CommandMessage createMessage(CommandBase command, Completable handler) { + CommandMessage msg = toMessage(command); + msg.handler = (Completable) handler; +/* + if (command.handler != null) { + msg.handler = (Completable) command.handler; + command.handler = (a, r) -> { + System.out.println("Handle me ------------------------"); + new Exception().printStackTrace(System.out); + }; + } +*/ + return msg; + } + protected CommandMessage toMessage(CommandBase command) { throw new UnsupportedOperationException(); } - private PrepareStatementCommand prepareCommand(ExtendedQueryCommand queryCmd, boolean cache, boolean sendParameterTypes) { + private CommandMessage prepareCommand(ExtendedQueryCommand queryCmd, Completable handler, boolean cache, boolean sendParameterTypes) { PrepareStatementCommand prepareCmd = new PrepareStatementCommand(queryCmd.sql(), null, cache, sendParameterTypes ? queryCmd.parameterTypes() : null); - prepareCmd.handler = (ps, cause) -> { + CommandMessage prepareMsg = (CommandMessage) toMessage(prepareCmd); + prepareMsg.handler = (ps, cause) -> { paused = false; if (cause == null) { if (cache) { @@ -292,25 +319,25 @@ private PrepareStatementCommand prepareCommand(ExtendedQueryCommand queryCmd, String msg = queryCmd.prepare(); if (msg != null) { inflight--; - queryCmd.fail(VertxException.noStackTrace(msg)); + handler.fail(VertxException.noStackTrace(msg)); } else { ChannelHandlerContext ctx = socket.channelHandlerContext(); - ctx.write(toMessage(queryCmd), ctx.voidPromise()); + ctx.write(createMessage(queryCmd, handler), ctx.voidPromise()); ctx.flush(); } } else { if (isIndeterminatePreparedStatementError(cause) && !sendParameterTypes) { ChannelHandlerContext ctx = socket.channelHandlerContext(); // We cannot cache this prepared statement because it might be executed with another type - ctx.write(toMessage(prepareCommand(queryCmd, false, true)), ctx.voidPromise()); + ctx.write(prepareCommand(queryCmd, handler, false, true), ctx.voidPromise()); ctx.flush(); } else { inflight--; - queryCmd.fail(cause); + handler.fail(cause); } } }; - return prepareCmd; + return prepareMsg; } protected void handleMessage(Object msg) { @@ -334,16 +361,17 @@ protected void handleEvent(Object event) { } } - private CloseStatementCommand evictStatementIfNecessary() { + private CommandMessage evictStatementIfNecessary() { if (psCache != null && psCache.isFull()) { PreparedStatement evicted = psCache.evict(); CloseStatementCommand closeCmd = new CloseStatementCommand(evicted); - closeCmd.handler = (res, err) -> { + CommandMessage msg = toMessage(closeCmd); + msg.handler = (res, err) -> { if (err != null) { logger.error("Error when closing cached prepared statement", err); } }; - return closeCmd; + return msg; } else { return null; } @@ -395,7 +423,8 @@ protected void handleClose(Throwable t) { CommandBase cmd; while ((cmd = pending.poll()) != null) { CommandBase c = cmd; - context.runOnContext(v -> c.fail(cause)); + Completable handler = handlers.poll(); + context.runOnContext(v -> handler.fail(cause)); } if (holder != null) { holder.handleClosed(); diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java index bf94c8ab3..3a31e258c 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java @@ -11,6 +11,7 @@ package io.vertx.sqlclient.internal.command; +import io.vertx.core.Completable; import io.vertx.core.Future; import io.vertx.core.AsyncResult; import io.vertx.core.VertxException; @@ -31,6 +32,7 @@ public static CommandResponse success(R result) { // The connection that executed the command public CommandBase cmd; + public Completable handler; private final AsyncResult res; public CommandResponse(AsyncResult res) { @@ -41,8 +43,10 @@ public AsyncResult toAsyncResult() { return res; } - public void fire() { - if (cmd.handler != null) { + public final void fire() { + if (handler != null) { + handler.complete(res.result(), res.cause()); + } else if (cmd.handler != null) { cmd.handler.complete(res.result(), res.cause()); } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java index b9559d634..33f9fec65 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java @@ -1,9 +1,6 @@ package io.vertx.sqlclient.internal.command; import io.vertx.core.Completable; -import io.vertx.core.Future; -import io.vertx.core.internal.ContextInternal; -import io.vertx.core.internal.PromiseInternal; import java.util.ArrayList; import java.util.List; @@ -11,17 +8,18 @@ public class CompositeCommand extends CommandBase { private final List> commands = new ArrayList<>(); + private final List> handlers = new ArrayList<>(); public void add(CommandBase cmd, Completable handler) { - cmd.handler = handler; commands.add(cmd); + handlers.add(handler); } public List> commands() { return commands; } - public final void succeed() { - handler.succeed(); + public List> handlers() { + return handlers; } } From 3095bfbb616f2581a7e91fdb17d87b64ec5a7c51 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 08:21:40 +0200 Subject: [PATCH 07/25] Remove CommandBase#handler field, which ends a step in this refactoring. --- .../internal/command/CommandBase.java | 21 ------------------- .../internal/command/CommandResponse.java | 2 -- 2 files changed, 23 deletions(-) diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java index c2688cff7..181a485b7 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java @@ -17,30 +17,9 @@ package io.vertx.sqlclient.internal.command; -import io.vertx.core.AsyncResult; -import io.vertx.core.Completable; -import io.vertx.core.Future; -import io.vertx.core.Handler; - /** * @author Julien Viet */ public abstract class CommandBase { - - public Completable handler; - - public final void fail(Throwable err) { - complete(Future.failedFuture(err)); - } - - public final void fail(String failureMsg) { - complete(Future.failedFuture(failureMsg)); - } - - public final void complete(AsyncResult resp) { - if (handler != null) { - handler.complete(resp.result(), resp.cause()); - } - } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java index 3a31e258c..a787e97f3 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java @@ -46,8 +46,6 @@ public AsyncResult toAsyncResult() { public final void fire() { if (handler != null) { handler.complete(res.result(), res.cause()); - } else if (cmd.handler != null) { - cmd.handler.complete(res.result(), res.cause()); } } } From 9f6ff0d3193f035b8df5b8e3ec80011077ee5902 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 08:53:21 +0200 Subject: [PATCH 08/25] Cleanup in Oracle client, stop using CommandResponse which is actually not needed, since that is a command response message for Netty based pipelines. --- .../impl/OracleJdbcConnection.java | 7 +++--- .../impl/commands/OracleCommand.java | 22 +++++++------------ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java index 450333f38..7432c56c9 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java @@ -200,10 +200,9 @@ private void checkPending() { metrics.close(); } OracleCommand action = wrap(cmd); - action.handler = handler; - Future future = action.processCommand(cmd, handler); + Future future = action.processCommand(handler); CommandBase capture = cmd; - future.onComplete(ar -> actionComplete(capture, action, ar)); + future.onComplete(ar -> actionComplete(action, ar)); } } finally { executing = false; @@ -254,7 +253,7 @@ private OracleCommand forExtendedQuery(ExtendedQueryCommand cmd) { return action; } - private void actionComplete(CommandBase cmd, OracleCommand action, AsyncResult ar) { + private void actionComplete(OracleCommand action, AsyncResult ar) { inflight = false; Future future = Future.succeededFuture(); if (ar.failed()) { diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java index c31fac61a..72ec84fca 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCommand.java @@ -10,13 +10,12 @@ */ package io.vertx.oracleclient.impl.commands; +import io.vertx.core.AsyncResult; import io.vertx.core.Completable; import io.vertx.core.Future; import io.vertx.core.Promise; import io.vertx.core.internal.ContextInternal; import io.vertx.oracleclient.impl.Helper.SQLBlockingCodeHandler; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; import oracle.jdbc.OracleConnection; import java.util.concurrent.Flow; @@ -26,26 +25,21 @@ public abstract class OracleCommand { - public Completable handler; protected final OracleConnection oracleConnection; protected final ContextInternal connectionContext; - private CommandResponse response; + private Completable handler; + private AsyncResult result; protected OracleCommand(OracleConnection oracleConnection, ContextInternal connectionContext) { this.oracleConnection = oracleConnection; this.connectionContext = connectionContext; } - public final Future processCommand(CommandBase cmd, Completable handler) { + public final Future processCommand(Completable handler) { + this.handler = handler; return execute().andThen(ar -> { - if (ar.succeeded()) { - response = CommandResponse.success(ar.result()); - } else { - response = CommandResponse.failure(ar.cause()); - } - response.cmd = cmd; - response.handler = handler; - }).mapEmpty(); + this.result = ar; + }); } protected abstract Future execute(); @@ -90,6 +84,6 @@ public void onComplete() { } public final void fireResponse() { - response.fire(); + handler.complete(result.result(), result.cause()); } } From 32c48b793332bc76bd8a5bc2f642e95987a3daea Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 08:57:37 +0200 Subject: [PATCH 09/25] Move CommandResponse to impl package. Motivation: CommandResponse is actually not part of the SPI since its usage is confined to the socket/pipeline implementations, it is actually an inbound message decoded by the pipeline and processed by the socket connection base. --- .../io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java | 2 +- .../vertx/db2client/impl/codec/CloseStatementCommandCodec.java | 2 +- .../main/java/io/vertx/db2client/impl/codec/CommandCodec.java | 2 +- .../main/java/io/vertx/db2client/impl/codec/DB2Decoder.java | 2 +- .../main/java/io/vertx/db2client/impl/codec/DB2Encoder.java | 3 +-- .../db2client/impl/codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../db2client/impl/codec/ExtendedQueryCommandBaseCodec.java | 2 +- .../vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../db2client/impl/codec/InitialHandshakeCommandCodec.java | 2 +- .../java/io/vertx/db2client/impl/codec/PingCommandCodec.java | 2 +- .../io/vertx/db2client/impl/codec/PrepareStatementCodec.java | 2 +- .../io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java | 2 +- .../vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java | 2 +- .../mssqlclient/impl/codec/CloseStatementCommandCodec.java | 2 +- .../mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java | 2 +- .../io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java | 2 +- .../io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java | 2 +- .../io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java | 3 +-- .../mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java | 2 +- .../vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java | 2 +- .../mysqlclient/impl/codec/CloseStatementCommandCodec.java | 2 +- .../java/io/vertx/mysqlclient/impl/codec/CommandCodec.java | 2 +- .../mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../mysqlclient/impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../mysqlclient/impl/codec/InitialHandshakeCommandCodec.java | 2 +- .../java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java | 2 +- .../java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java | 2 +- .../io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java | 2 +- .../io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java | 2 +- .../vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java | 2 +- .../vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../java/io/vertx/pgclient/impl/codec/InitCommandCodec.java | 2 +- .../src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java | 3 --- .../main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java | 2 +- .../src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java | 3 +-- .../sqlclient/{internal/command => impl}/CommandResponse.java | 3 ++- vertx-sql-client/src/main/java/module-info.java | 3 --- 38 files changed, 37 insertions(+), 45 deletions(-) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => impl}/CommandResponse.java (93%) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java index fedb4a205..26a41db10 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java @@ -22,7 +22,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class CloseCursorCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java index f7934c96e..c2487142a 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java @@ -17,7 +17,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.command.CloseStatementCommand; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java index de5c0c963..7fa941db7 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java @@ -24,7 +24,7 @@ import io.vertx.sqlclient.internal.command.CloseCursorCommand; import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import io.vertx.sqlclient.internal.command.PrepareStatementCommand; import io.vertx.sqlclient.internal.command.SimpleQueryCommand; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java index 1266e65c8..f2ca19a1f 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java @@ -25,7 +25,7 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.DB2Exception; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class DB2Decoder extends ByteToMessageDecoder { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java index fcf9fd20f..43c592211 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java @@ -24,8 +24,7 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.impl.DB2SocketConnection; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class DB2Encoder extends ChannelOutboundHandlerAdapter { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java index f6cd00391..b9ce51607 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -28,7 +28,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java index 24ee7f989..49c5f50c9 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -27,7 +27,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.data.Numeric; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; abstract class ExtendedQueryCommandBaseCodec> diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java index ea6f3be90..4ef6e8a00 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.vertx.db2client.impl.codec.DB2PreparedStatement.QueryInstance; import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java index f72e2b31b..694c40151 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java @@ -26,7 +26,7 @@ import io.vertx.db2client.impl.drda.SQLState; import io.vertx.db2client.impl.drda.SqlCode; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; /** * InitialHandshakeCommandCodec encodes the packets to get a connection from the database. diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java index 3866a7553..3e5cb155b 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java @@ -22,7 +22,7 @@ import io.vertx.db2client.impl.drda.DRDAConnectResponse; import io.vertx.db2client.impl.drda.DRDAConstants; import io.vertx.db2client.impl.drda.ConnectionMetaData; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class PingCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java index 18fe425e9..40b08d629 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java @@ -23,7 +23,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.PrepareStatementCommand; class PrepareStatementCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java index 3a1e8cc08..0cc084a70 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java @@ -23,7 +23,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.SimpleQueryCommand; class SimpleQueryCommandCodec extends QueryCommandBaseCodec> { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java index 79e3a9ac2..753e42777 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java index f3b665835..01c3f8b31 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.command.CloseStatementCommand; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 71f126277..55d10876f 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import java.util.List; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index a57773d2c..03e082702 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -22,7 +22,7 @@ import io.vertx.sqlclient.internal.command.CloseCursorCommand; import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import io.vertx.sqlclient.internal.command.InitCommand; import io.vertx.sqlclient.internal.command.PrepareStatementCommand; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java index bac8c830d..65cffef58 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java @@ -15,7 +15,7 @@ import io.vertx.mssqlclient.impl.MSSQLDatabaseMetadata; import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.mssqlclient.impl.command.PreLoginResponse; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import static io.vertx.mssqlclient.impl.codec.EncryptionLevel.ENCRYPT_OFF; import static io.vertx.mssqlclient.impl.codec.EncryptionLevel.ENCRYPT_ON; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java index 25ec6b7b7..bcf4f6784 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.PrepareStatementCommand; class PrepareStatementCodec extends MSSQLCommandCodec { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java index 2619704fd..ca6dbeb8a 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java @@ -15,8 +15,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.vertx.core.Completable; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; public class TdsMessageDecoder extends ChannelInboundHandlerAdapter { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java index 84c96299b..fae383abf 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java @@ -16,7 +16,7 @@ import io.vertx.mysqlclient.impl.command.AuthenticationCommandBase; import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.mysqlclient.impl.util.RsaPublicKeyEncryptor; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Arrays; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java index ea00cb4d2..9433fbecd 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java @@ -18,7 +18,7 @@ import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.mysqlclient.impl.util.CachingSha2Authenticator; import io.vertx.mysqlclient.impl.util.Native41Authenticator; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java index 964162212..aa6b46c7f 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.internal.command.CloseStatementCommand; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 5; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java index 5adcca264..6d8dcc811 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java @@ -35,7 +35,7 @@ import io.vertx.sqlclient.internal.command.CloseCursorCommand; import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import io.vertx.sqlclient.internal.command.PrepareStatementCommand; import io.vertx.sqlclient.internal.command.SimpleQueryCommand; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 8f72f10a6..8ccedfad9 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -17,7 +17,7 @@ import io.vertx.mysqlclient.MySQLException; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import java.util.BitSet; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java index 2b5bd675b..8221fef86 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java index e623b2c45..8f5ecfecd 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java @@ -28,7 +28,7 @@ import io.vertx.mysqlclient.impl.util.CachingSha2Authenticator; import io.vertx.mysqlclient.impl.util.Native41Authenticator; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java index b15b93583..8d1490c18 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java @@ -16,7 +16,7 @@ import io.netty.channel.ChannelPromise; import io.vertx.core.Completable; import io.vertx.mysqlclient.impl.MySQLSocketConnection; -import io.vertx.sqlclient.internal.command.*; +import io.vertx.sqlclient.impl.CommandResponse; import java.nio.charset.Charset; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java index 2a26448dd..0b5a9c63b 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.command.PingCommand; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class PingCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 1; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java index 24bb73ea3..feb1e0aa1 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java @@ -23,7 +23,7 @@ import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.PrepareStatementCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java index 37c6aa329..5e2f9c9db 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java @@ -24,7 +24,7 @@ import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.QueryCommandBase; import java.util.stream.Collector; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java index 2ee782f2f..42d482010 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.command.StatisticsCommand; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; class StatisticsCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 1; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java index ce0cf91bd..102d54a0f 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.vertx.sqlclient.internal.TupleInternal; import io.vertx.sqlclient.impl.codec.InvalidCachedStatementEvent; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; class ExtendedQueryCommandCodec> extends QueryCommandBaseCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java index a92505d1c..2a8f90975 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java @@ -26,7 +26,7 @@ import io.vertx.pgclient.impl.auth.scram.ScramAuthentication; import io.vertx.pgclient.impl.auth.scram.ScramSession; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.InitCommand; class InitCommandCodec extends PgCommandCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java index 3c109ed60..e33f27fa8 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCodec.java @@ -18,10 +18,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.CombinedChannelDuplexHandler; -import io.vertx.core.Completable; import io.vertx.sqlclient.ClosedConnectionException; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; import java.util.ArrayDeque; import java.util.Iterator; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java index a68099af2..2b27dc576 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java @@ -25,7 +25,7 @@ import io.vertx.sqlclient.internal.command.CloseCursorCommand; import io.vertx.sqlclient.internal.command.CloseStatementCommand; import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import io.vertx.sqlclient.internal.command.InitCommand; import io.vertx.sqlclient.internal.command.PrepareStatementCommand; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java index 7b15e35a2..14e913176 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java @@ -26,8 +26,7 @@ import io.vertx.core.Completable; import io.vertx.pgclient.impl.util.Util; import io.vertx.sqlclient.impl.Notification; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandResponse; +import io.vertx.sqlclient.impl.CommandResponse; /** * diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java similarity index 93% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java index a787e97f3..90bf07ca9 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandResponse.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java @@ -9,12 +9,13 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.impl; import io.vertx.core.Completable; import io.vertx.core.Future; import io.vertx.core.AsyncResult; import io.vertx.core.VertxException; +import io.vertx.sqlclient.internal.command.CommandBase; public class CommandResponse { diff --git a/vertx-sql-client/src/main/java/module-info.java b/vertx-sql-client/src/main/java/module-info.java index 34e6e23dc..429eaabcc 100644 --- a/vertx-sql-client/src/main/java/module-info.java +++ b/vertx-sql-client/src/main/java/module-info.java @@ -1,6 +1,3 @@ -import io.vertx.core.spi.VertxServiceProvider; -import io.vertx.sqlclient.impl.TransactionPropagationLocal; - module io.vertx.sql.client { requires io.netty.common; From cd0ff4e6bc74c2a532256bedb35c5cd33b1d87e1 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 09:23:37 +0200 Subject: [PATCH 10/25] Make RowBase and RowDesc usable without creating subclasses. Motivation: RowBase is abstract and does not implement a couple of methods from its contract, such implementation actually relies on a description field present in each of its subclasses. Instead we can have RowBase carry the description field and implement those methods, as consequence RowBase can be reused as such and does not need to be abstract. RowDesc is simply abstract but is usable out of the box, just make it not abstract so it can be instantiated right away. --- .../io/vertx/db2client/impl/DB2RowImpl.java | 18 ++------- .../vertx/mssqlclient/impl/MSSQLRowImpl.java | 18 +-------- .../vertx/mysqlclient/impl/MySQLRowImpl.java | 21 +---------- .../io/vertx/oracleclient/impl/OracleRow.java | 17 ++------- .../java/io/vertx/pgclient/impl/RowImpl.java | 22 +---------- .../java/io/vertx/sqlclient/impl/RowBase.java | 33 ++++++++++++++--- .../io/vertx/sqlclient/internal/RowDesc.java | 4 +- .../spi/backend/GenericDriverTest.java | 37 ++----------------- 8 files changed, 44 insertions(+), 126 deletions(-) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2RowImpl.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2RowImpl.java index a575ed1a5..441cf39a1 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2RowImpl.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2RowImpl.java @@ -34,11 +34,8 @@ public class DB2RowImpl extends RowBase { - private final RowDesc rowDesc; - public DB2RowImpl(RowDesc rowDesc) { - super(rowDesc.columnNames().size()); - this.rowDesc = rowDesc; + super(rowDesc); } @Override @@ -82,23 +79,14 @@ public T get(Class type, int position) { } } - @Override - public String getColumnName(int pos) { - List columnNames = rowDesc.columnNames(); - return pos < 0 || columnNames.size() - 1 < pos ? null : columnNames.get(pos); - } - @Override public int getColumnIndex(String name) { - if (name == null) { - throw new NullPointerException(); - } - int idx = rowDesc.columnIndex(name); + int idx = super.getColumnIndex(name); if (idx >= 0) { return idx; } // Unless the column is renamed in the SQL query, the column name will be uppercase - return rowDesc.columnIndex(name.toUpperCase()); + return super.getColumnIndex(name.toUpperCase()); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRowImpl.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRowImpl.java index cf46c0d9a..50e28632e 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRowImpl.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRowImpl.java @@ -25,25 +25,9 @@ import java.util.UUID; public class MSSQLRowImpl extends RowBase { - private final RowDesc rowDesc; public MSSQLRowImpl(RowDesc rowDesc) { - super(rowDesc.columnNames().size()); - this.rowDesc = rowDesc; - } - - @Override - public String getColumnName(int pos) { - List columnNames = rowDesc.columnNames(); - return pos < 0 || columnNames.size() - 1 < pos ? null : columnNames.get(pos); - } - - @Override - public int getColumnIndex(String column) { - if (column == null) { - throw new IllegalArgumentException("Column name can not be null"); - } - return rowDesc.columnNames().indexOf(column); + super(rowDesc); } @Override diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowImpl.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowImpl.java index 693472b1c..824afa523 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowImpl.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowImpl.java @@ -28,11 +28,8 @@ public class MySQLRowImpl extends RowBase { - private final MySQLRowDesc rowDesc; - public MySQLRowImpl(MySQLRowDesc rowDesc) { - super(rowDesc.columnNames().size()); - this.rowDesc = rowDesc; + super(rowDesc); } @Override @@ -92,20 +89,6 @@ public T get(Class type, int position) { } } - @Override - public String getColumnName(int pos) { - List columnNames = rowDesc.columnNames(); - return pos < 0 || columnNames.size() - 1 < pos ? null : columnNames.get(pos); - } - - @Override - public int getColumnIndex(String name) { - if (name == null) { - throw new NullPointerException(); - } - return rowDesc.columnNames().indexOf(name); - } - @Override public Temporal getTemporal(int pos) { throw new UnsupportedOperationException(buildIllegalAccessMessage(getValue(pos), getColumnName(pos), Temporal.class)); @@ -241,7 +224,7 @@ private GeometryCollection getGeometryCollection(int pos) { @Override public LocalTime getLocalTime(int pos) { - ColumnDefinition columnDefinition = rowDesc.get(pos); + ColumnDefinition columnDefinition = ((MySQLRowDesc)desc).get(pos); Object val = getValue(pos); if (columnDefinition.type() == DataType.TIME && val instanceof Duration) { // map MySQL TIME data type to java.time.LocalTime diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java index e8868543c..b2920c0b7 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java @@ -18,27 +18,16 @@ import io.vertx.sqlclient.internal.RowDesc; import java.time.*; -import java.util.List; import java.util.UUID; public class OracleRow extends RowBase { - private final RowDesc desc; - public OracleRow(RowDesc desc) { - super(desc.columnNames().size()); - this.desc = desc; + super(desc); } public OracleRow(OracleRow row) { - super(row); - this.desc = row.desc; - } - - @Override - public String getColumnName(int pos) { - List columnNames = desc.columnNames(); - return pos < 0 || columnNames.size() - 1 < pos ? null : columnNames.get(pos); + super(row.desc, row); } @Override @@ -46,7 +35,7 @@ public int getColumnIndex(String name) { if (name == null) { throw new NullPointerException(); } - return desc.columnNames().indexOf(name.toUpperCase()); + return super.getColumnIndex(name.toUpperCase()); } @Override diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/RowImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/RowImpl.java index 9a5c7f01d..4e599b476 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/RowImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/RowImpl.java @@ -33,30 +33,12 @@ public class RowImpl extends RowBase { - private final RowDesc desc; - public RowImpl(RowDesc desc) { - super(desc.columnNames().size()); - this.desc = desc; + super(desc); } public RowImpl(RowImpl row) { - super(row); - this.desc = row.desc; - } - - @Override - public String getColumnName(int pos) { - List columnNames = desc.columnNames(); - return pos < 0 || columnNames.size() - 1 < pos ? null : columnNames.get(pos); - } - - @Override - public int getColumnIndex(String name) { - if (name == null) { - throw new NullPointerException(); - } - return desc.columnNames().indexOf(name); + super(row.desc, row); } @Override diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java index cb21b48f2..6b1fd4f8a 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java @@ -2,27 +2,50 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.ArrayTuple; +import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.internal.RowInternal; import java.util.Collection; +import java.util.List; /** * Base class for rows. */ -public abstract class RowBase extends ArrayTuple implements RowInternal { +public class RowBase extends ArrayTuple implements RowInternal { private boolean released; + protected final RowDesc desc; - public RowBase(int len) { - super(len); + public RowBase(RowDesc desc) { + super(desc.columnNames().size()); + + this.desc = desc; } - public RowBase(Collection c) { + public RowBase(RowDesc desc, Collection c) { super(c); + + this.desc = desc; } - public RowBase(Tuple tuple) { + public RowBase(RowDesc desc, Tuple tuple) { super(tuple); + + this.desc = desc; + } + + @Override + public String getColumnName(int pos) { + List columnNames = desc.columnNames(); + return pos < 0 || columnNames.size() - 1 < pos ? null : columnNames.get(pos); + } + + @Override + public int getColumnIndex(String name) { + if (name == null) { + throw new NullPointerException(); + } + return desc.columnIndex(name); } @Override diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDesc.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDesc.java index a71f3feee..4e53b713b 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDesc.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDesc.java @@ -26,12 +26,12 @@ /** * @author Emad Alblueshi */ -public abstract class RowDesc { +public class RowDesc { private final ColumnNames columnNames; private final ColumnDescriptors columnDescriptors; - protected RowDesc(ColumnDescriptor[] columnDescriptors) { + public RowDesc(ColumnDescriptor[] columnDescriptors) { this.columnNames = new ColumnNames(columnDescriptors); this.columnDescriptors = new ColumnDescriptors(columnDescriptors); } diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java index 7e5d3a074..176fd4c38 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java @@ -34,13 +34,6 @@ public class GenericDriverTest { - private static class GenericRowDesc extends RowDesc { - public GenericRowDesc(ColumnDescriptor[] columnDescriptors) { - super(columnDescriptors); - } - } - - private static class VarcharColumnDescriptor implements ColumnDescriptor { private final String name; @@ -67,31 +60,6 @@ public JDBCType jdbcType() { } } - private static class GenericRow extends RowBase { - public GenericRow() { - super(10); - } - @Override - public String getColumnName(int pos) { - switch (pos) { - case 0: - return "value"; - default: - return null; - } - } - - @Override - public int getColumnIndex(String column) { - switch (column) { - case "value": - return 0; - default: - return -1; - } - } - } - @Test public void testSimple() { @@ -171,11 +139,12 @@ private void scheduleQueryCommand(SimpleQueryCommand simpleQuery, Comp Collector collector = (Collector) simpleQuery.collector(); A container = collector.supplier().get(); BiConsumer accumulator = collector.accumulator(); - Row row = new GenericRow(); + RowDesc rowDesc = new RowDesc(new ColumnDescriptor[]{new VarcharColumnDescriptor("value")}); + Row row = new RowBase(rowDesc); row.addValue("Hello " + simpleQuery.sql()); accumulator.accept(container, row); T result = collector.finisher().apply(container); - qrh.handleResult(0, 1, new GenericRowDesc(new ColumnDescriptor[] { new VarcharColumnDescriptor("value") }) + qrh.handleResult(0, 1, rowDesc , result, null); handler.succeed(true); } From 21a5be96c33294c5a37721c4f9daa630465a4a8d Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 10:21:05 +0200 Subject: [PATCH 11/25] Move the pool implementation to the implementation package, it should not be exposed. Expose lifecycle hooks in the generic driver instead. --- .../io/vertx/db2client/spi/DB2Driver.java | 2 +- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 2 +- .../vertx/oracleclient/spi/OracleDriver.java | 26 +++++-------------- .../java/io/vertx/pgclient/spi/PgDriver.java | 2 +- .../main/java/io/vertx/sqlclient/Pool.java | 2 +- .../pool/CloseablePool.java | 2 +- .../{internal => impl}/pool/PoolImpl.java | 3 +-- .../io/vertx/sqlclient/spi/GenericDriver.java | 21 ++++++++++++--- .../src/main/java/module-info.java | 3 +-- 9 files changed, 32 insertions(+), 31 deletions(-) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal => impl}/pool/CloseablePool.java (98%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal => impl}/pool/PoolImpl.java (98%) 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 415ce3b58..554aaa974 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 @@ -30,7 +30,7 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.PoolImpl; +import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; 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 5dcad05d1..2a840c6a7 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 @@ -30,7 +30,7 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.PoolImpl; +import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java index 0ba498786..9f657a04f 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java @@ -11,34 +11,34 @@ package io.vertx.oracleclient.spi; import io.vertx.core.Future; -import io.vertx.core.Handler; import io.vertx.core.Vertx; -import io.vertx.core.internal.CloseFuture; import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.VertxInternal; import io.vertx.core.json.JsonObject; import io.vertx.core.net.NetClientOptions; import io.vertx.oracleclient.OracleConnectOptions; import io.vertx.oracleclient.impl.*; -import io.vertx.sqlclient.Pool; -import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Function; -import java.util.function.Supplier; public class OracleDriver extends GenericDriver { private static final String DISCRIMINANT = "oracleclient"; + private static final Function> AFTER_ACQUIRE = conn -> ((OracleJdbcConnection) conn).afterAcquire(); + private static final Function> BEFORE_RECYCLE = conn -> ((OracleJdbcConnection) conn).beforeRecycle(); + public static final OracleDriver INSTANCE = new OracleDriver(); + public OracleDriver() { + super(AFTER_ACQUIRE, BEFORE_RECYCLE); + } + @Override protected String discriminant() { return DISCRIMINANT; @@ -49,18 +49,6 @@ public OracleConnectOptions downcast(SqlConnectOptions connectOptions) { return connectOptions instanceof OracleConnectOptions ? (OracleConnectOptions) connectOptions : new OracleConnectOptions(connectOptions); } - @Override - protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { - Function> afterAcquire = conn -> ((OracleJdbcConnection) conn).afterAcquire(); - Function> beforeRecycle = conn -> ((OracleJdbcConnection) conn).beforeRecycle(); - ConnectionFactory factory = createConnectionFactory(vertx, null); - PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, afterAcquire, beforeRecycle, - factory, databases, connectHandler, closeFuture); - pool.init(); - closeFuture.add(factory); - return pool; - } - @Override public OracleConnectOptions parseConnectionUri(String uri) { JsonObject conf = OracleConnectionUriParser.parse(uri, false); 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 7223cd1dc..ef5366338 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 @@ -18,7 +18,7 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.pool.PoolImpl; +import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; 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 8d8be0973..9adb88b8e 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 @@ -34,7 +34,7 @@ import java.util.function.Function; -import static io.vertx.sqlclient.internal.pool.PoolImpl.startPropagatableConnection; +import static io.vertx.sqlclient.impl.pool.PoolImpl.startPropagatableConnection; /** * A connection pool which reuses a number of SQL connections. diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/CloseablePool.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/CloseablePool.java similarity index 98% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/CloseablePool.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/CloseablePool.java index a3b049b5a..a250f6e53 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/CloseablePool.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/CloseablePool.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.vertx.sqlclient.internal.pool; +package io.vertx.sqlclient.impl.pool; import io.vertx.codegen.annotations.Nullable; import io.vertx.core.Future; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/PoolImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java similarity index 98% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/PoolImpl.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java index 545ba6a7d..1aad9aac0 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/pool/PoolImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.pool; +package io.vertx.sqlclient.impl.pool; import io.vertx.codegen.annotations.Nullable; import io.vertx.core.*; @@ -27,7 +27,6 @@ import io.vertx.core.spi.metrics.VertxMetrics; import io.vertx.sqlclient.*; import io.vertx.sqlclient.impl.TransactionPropagationLocal; -import io.vertx.sqlclient.impl.pool.SqlConnectionPool; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.internal.SqlClientBase; import io.vertx.sqlclient.internal.SqlConnectionInternal; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java index 72a802875..c30b23f51 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java @@ -10,9 +10,11 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.pool.CloseablePool; -import io.vertx.sqlclient.internal.pool.PoolImpl; +import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.impl.pool.CloseablePool; +import io.vertx.sqlclient.impl.pool.PoolImpl; +import java.util.function.Function; import java.util.function.Supplier; public abstract class GenericDriver implements Driver { @@ -23,6 +25,19 @@ public abstract class GenericDriver implements Driv protected abstract String discriminant(); + private final Function> afterAcquire; + private final Function> beforeRecycle; + + public GenericDriver() { + this.afterAcquire = null; + this.beforeRecycle = null; + } + + public GenericDriver(Function> afterAcquire, Function> beforeRecycle) { + this.afterAcquire = afterAcquire; + this.beforeRecycle = beforeRecycle; + } + @Override public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { VertxInternal vx = (VertxInternal) vertx; @@ -37,7 +52,7 @@ public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions opti protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); - PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, null, null, + PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, afterAcquire, beforeRecycle, factory, databases, connectHandler, closeFuture); pool.init(); closeFuture.add(factory); diff --git a/vertx-sql-client/src/main/java/module-info.java b/vertx-sql-client/src/main/java/module-info.java index 429eaabcc..3ba677853 100644 --- a/vertx-sql-client/src/main/java/module-info.java +++ b/vertx-sql-client/src/main/java/module-info.java @@ -24,8 +24,7 @@ exports io.vertx.sqlclient.internal; exports io.vertx.sqlclient.internal.command; - exports io.vertx.sqlclient.internal.pool; - + // Expose impl to our own implementation, this actually would deserve to be in another module since it is not // related to the API or the internal API From b25f240798bbdeb055a5551aae6d5a2291e4eb29 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 11:13:56 +0200 Subject: [PATCH 12/25] Move connection factory specific methods to GenericDriver. Motivation: The Driver interface does not need to declare connection pool related details such as the connection factory and the connection wrapper methods. Those instead can be on the GenericDriver, so let's move them there. --- .../io/vertx/db2client/spi/DB2Driver.java | 6 ++--- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 4 +-- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 6 ++--- .../vertx/oracleclient/spi/OracleDriver.java | 4 +-- .../java/io/vertx/pgclient/spi/PgDriver.java | 6 ++--- .../templates/TemplateBuilderTest.java | 4 --- .../impl/pool/ConnectionWrapper.java | 12 +++++++++ .../vertx/sqlclient/impl/pool/PoolImpl.java | 7 +++-- .../java/io/vertx/sqlclient/spi/Driver.java | 13 --------- .../io/vertx/sqlclient/spi/GenericDriver.java | 27 ++++++++++++++++++- 10 files changed, 56 insertions(+), 33 deletions(-) create mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java 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 554aaa974..b66e93198 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 @@ -58,7 +58,7 @@ protected Pool newPool(VertxInternal vertx, Handler connectHandle boolean pipelinedPool = poolOptions instanceof Db2PoolOptions && ((Db2PoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, - factory, databases, connectHandler, closeFuture); + factory, databases, connectHandler, this::wrapConnection, closeFuture); pool.init(); closeFuture.add(factory); return pool; @@ -81,7 +81,7 @@ public ConnectionFactory createConnectionFactory(Vertx vertx, } @Override - public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection conn) { - return new DB2ConnectionImpl(context, factory, conn); + public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection connection) { + return new DB2ConnectionImpl(context, factory, connection); } } 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 2f2afca0c..c067a8384 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 @@ -69,7 +69,7 @@ public int appendQueryPlaceholder(StringBuilder queryBuilder, int index, int cur } @Override - public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection conn) { - return new MSSQLConnectionImpl(context, factory, conn); + public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection connection) { + return new MSSQLConnectionImpl(context, factory, 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 2a840c6a7..582d033a3 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 @@ -58,7 +58,7 @@ protected Pool newPool(VertxInternal vertx, Handler connectHandle boolean pipelinedPool = poolOptions instanceof MySQLPoolOptions && ((MySQLPoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, factory, - databases, connectHandler, closeFuture); + databases, connectHandler, this::wrapConnection, closeFuture); pool.init(); closeFuture.add(factory); return pool; @@ -81,7 +81,7 @@ public ConnectionFactory createConnectionFactory(Vertx vert } @Override - public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection conn) { - return new MySQLConnectionImpl(context, factory, conn); + public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection connection) { + return new MySQLConnectionImpl(context, factory, connection); } } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java index 9f657a04f..c554ade4a 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java @@ -66,7 +66,7 @@ public ConnectionFactory createConnectionFactory(Vertx ver } @Override - public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection conn) { - return new OracleConnectionImpl(context, factory, conn); + public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection connection) { + return new OracleConnectionImpl(context, factory, connection); } } 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 ef5366338..b1b566db8 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 @@ -41,7 +41,7 @@ protected Pool newPool(VertxInternal vertx, Handler connectHandle boolean pipelinedPool = poolOptions instanceof PgPoolOptions && ((PgPoolOptions) poolOptions).isPipelined(); ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); PoolImpl pool = new PoolImpl(vertx, this, pipelinedPool, poolOptions, null, null, - factory, databases, connectHandler, closeFuture); + factory, databases, connectHandler, this::wrapConnection, closeFuture); pool.init(); closeFuture.add(factory); return pool; @@ -75,7 +75,7 @@ public int appendQueryPlaceholder(StringBuilder queryBuilder, int index, int cur } @Override - public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection conn) { - return new PgConnectionImpl((PgConnectionFactory) factory, context, conn); + public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection connection) { + return new PgConnectionImpl((PgConnectionFactory) factory, context, connection); } } diff --git a/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java b/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java index cce82a609..52710246c 100644 --- a/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java +++ b/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java @@ -42,10 +42,6 @@ public Pool newPool(Vertx vertx, Supplier> databases, throw new UnsupportedOperationException(); } @Override - public ConnectionFactory createConnectionFactory(Vertx vertx, NetClientOptions transportOptions) { - throw new UnsupportedOperationException(); - } - @Override public boolean acceptsOptions(SqlConnectOptions connectOptions) { throw new UnsupportedOperationException(); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java new file mode 100644 index 000000000..3bf02204e --- /dev/null +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java @@ -0,0 +1,12 @@ +package io.vertx.sqlclient.impl.pool; + +import io.vertx.core.internal.ContextInternal; +import io.vertx.sqlclient.SqlConnectOptions; +import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.internal.SqlConnectionInternal; +import io.vertx.sqlclient.spi.ConnectionFactory; + +public interface ConnectionWrapper { + + SqlConnectionInternal wrap(ContextInternal context, ConnectionFactory factory, Connection conn); +} diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java index 1aad9aac0..04c56bf20 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java @@ -54,6 +54,7 @@ public class PoolImpl extends SqlClientBase implements Pool, Closeable { private final long cleanerPeriod; private final boolean pipelined; private final Handler connectionInitializer; + private final ConnectionWrapper connectionWrapper; private long timerID; public PoolImpl(VertxInternal vertx, @@ -65,6 +66,7 @@ public PoolImpl(VertxInternal vertx, ConnectionFactory connectionFactory, Supplier> connectionProvider, Handler connectionInitializer, + ConnectionWrapper connectionWrapper, CloseFuture closeFuture) { super(driver); @@ -78,6 +80,7 @@ public PoolImpl(VertxInternal vertx, poolMetrics = null; } + this.connectionWrapper = connectionWrapper; this.idleTimeout = MILLISECONDS.convert(poolOptions.getIdleTimeout(), poolOptions.getIdleTimeoutUnit()); this.connectionTimeout = MILLISECONDS.convert(poolOptions.getConnectionTimeout(), poolOptions.getConnectionTimeoutUnit()); this.maxLifetime = MILLISECONDS.convert(poolOptions.getMaxLifetime(), poolOptions.getMaxLifetimeUnit()); @@ -95,7 +98,7 @@ public PoolImpl(VertxInternal vertx, private void initializeConnection(SqlConnectionPool.PooledConnection conn) { if (connectionInitializer != null) { ContextInternal current = vertx.getContext(); - SqlConnectionInternal wrapper = driver.wrapConnection(current, conn.factory(), conn); + SqlConnectionInternal wrapper = connectionWrapper.wrap(current, conn.factory(), conn); conn.init((Connection.Holder) wrapper); current.dispatch(wrapper, connectionInitializer); } @@ -144,7 +147,7 @@ public Future getConnection() { Promise promise = current.promise(); acquire(current, connectionTimeout, promise); return promise.future().map(conn -> { - SqlConnectionInternal wrapper = driver.wrapConnection(current, conn.factory(), conn); + SqlConnectionInternal wrapper = connectionWrapper.wrap(current, conn.factory(), conn); conn.init((Connection.Holder) wrapper); return wrapper; }); 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 1e6fb98fb..fff9696e4 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 @@ -101,15 +101,6 @@ default Pool createPool(Vertx vertx, Supplier> databases, PoolOptions */ Pool newPool(Vertx vertx, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture); - /** - * Create a connection factory to the given {@code database}. - * - * @param vertx the Vertx instance - * @param transportOptions the options to configure the TCP client - * @return the connection factory - */ - ConnectionFactory createConnectionFactory(Vertx vertx, NetClientOptions transportOptions); - /** * @return {@code true} if the driver accepts the {@code connectOptions}, {@code false} otherwise */ @@ -149,8 +140,4 @@ default int appendQueryPlaceholder(StringBuilder queryBuilder, int index, int cu queryBuilder.append("?"); return current; } - - default SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection conn) { - return new SqlConnectionBase<>(context, factory, conn, this); - } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java index c30b23f51..a5474f1b1 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java @@ -4,6 +4,7 @@ import io.vertx.core.Handler; import io.vertx.core.Vertx; import io.vertx.core.internal.CloseFuture; +import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.VertxInternal; import io.vertx.core.net.NetClientOptions; import io.vertx.sqlclient.Pool; @@ -13,6 +14,8 @@ import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.impl.pool.CloseablePool; import io.vertx.sqlclient.impl.pool.PoolImpl; +import io.vertx.sqlclient.internal.SqlConnectionBase; +import io.vertx.sqlclient.internal.SqlConnectionInternal; import java.util.function.Function; import java.util.function.Supplier; @@ -38,6 +41,28 @@ public GenericDriver(Function> afterAcquire, Function createConnectionFactory(Vertx vertx, NetClientOptions transportOptions); + + /** + * Wrap a given {@code connection} into a {@link SqlConnectionInternal}. The default implementation + * wraps with a generic {@link SqlConnectionBase}. + * + * @param context the connection context + * @param factory the connection factory + * @param connection the connection to wrap + * @return the wrapped connection + */ + public SqlConnectionInternal wrapConnection(ContextInternal context, ConnectionFactory factory, Connection connection) { + return new SqlConnectionBase<>(context, factory, connection, this); + } + @Override public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions options, NetClientOptions transportOptions, Handler connectHandler, CloseFuture closeFuture) { VertxInternal vx = (VertxInternal) vertx; @@ -53,7 +78,7 @@ public Pool newPool(Vertx vertx, Supplier> databases, PoolOptions opti protected Pool newPool(VertxInternal vertx, Handler connectHandler, Supplier> databases, PoolOptions poolOptions, NetClientOptions transportOptions, CloseFuture closeFuture) { ConnectionFactory factory = createConnectionFactory(vertx, transportOptions); PoolImpl pool = new PoolImpl(vertx, this, false, poolOptions, afterAcquire, beforeRecycle, - factory, databases, connectHandler, closeFuture); + factory, databases, connectHandler, this::wrapConnection, closeFuture); pool.init(); closeFuture.add(factory); return pool; From e8ae268b497243fe0fad44e4196b5bda47e1eaf2 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 11:24:25 +0200 Subject: [PATCH 13/25] Remove getProcessId/getSecretKey from Connection contract that is specific to PostgreSQL and instead use downcast. --- .../oracleclient/impl/OracleJdbcConnection.java | 12 +----------- .../io/vertx/pgclient/impl/PgConnectionImpl.java | 6 ++++-- .../io/vertx/pgclient/impl/PgSocketConnection.java | 2 -- .../vertx/sqlclient/impl/SocketConnectionBase.java | 10 ---------- .../vertx/sqlclient/impl/pool/SqlConnectionPool.java | 10 ---------- .../java/io/vertx/sqlclient/internal/Connection.java | 4 ---- .../sqlclient/spi/backend/GenericDriverTest.java | 8 -------- 7 files changed, 5 insertions(+), 47 deletions(-) diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java index 7432c56c9..4ed88f8a2 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java @@ -141,17 +141,7 @@ public void close(Holder holder, Completable promise) { context.runOnContext(v -> close(holder, promise)); } } - - @Override - public int getProcessId() { - throw new UnsupportedOperationException(); - } - - @Override - public int getSecretKey() { - throw new UnsupportedOperationException(); - } - + public Future afterAcquire() { PromiseInternal promise = context.owner().promise(); context.executeBlocking(() -> { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java index 4820c3d2d..ed1c538fb 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java @@ -115,12 +115,14 @@ public PgConnection noticeHandler(Handler handler) { @Override public int processId() { - return conn.getProcessId(); + PgSocketConnection actual = (PgSocketConnection) conn.unwrap(); + return actual.getProcessId(); } @Override public int secretKey() { - return conn.getSecretKey(); + PgSocketConnection actual = (PgSocketConnection) conn.unwrap(); + return actual.getSecretKey(); } @Override diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index 79cabcc8c..9d464268f 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -125,12 +125,10 @@ protected void handleException(Throwable t) { } } - @Override public int getProcessId() { return processId; } - @Override public int getSecretKey() { return secretKey; } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index 2c68bb562..382c03125 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -170,16 +170,6 @@ public void init(Holder holder) { this.holder = holder; } - @Override - public int getProcessId() { - throw new UnsupportedOperationException(); - } - - @Override - public int getSecretKey() { - throw new UnsupportedOperationException(); - } - @Override public void close(Holder holder, Completable promise) { if (Vertx.currentContext() == context) { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java index 42af21c37..d5a77dbee 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java @@ -481,16 +481,6 @@ public void handleException(Throwable err) { } } - @Override - public int getProcessId() { - return conn.getProcessId(); - } - - @Override - public int getSecretKey() { - return conn.getSecretKey(); - } - @Override public Connection unwrap() { return conn; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/Connection.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/Connection.java index 0983d3b5c..c77025948 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/Connection.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/Connection.java @@ -63,10 +63,6 @@ default String system() { void close(Holder holder, Completable promise); - int getProcessId(); - - int getSecretKey(); - /** * The connection holder that handles connection interactions with the outer world, e.g. handling an event. */ diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java index 176fd4c38..12e375d84 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java @@ -118,14 +118,6 @@ public void close(Holder holder, Completable promise) { promise.succeed(); } @Override - public int getProcessId() { - return 0; - } - @Override - public int getSecretKey() { - return 0; - } - @Override public void schedule(CommandBase cmd, Completable handler) { if (cmd instanceof SimpleQueryCommand) { SimpleQueryCommand simpleQueryCmd = (SimpleQueryCommand) cmd; From 0b2633bf17cc4140420a9ecf178c29fc518c5128 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 13:30:24 +0200 Subject: [PATCH 14/25] Make ExtendedQueryCommand prepared statement immutable. --- .../db2client/impl/DB2SocketConnection.java | 14 +++++++- .../db2client/impl/codec/CommandCodec.java | 7 ---- .../impl/codec/DB2PreparedStatement.java | 2 +- .../codec/ExtendedBatchQueryCommandCodec.java | 6 ++-- .../codec/ExtendedQueryCommandBaseCodec.java | 6 ++-- .../impl/codec/ExtendedQueryCommandCodec.java | 6 ++-- .../impl/MSSQLSocketConnection.java | 8 +++++ .../codec/ExtendedBatchQueryCommandCodec.java | 4 +-- .../ExtendedCursorQueryCommandCodec.java | 4 +-- .../codec/ExtendedQueryCommandBaseCodec.java | 14 ++++---- .../impl/codec/ExtendedQueryCommandCodec.java | 4 +-- .../impl/codec/MSSQLCommandCodec.java | 2 -- .../impl/MySQLSocketConnection.java | 14 ++++++++ .../mysqlclient/impl/codec/CommandCodec.java | 7 ---- .../codec/ExtendedBatchQueryCommandCodec.java | 6 ++-- .../codec/ExtendedQueryCommandBaseCodec.java | 9 +++-- .../impl/codec/ExtendedQueryCommandCodec.java | 6 ++-- .../impl/codec/MySQLPreparedStatement.java | 2 +- .../impl/OracleJdbcConnection.java | 2 +- .../pgclient/impl/PgSocketConnection.java | 7 ++++ .../impl/codec/ExtendedQueryCommandCodec.java | 15 ++++---- .../pgclient/impl/codec/PgCommandCodec.java | 2 -- .../pgclient/impl/codec/RowResultDecoder.java | 4 +-- .../sqlclient/impl/SocketConnectionBase.java | 36 ++++++++++--------- .../command/ExtendedQueryCommand.java | 24 ++++++------- 25 files changed, 119 insertions(+), 92 deletions(-) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index 9ab50ac6b..39f872001 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -16,7 +16,6 @@ package io.vertx.db2client.impl; import io.netty.channel.ChannelPipeline; -import io.vertx.core.AsyncResult; import io.vertx.core.Completable; import io.vertx.core.Handler; import io.vertx.core.Promise; @@ -26,11 +25,15 @@ import io.vertx.db2client.DB2ConnectOptions; import io.vertx.db2client.impl.codec.CommandCodec; import io.vertx.db2client.impl.codec.DB2Codec; +import io.vertx.db2client.impl.codec.DB2PreparedStatement; +import io.vertx.db2client.impl.codec.ExtendedBatchQueryCommandCodec; +import io.vertx.db2client.impl.codec.ExtendedQueryCommandCodec; import io.vertx.db2client.impl.command.InitialHandshakeCommand; import io.vertx.db2client.impl.drda.ConnectionMetaData; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; import io.vertx.sqlclient.internal.command.*; @@ -81,6 +84,15 @@ public void init() { super.init(); } + @Override + protected CommandMessage toMessage(ExtendedQueryCommand command, PreparedStatement preparedStatement) { + if (command.isBatch()) { + return new ExtendedBatchQueryCommandCodec<>(command, (DB2PreparedStatement) preparedStatement); + } else { + return new ExtendedQueryCommandCodec(command, (DB2PreparedStatement) preparedStatement); + } + } + @Override protected CommandMessage toMessage(CommandBase command) { return CommandCodec.wrap(command); diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java index 7fa941db7..20eec05e6 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java @@ -47,13 +47,6 @@ public abstract class CommandCodec> extends CommandM codec = new InitialHandshakeCommandCodec((InitialHandshakeCommand) cmd); } else if (cmd instanceof SimpleQueryCommand) { codec = new SimpleQueryCommandCodec((SimpleQueryCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; - if (queryCmd.isBatch()) { - codec = new ExtendedBatchQueryCommandCodec<>(queryCmd); - } else { - codec = new ExtendedQueryCommandCodec(queryCmd); - } } else if (cmd instanceof CloseConnectionCommand) { codec = new CloseConnectionCommandCodec((CloseConnectionCommand) cmd); } else if (cmd instanceof PrepareStatementCommand) { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java index f70ba58e4..8ac3819a2 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java @@ -28,7 +28,7 @@ import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.internal.TupleInternal; -class DB2PreparedStatement implements PreparedStatement { +public class DB2PreparedStatement implements PreparedStatement { private static final Logger LOG = LoggerFactory.getLogger(DB2PreparedStatement.class); diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java index b9ce51607..d18d317c1 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -31,7 +31,7 @@ import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { +public class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { private static final Logger LOG = LoggerFactory.getLogger(ExtendedBatchQueryCommandCodec.class); @@ -39,8 +39,8 @@ class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec queryInstances; private final String baseCursorId; - ExtendedBatchQueryCommandCodec(ExtendedQueryCommand cmd) { - super(cmd); + public ExtendedBatchQueryCommandCodec(ExtendedQueryCommand cmd, DB2PreparedStatement statement) { + super(cmd, statement); params = cmd.paramsList(); queryInstances = new ArrayList<>(params.size()); baseCursorId = (cmd.cursorId() == null ? UUID.randomUUID().toString() : cmd.cursorId()) + "-"; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java index 49c5f50c9..f91165d75 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -35,10 +35,10 @@ abstract class ExtendedQueryCommandBaseCodec extends ExtendedQueryCommandBaseCodec> { +public class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { final QueryInstance queryInstance; - ExtendedQueryCommandCodec(ExtendedQueryCommand cmd) { - super(cmd); + public ExtendedQueryCommandCodec(ExtendedQueryCommand cmd, DB2PreparedStatement statement) { + super(cmd, statement); queryInstance = statement.getQueryInstance(cmd.cursorId()); } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java index e70206a33..04a56cc38 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java @@ -29,7 +29,9 @@ import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.mssqlclient.MSSQLConnectOptions; import io.vertx.mssqlclient.MSSQLInfo; +import io.vertx.mssqlclient.impl.codec.ExtendedQueryCommandBaseCodec; import io.vertx.mssqlclient.impl.codec.MSSQLCommandCodec; +import io.vertx.mssqlclient.impl.codec.MSSQLPreparedStatement; import io.vertx.mssqlclient.impl.codec.TdsLoginSentCompletionHandler; import io.vertx.mssqlclient.impl.codec.TdsMessageCodec; import io.vertx.mssqlclient.impl.codec.TdsPacketDecoder; @@ -38,6 +40,7 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; import io.vertx.sqlclient.internal.command.*; @@ -149,6 +152,11 @@ public void init() { super.init(); } + @Override + protected CommandMessage toMessage(ExtendedQueryCommand command, PreparedStatement preparedStatement) { + return ExtendedQueryCommandBaseCodec.create(command, (MSSQLPreparedStatement)preparedStatement); + } + @Override protected CommandMessage toMessage(CommandBase command) { return MSSQLCommandCodec.wrap(command); diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 55d10876f..45cbec481 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -25,8 +25,8 @@ class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec private int paramsIdx; private int messageDecoded; - ExtendedBatchQueryCommandCodec(ExtendedQueryCommand cmd) { - super(cmd); + ExtendedBatchQueryCommandCodec(ExtendedQueryCommand cmd, MSSQLPreparedStatement ps) { + super(cmd, ps); paramsList = cmd.paramsList(); } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java index df318f500..dcddc4e96 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java @@ -23,8 +23,8 @@ class ExtendedCursorQueryCommandCodec extends ExtendedQueryCommandBaseCodec cmd) { - super(cmd); + ExtendedCursorQueryCommandCodec(ExtendedQueryCommand cmd, MSSQLPreparedStatement ps) { + super(cmd, ps); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java index dc9436911..e980a0d54 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -19,22 +19,22 @@ import static io.vertx.mssqlclient.impl.codec.DataType.*; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; -abstract class ExtendedQueryCommandBaseCodec extends QueryCommandBaseCodec> { +public abstract class ExtendedQueryCommandBaseCodec extends QueryCommandBaseCodec> { final MSSQLPreparedStatement ps; - ExtendedQueryCommandBaseCodec(ExtendedQueryCommand cmd) { + public ExtendedQueryCommandBaseCodec(ExtendedQueryCommand cmd, MSSQLPreparedStatement ps) { super(cmd); - ps = (MSSQLPreparedStatement) this.cmd.preparedStatement(); + this.ps = ps; } - public static MSSQLCommandCodec create(ExtendedQueryCommand queryCmd) { + public static MSSQLCommandCodec create(ExtendedQueryCommand queryCmd, MSSQLPreparedStatement ps) { if (queryCmd.isBatch()) { - return new ExtendedBatchQueryCommandCodec<>(queryCmd); + return new ExtendedBatchQueryCommandCodec<>(queryCmd, ps); } else if (queryCmd.cursorId() != null) { - return new ExtendedCursorQueryCommandCodec<>(queryCmd); + return new ExtendedCursorQueryCommandCodec<>(queryCmd, ps); } else { - return new ExtendedQueryCommandCodec<>(queryCmd); + return new ExtendedQueryCommandCodec<>(queryCmd, ps); } } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java index ef0abdd26..313aa7989 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -16,8 +16,8 @@ class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec { - ExtendedQueryCommandCodec(ExtendedQueryCommand cmd) { - super(cmd); + ExtendedQueryCommandCodec(ExtendedQueryCommand cmd, MSSQLPreparedStatement ps) { + super(cmd, ps); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index 03e082702..94c4777ab 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -53,8 +53,6 @@ public abstract class MSSQLCommandCodec> extends Com return new SQLBatchCommandCodec<>((SimpleQueryCommand) cmd); } else if (cmd instanceof PrepareStatementCommand) { return new PrepareStatementCodec((PrepareStatementCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - return ExtendedQueryCommandBaseCodec.create((ExtendedQueryCommand) cmd); } else if (cmd instanceof CloseStatementCommand) { return new CloseStatementCommandCodec((CloseStatementCommand) cmd); } else if (cmd == CloseConnectionCommand.INSTANCE) { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java index eb3ac6fd8..214ab0461 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java @@ -29,15 +29,20 @@ import io.vertx.mysqlclient.SslMode; import io.vertx.mysqlclient.impl.codec.ClearCachedStatementsEvent; import io.vertx.mysqlclient.impl.codec.CommandCodec; +import io.vertx.mysqlclient.impl.codec.ExtendedBatchQueryCommandCodec; +import io.vertx.mysqlclient.impl.codec.ExtendedQueryCommandCodec; import io.vertx.mysqlclient.impl.codec.MySQLCodec; import io.vertx.mysqlclient.impl.codec.MySQLPacketDecoder; +import io.vertx.mysqlclient.impl.codec.MySQLPreparedStatement; import io.vertx.mysqlclient.impl.command.InitialHandshakeCommand; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import io.vertx.sqlclient.internal.command.QueryCommandBase; import io.vertx.sqlclient.internal.command.SimpleQueryCommand; import io.vertx.sqlclient.internal.command.TxCommand; @@ -98,6 +103,15 @@ public void init() { super.init(); } + @Override + protected CommandMessage toMessage(ExtendedQueryCommand command, PreparedStatement preparedStatement) { + if (command.isBatch()) { + return new ExtendedBatchQueryCommandCodec<>(command, (MySQLPreparedStatement) preparedStatement); + } else { + return new ExtendedQueryCommandCodec<>(command, (MySQLPreparedStatement) preparedStatement); + } + } + @Override protected CommandMessage toMessage(CommandBase command) { return CommandCodec.wrap(command); diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java index 6d8dcc811..f46d429d3 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java @@ -61,13 +61,6 @@ public abstract class CommandCodec> extends CommandM return new InitialHandshakeCommandCodec((InitialHandshakeCommand) cmd); } else if (cmd instanceof SimpleQueryCommand) { return new SimpleQueryCommandCodec<>((SimpleQueryCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; - if (queryCmd.isBatch()) { - return new ExtendedBatchQueryCommandCodec<>(queryCmd); - } else { - return new ExtendedQueryCommandCodec<>(queryCmd); - } } else if (cmd instanceof CloseConnectionCommand) { return new CloseConnectionCommandCodec((CloseConnectionCommand) cmd); } else if (cmd instanceof PrepareStatementCommand) { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 8ccedfad9..b49e43f91 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -25,7 +25,7 @@ import static io.vertx.mysqlclient.impl.protocol.Packets.EnumCursorType.*; -class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { +public class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { private final List params; private final BitSet bindingFailures; @@ -33,8 +33,8 @@ class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec cmd) { - super(cmd); + public ExtendedBatchQueryCommandCodec(ExtendedQueryCommand cmd, MySQLPreparedStatement statement) { + super(cmd, statement); params = cmd.paramsList(); bindingFailures = new BitSet(params.size()); } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java index 71b4c51b8..32c34524b 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -25,9 +25,9 @@ abstract class ExtendedQueryCommandBaseCodec extends ExtendedQueryCommandBaseCodec> { - ExtendedQueryCommandCodec(ExtendedQueryCommand cmd) { - super(cmd); +public class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { + public ExtendedQueryCommandCodec(ExtendedQueryCommand cmd, MySQLPreparedStatement statement) { + super(cmd, statement); if (cmd.fetch() > 0 && statement.isCursorOpen) { // restore the state we need for decoding fetch response based on the prepared statement columnDefinitions = statement.rowDesc.columnDefinitions(); diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java index ae5526856..4dda02c9c 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java @@ -31,7 +31,7 @@ import java.util.Arrays; -class MySQLPreparedStatement implements PreparedStatement { +public class MySQLPreparedStatement implements PreparedStatement { final long statementId; final String sql; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java index 4ed88f8a2..755d3c8ff 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java @@ -141,7 +141,7 @@ public void close(Holder holder, Completable promise) { context.runOnContext(v -> close(holder, promise)); } } - + public Future afterAcquire() { PromiseInternal promise = context.owner().promise(); context.executeBlocking(() -> { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index 9d464268f..b1945c3c7 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -27,6 +27,7 @@ import io.vertx.core.internal.net.NetSocketInternal; import io.vertx.pgclient.PgConnectOptions; import io.vertx.pgclient.PgException; +import io.vertx.pgclient.impl.codec.ExtendedQueryCommandCodec; import io.vertx.pgclient.impl.codec.NoticeResponse; import io.vertx.pgclient.impl.codec.PgCodec; import io.vertx.pgclient.impl.codec.PgCommandCodec; @@ -34,6 +35,7 @@ import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.impl.Notification; +import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; import io.vertx.sqlclient.internal.command.*; @@ -172,6 +174,11 @@ protected void doSchedule(CommandBase cmd, Completable handler) { } } + @Override + protected CommandMessage toMessage(ExtendedQueryCommand command, PreparedStatement preparedStatement) { + return new ExtendedQueryCommandCodec<>((ExtendedQueryCommand) command, preparedStatement); + } + @Override protected CommandMessage toMessage(CommandBase command) { return PgCommandCodec.wrap(command); diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java index 102d54a0f..6ac7e33ca 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java @@ -16,21 +16,25 @@ */ package io.vertx.pgclient.impl.codec; +import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.TupleInternal; import io.vertx.sqlclient.impl.codec.InvalidCachedStatementEvent; import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.impl.CommandResponse; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -class ExtendedQueryCommandCodec> extends QueryCommandBaseCodec { +public class ExtendedQueryCommandCodec> extends QueryCommandBaseCodec { private PgEncoder encoder; private static final String TABLE_SCHEMA_CHANGE_ERROR_MESSAGE_PATTERN = "bind message has \\d result formats but query has \\d columns"; - ExtendedQueryCommandCodec(C cmd) { + private PgPreparedStatement ps; + + public ExtendedQueryCommandCodec(C cmd, PreparedStatement ps) { super(cmd); - rowDecoder = new RowResultDecoder<>(cmd.collector(), ((PgPreparedStatement)cmd.preparedStatement()).rowDesc()); + this.rowDecoder = new RowResultDecoder<>(cmd.collector(), ((PgPreparedStatement)ps).rowDesc()); + this.ps = (PgPreparedStatement) ps; } @Override @@ -40,7 +44,6 @@ void encode(PgEncoder encoder) { encoder.writeExecute(cmd.cursorId(), cmd.fetch()); encoder.writeSync(); } else { - PgPreparedStatement ps = (PgPreparedStatement) cmd.preparedStatement(); if (cmd.isBatch()) { if (cmd.paramsList().isEmpty()) { // We set suspended to false as we won't get a command complete command back from Postgres @@ -90,8 +93,8 @@ void handleBindComplete() { @Override public void handleErrorResponse(ErrorResponse errorResponse) { - if (((PgPreparedStatement)cmd.preparedStatement()).isCached() && isTableSchemaErrorMessage(errorResponse)) { - encoder.channelHandlerContext().fireChannelRead(new InvalidCachedStatementEvent(cmd.preparedStatement().sql())); + if (ps.isCached() && isTableSchemaErrorMessage(errorResponse)) { + encoder.channelHandlerContext().fireChannelRead(new InvalidCachedStatementEvent(ps.sql())); } super.handleErrorResponse(errorResponse); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java index 2b27dc576..c805bfc54 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java @@ -50,8 +50,6 @@ public abstract class PgCommandCodec> extends Comman return new InitCommandCodec((InitCommand) cmd); } else if (cmd instanceof SimpleQueryCommand) { return new SimpleQueryCodec<>((SimpleQueryCommand) cmd); - } else if (cmd instanceof ExtendedQueryCommand) { - return new ExtendedQueryCommandCodec<>((ExtendedQueryCommand) cmd); } else if (cmd instanceof PrepareStatementCommand) { return new PrepareStatementCommandCodec((PrepareStatementCommand) cmd); } else if (cmd instanceof CloseConnectionCommand) { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/RowResultDecoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/RowResultDecoder.java index f705516be..0b7257c33 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/RowResultDecoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/RowResultDecoder.java @@ -25,11 +25,11 @@ import java.util.stream.Collector; -class RowResultDecoder extends RowDecoder { +public class RowResultDecoder extends RowDecoder { final PgRowDesc desc; - RowResultDecoder(Collector collector, PgRowDesc desc) { + public RowResultDecoder(Collector collector, PgRowDesc desc) { super(collector); this.desc = desc; } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index 382c03125..3a4e37e16 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -233,12 +233,13 @@ private void checkPending() { CommandMessage toSend; if (cmd instanceof ExtendedQueryCommand) { ExtendedQueryCommand queryCmd = (ExtendedQueryCommand) cmd; - if (queryCmd.ps == null) { + PreparedStatement ps = queryCmd.preparedStatement(); + if (ps == null) { if (psCache != null) { - queryCmd.ps = psCache.get(queryCmd.sql()); + ps = psCache.get(queryCmd.sql()); } } - if (queryCmd.ps == null) { + if (ps == null) { // Execute prepare boolean cache = psCache != null && preparedStatementCacheSqlFilter.test(queryCmd.sql()); if (cache) { @@ -254,13 +255,13 @@ private void checkPending() { inflight++; toSend = prepareCmd; } else { - String msg = queryCmd.prepare(); + String msg = queryCmd.prepare(ps); if (msg != null) { inflight--; handler.fail(VertxException.noStackTrace(msg)); continue; } else { - toSend = createMessage(cmd, handler); + toSend = createMessage(queryCmd, ps, handler); } } } else { @@ -277,21 +278,22 @@ private void checkPending() { } } + private CommandMessage createMessage(ExtendedQueryCommand command, PreparedStatement preparedStatement, Completable handler) { + CommandMessage msg = toMessage(command, preparedStatement); + msg.handler = (Completable) handler; + return msg; + } + private CommandMessage createMessage(CommandBase command, Completable handler) { CommandMessage msg = toMessage(command); msg.handler = (Completable) handler; -/* - if (command.handler != null) { - msg.handler = (Completable) command.handler; - command.handler = (a, r) -> { - System.out.println("Handle me ------------------------"); - new Exception().printStackTrace(System.out); - }; - } -*/ return msg; } + protected CommandMessage toMessage(ExtendedQueryCommand command, PreparedStatement preparedStatement) { + throw new UnsupportedOperationException(); + } + protected CommandMessage toMessage(CommandBase command) { throw new UnsupportedOperationException(); } @@ -305,14 +307,14 @@ private void checkPending() { if (cache) { cacheStatement(ps); } - queryCmd.ps = ps; - String msg = queryCmd.prepare(); +// queryCmd.ps = ps; + String msg = queryCmd.prepare(ps); if (msg != null) { inflight--; handler.fail(VertxException.noStackTrace(msg)); } else { ChannelHandlerContext ctx = socket.channelHandlerContext(); - ctx.write(createMessage(queryCmd, handler), ctx.voidPromise()); + ctx.write(createMessage(queryCmd, ps, handler), ctx.voidPromise()); ctx.flush(); } } else { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/ExtendedQueryCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/ExtendedQueryCommand.java index ba3956f95..245db6e0b 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/ExtendedQueryCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/ExtendedQueryCommand.java @@ -68,19 +68,19 @@ public static ExtendedQueryCommand createBatch( return new ExtendedQueryCommand<>(sql, options, ps, true, tuples, 0, null, false, autoCommit, collector, resultHandler); } - protected final String sql; - protected final PrepareOptions options; - public PreparedStatement ps; - protected final boolean batch; + private final String sql; + private final PrepareOptions options; + private final PreparedStatement preparedStatement; + private final boolean batch; + private final int fetch; + private final String cursorId; + private final boolean suspended; private Object tuples; - protected final int fetch; - protected final String cursorId; - protected final boolean suspended; private boolean prepared; private ExtendedQueryCommand(String sql, PrepareOptions options, - PreparedStatement ps, + PreparedStatement preparedStatement, boolean batch, Object tuples, int fetch, @@ -92,13 +92,13 @@ private ExtendedQueryCommand(String sql, super(autoCommit, collector, resultHandler); this.sql = sql; this.options = options; - this.ps = ps; + this.preparedStatement = preparedStatement; this.batch = batch; this.tuples = tuples; this.fetch = fetch; this.cursorId = cursorId; this.suspended = suspended; - this.prepared = ps != null; + this.prepared = preparedStatement != null; } public PrepareOptions options() { @@ -110,7 +110,7 @@ public PrepareOptions options() { * * @return {@code null} if the tuple preparation was successfull otherwise the validation error */ - public String prepare() { + public String prepare(PreparedStatement ps) { if (ps != null && !prepared) { prepared = true; // TODO : fix this try { @@ -163,7 +163,7 @@ public TupleInternal params() { } public PreparedStatement preparedStatement() { - return ps; + return preparedStatement; } public int fetch() { From 2c2eac86037e1242597e941054663b73a678af3a Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 13:45:26 +0200 Subject: [PATCH 15/25] Various API cleanups --- .../db2client/impl/DB2SocketConnection.java | 10 +++++----- .../impl/MSSQLSocketConnection.java | 8 +++----- .../impl/MySQLSocketConnection.java | 7 +++---- .../commands/OracleTransactionCommand.java | 6 +++--- .../pgclient/impl/PgSocketConnection.java | 6 +++--- .../sqlclient/impl/SocketConnectionBase.java | 4 ++++ .../internal/command/QueryCommandBase.java | 3 --- .../sqlclient/internal/command/TxCommand.java | 18 +++++++++++++++--- 8 files changed, 36 insertions(+), 26 deletions(-) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index 39f872001..32961d1ba 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -102,14 +102,14 @@ public void init() { protected void doSchedule(CommandBase cmd, Completable handler) { if (cmd instanceof TxCommand) { TxCommand txCmd = (TxCommand) cmd; - if (txCmd.kind == TxCommand.Kind.BEGIN) { + if (txCmd.kind() == TxCommand.Kind.BEGIN) { // DB2 always implicitly starts a transaction with each query, and does // not support the 'BEGIN' keyword. Instead we can no-op BEGIN commands - handler.succeed(txCmd.result); + handler.succeed(txCmd.result()); } else { - SimpleQueryCommand cmd2 = new SimpleQueryCommand<>(txCmd.kind.sql, false, false, - QueryCommandBase.NULL_COLLECTOR, QueryResultHandler.NOOP_HANDLER); - super.doSchedule(cmd2, (res, err) -> handler.complete(txCmd.result, err)); + SimpleQueryCommand cmd2 = new SimpleQueryCommand<>(txCmd.kind().sql(), false, false, + SocketConnectionBase.NULL_COLLECTOR, QueryResultHandler.NOOP_HANDLER); + super.doSchedule(cmd2, (res, err) -> handler.complete(txCmd.result(), err)); } } else { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java index 04a56cc38..7fb65c09d 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java @@ -14,10 +14,8 @@ import io.netty.channel.ChannelPipeline; import io.netty.channel.ChannelPromise; import io.netty.handler.ssl.SslHandler; -import io.vertx.core.AsyncResult; import io.vertx.core.Completable; import io.vertx.core.Future; -import io.vertx.core.Handler; import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.PromiseInternal; import io.vertx.core.internal.tls.SslContextManager; @@ -166,14 +164,14 @@ public void init() { protected void doSchedule(CommandBase cmd, Completable handler) { if (cmd instanceof TxCommand) { TxCommand tx = (TxCommand) cmd; - String sql = tx.kind == BEGIN ? "BEGIN TRANSACTION":tx.kind.sql; + String sql = tx.kind() == BEGIN ? "BEGIN TRANSACTION" : tx.kind().sql(); SimpleQueryCommand cmd2 = new SimpleQueryCommand<>( sql, false, false, - QueryCommandBase.NULL_COLLECTOR, + SocketConnectionBase.NULL_COLLECTOR, QueryResultHandler.NOOP_HANDLER); - super.doSchedule(cmd2, (res, err) -> handler.complete(tx.result, err)); + super.doSchedule(cmd2, (res, err) -> handler.complete(tx.result(), err)); } else { super.doSchedule(cmd, handler); } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java index 214ab0461..5635a579f 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java @@ -43,7 +43,6 @@ import io.vertx.sqlclient.impl.SocketConnectionBase; import io.vertx.sqlclient.internal.command.CommandBase; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.QueryCommandBase; import io.vertx.sqlclient.internal.command.SimpleQueryCommand; import io.vertx.sqlclient.internal.command.TxCommand; import io.vertx.sqlclient.spi.DatabaseMetadata; @@ -122,12 +121,12 @@ protected void doSchedule(CommandBase cmd, Completable handler) { if (cmd instanceof TxCommand) { TxCommand tx = (TxCommand) cmd; SimpleQueryCommand cmd2 = new SimpleQueryCommand<>( - tx.kind.sql, + tx.kind().sql(), false, false, - QueryCommandBase.NULL_COLLECTOR, + SocketConnectionBase.NULL_COLLECTOR, QueryResultHandler.NOOP_HANDLER); - super.doSchedule(cmd2, (res, err) -> handler.complete(tx.result, err)); + super.doSchedule(cmd2, (res, err) -> handler.complete(tx.result(), err)); } else { super.doSchedule(cmd, handler); } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java index 56ce2b919..b6a61418e 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java @@ -35,14 +35,14 @@ public static OracleTransactionCommand create(OracleConnection oracleConn @Override protected Future execute() { Future result; - if (op.kind == BEGIN) { + if (op.kind() == BEGIN) { result = begin(); - } else if (op.kind == COMMIT) { + } else if (op.kind() == COMMIT) { result = commit(); } else { result = rollback(); } - return result.map(op.result); + return result.map(op.result()); } private Future begin() { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index b1945c3c7..b5a803600 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -163,12 +163,12 @@ protected void doSchedule(CommandBase cmd, Completable handler) { if (cmd instanceof TxCommand) { TxCommand tx = (TxCommand) cmd; SimpleQueryCommand cmd2 = new SimpleQueryCommand<>( - tx.kind.sql, + tx.kind().sql(), false, false, - QueryCommandBase.NULL_COLLECTOR, + SocketConnectionBase.NULL_COLLECTOR, QueryResultHandler.NOOP_HANDLER); - super.doSchedule(cmd2, (res, err) -> handler.complete(tx.result, err)); + super.doSchedule(cmd2, (res, err) -> handler.complete(tx.result(), err)); } else { super.doSchedule(cmd, handler); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index 3a4e37e16..a0e4f38bf 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -29,6 +29,7 @@ import io.vertx.core.tracing.TracingPolicy; import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.net.NetSocketInternal; +import io.vertx.sqlclient.Row; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.cache.PreparedStatementCache; import io.vertx.sqlclient.impl.codec.InvalidCachedStatementEvent; @@ -39,13 +40,16 @@ import java.util.ArrayDeque; import java.util.List; +import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collector; /** * @author Julien Viet */ public abstract class SocketConnectionBase implements Connection { + public static final Collector NULL_COLLECTOR = Collector.of(() -> null, (v, row) -> {}, (v1, v2) -> null, Function.identity()); private static final Completable NULL_HANDLER = (res, err) -> {}; public static final Logger logger = LoggerFactory.getLogger(SocketConnectionBase.class); diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/QueryCommandBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/QueryCommandBase.java index 90b3604ae..491c13c71 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/QueryCommandBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/QueryCommandBase.java @@ -20,7 +20,6 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.QueryResultHandler; -import java.util.function.Function; import java.util.stream.Collector; /** @@ -29,8 +28,6 @@ public abstract class QueryCommandBase extends CommandBase { - public static final Collector NULL_COLLECTOR = Collector.of(() -> null, (v,row) -> {}, (v1, v2) -> null, Function.identity()); - private final QueryResultHandler resultHandler; private final Collector collector; private final boolean autoCommit; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/TxCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/TxCommand.java index d2afc7519..5247e2915 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/TxCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/TxCommand.java @@ -17,18 +17,30 @@ public enum Kind { BEGIN(), ROLLBACK(), COMMIT(); - public final String sql; + private final String sql; Kind() { this.sql = name(); } + + public String sql() { + return sql; + } } - public final R result; - public final Kind kind; + private final R result; + private final Kind kind; public TxCommand(Kind kind, R result) { this.kind = kind; this.result = result; } + + public R result() { + return result; + } + + public Kind kind() { + return kind; + } } From c115ed2a6c8cdbed8cca8623ecbc2904f3248043 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 13:50:57 +0200 Subject: [PATCH 16/25] Move relevant packages to SPI --- .../db2client/impl/DB2ConnectionFactory.java | 3 +-- .../db2client/impl/DB2ConnectionImpl.java | 4 ++-- .../db2client/impl/DB2SocketConnection.java | 7 +++++-- .../codec/CloseConnectionCommandCodec.java | 2 +- .../impl/codec/CloseCursorCommandCodec.java | 2 +- .../codec/CloseStatementCommandCodec.java | 2 +- .../db2client/impl/codec/CommandCodec.java | 13 ++++++------- .../codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../codec/ExtendedQueryCommandBaseCodec.java | 2 +- .../impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../codec/InitialHandshakeCommandCodec.java | 2 +- .../impl/codec/PrepareStatementCodec.java | 2 +- .../impl/codec/QueryCommandBaseCodec.java | 2 +- .../impl/codec/SimpleQueryCommandCodec.java | 2 +- .../command/AuthenticationCommandBase.java | 2 +- .../impl/command/InitialHandshakeCommand.java | 2 +- .../db2client/impl/command/PingCommand.java | 2 +- .../io/vertx/db2client/spi/DB2Driver.java | 4 ++-- .../impl/MSSQLConnectionFactory.java | 3 +-- .../mssqlclient/impl/MSSQLConnectionImpl.java | 4 ++-- .../impl/MSSQLSocketConnection.java | 10 +++++++--- .../codec/CloseConnectionCommandCodec.java | 2 +- .../impl/codec/CloseCursorCommandCodec.java | 2 +- .../codec/CloseStatementCommandCodec.java | 2 +- .../codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../ExtendedCursorQueryCommandCodec.java | 2 +- .../codec/ExtendedQueryCommandBaseCodec.java | 2 +- .../impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../impl/codec/InitCommandCodec.java | 4 ++-- .../impl/codec/MSSQLCommandCodec.java | 15 +++++++-------- .../impl/codec/PrepareStatementCodec.java | 2 +- .../impl/codec/QueryCommandBaseCodec.java | 2 +- .../impl/codec/SQLBatchCommandCodec.java | 2 +- .../impl/codec/TdsMessageEncoder.java | 1 - .../impl/command/PreLoginCommand.java | 2 +- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 4 ++-- .../impl/MySQLConnectionFactory.java | 3 +-- .../mysqlclient/impl/MySQLConnectionImpl.java | 4 ++-- .../impl/MySQLSocketConnection.java | 10 +++++----- .../codec/CloseConnectionCommandCodec.java | 2 +- .../codec/CloseStatementCommandCodec.java | 2 +- .../mysqlclient/impl/codec/CommandCodec.java | 13 ++++++------- .../codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../codec/ExtendedQueryCommandBaseCodec.java | 2 +- .../impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../codec/InitialHandshakeCommandCodec.java | 2 +- .../impl/codec/PrepareStatementCodec.java | 2 +- .../impl/codec/QueryCommandBaseCodec.java | 2 +- .../codec/ResetStatementCommandCodec.java | 2 +- .../impl/codec/SimpleQueryCommandCodec.java | 2 +- .../command/AuthenticationCommandBase.java | 2 +- .../impl/command/DebugCommand.java | 2 +- .../impl/command/InitDbCommand.java | 2 +- .../impl/command/InitialHandshakeCommand.java | 2 +- .../mysqlclient/impl/command/PingCommand.java | 2 +- .../impl/command/ResetConnectionCommand.java | 2 +- .../impl/command/SetOptionCommand.java | 2 +- .../impl/command/StatisticsCommand.java | 2 +- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 4 ++-- .../impl/OracleConnectionFactory.java | 4 ++-- .../impl/OracleConnectionImpl.java | 5 ++--- .../impl/OracleJdbcConnection.java | 11 +++++++++-- .../commands/OracleCursorFetchCommand.java | 2 +- .../commands/OracleCursorQueryCommand.java | 2 +- .../OraclePrepareStatementCommand.java | 2 +- .../commands/OraclePreparedBatchQuery.java | 2 +- .../commands/OraclePreparedQueryCommand.java | 2 +- .../commands/OracleSimpleQueryCommand.java | 2 +- .../commands/OracleTransactionCommand.java | 6 +++--- .../vertx/oracleclient/spi/OracleDriver.java | 4 ++-- .../pgclient/impl/PgConnectionFactory.java | 2 +- .../vertx/pgclient/impl/PgConnectionImpl.java | 2 +- .../pgclient/impl/PgSocketConnection.java | 8 ++++++-- .../codec/CloseConnectionCommandCodec.java | 2 +- .../impl/codec/ClosePortalCommandCodec.java | 2 +- .../codec/CloseStatementCommandCodec.java | 2 +- .../impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../pgclient/impl/codec/InitCommandCodec.java | 4 ++-- .../pgclient/impl/codec/PgCommandCodec.java | 15 +++++++-------- .../vertx/pgclient/impl/codec/PgEncoder.java | 3 +-- .../codec/PrepareStatementCommandCodec.java | 2 +- .../impl/codec/QueryCommandBaseCodec.java | 2 +- .../pgclient/impl/codec/SimpleQueryCodec.java | 2 +- .../java/io/vertx/pgclient/spi/PgDriver.java | 4 ++-- .../templates/TemplateBuilderTest.java | 1 - .../vertx/sqlclient/impl/CommandMessage.java | 2 +- .../vertx/sqlclient/impl/CommandResponse.java | 2 +- .../sqlclient/impl/ConnectionFactoryBase.java | 5 ++--- .../io/vertx/sqlclient/impl/CursorImpl.java | 3 +-- .../sqlclient/impl/PreparedStatementBase.java | 8 ++++---- .../vertx/sqlclient/impl/QueryExecutor.java | 7 +++---- .../sqlclient/impl/SocketConnectionBase.java | 9 +++++++-- .../vertx/sqlclient/impl/TransactionImpl.java | 6 +++--- .../impl/pool/ConnectionWrapper.java | 4 ++-- .../vertx/sqlclient/impl/pool/PoolImpl.java | 6 +++--- .../impl/pool/SqlConnectionPool.java | 10 ++++------ .../sqlclient/impl/tracing/QueryReporter.java | 9 ++++----- .../sqlclient/internal/SqlClientBase.java | 6 +++--- .../sqlclient/internal/SqlConnectionBase.java | 9 +++++---- .../internal/SqlConnectionInternal.java | 1 + .../java/io/vertx/sqlclient/spi/Driver.java | 3 --- .../io/vertx/sqlclient/spi/GenericDriver.java | 3 ++- .../connection}/Connection.java | 7 +++---- .../{ => connection}/ConnectionFactory.java | 4 ++-- .../spi/connection/package-info.java | 18 ++++++++++++++++++ .../protocol}/CloseConnectionCommand.java | 2 +- .../protocol}/CloseCursorCommand.java | 2 +- .../protocol}/CloseStatementCommand.java | 2 +- .../command => spi/protocol}/CommandBase.java | 2 +- .../protocol}/CommandScheduler.java | 2 +- .../protocol}/CompositeCommand.java | 2 +- .../protocol}/ExtendedQueryCommand.java | 2 +- .../command => spi/protocol}/InitCommand.java | 5 ++--- .../protocol}/PrepareStatementCommand.java | 2 +- .../protocol}/QueryCommandBase.java | 2 +- .../protocol}/SimpleQueryCommand.java | 2 +- .../command => spi/protocol}/TxCommand.java | 2 +- .../sqlclient/spi/protocol/package-info.java | 19 +++++++++++++++++++ .../src/main/java/module-info.java | 5 +++-- .../spi/backend/GenericDriverTest.java | 8 ++++---- .../sqlclient/tck/ConnectionTestBase.java | 2 +- 121 files changed, 255 insertions(+), 213 deletions(-) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal => spi/connection}/Connection.java (91%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/{ => connection}/ConnectionFactory.java (92%) create mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/CloseConnectionCommand.java (94%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/CloseCursorCommand.java (96%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/CloseStatementCommand.java (95%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/CommandBase.java (94%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/CommandScheduler.java (95%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/CompositeCommand.java (92%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/ExtendedQueryCommand.java (99%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/InitCommand.java (91%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/PrepareStatementCommand.java (97%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/QueryCommandBase.java (97%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/SimpleQueryCommand.java (96%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/{internal/command => spi/protocol}/TxCommand.java (95%) create mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/package-info.java diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java index 9a6a422fb..ea2b52ea8 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionFactory.java @@ -26,8 +26,7 @@ import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.core.spi.metrics.VertxMetrics; import io.vertx.db2client.DB2ConnectOptions; -import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.ConnectionFactoryBase; import java.util.Map; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java index 59393fa37..57d1de0a9 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java @@ -23,9 +23,9 @@ import io.vertx.db2client.DB2Connection; import io.vertx.db2client.impl.command.PingCommand; import io.vertx.db2client.spi.DB2Driver; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionBase; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; public class DB2ConnectionImpl extends SqlConnectionBase implements DB2Connection { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index 32961d1ba..1c02ec1ee 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -32,12 +32,15 @@ import io.vertx.db2client.impl.drda.ConnectionMetaData; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; -import io.vertx.sqlclient.internal.command.*; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.TxCommand; import java.util.Map; import java.util.function.Predicate; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseConnectionCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseConnectionCommandCodec.java index cf2d04d7f..11bef520d 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseConnectionCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseConnectionCommandCodec.java @@ -18,7 +18,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; class CloseConnectionCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java index 26a41db10..06afa754a 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java @@ -21,7 +21,7 @@ import io.vertx.db2client.impl.codec.DB2PreparedStatement.QueryInstance; import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.impl.CommandResponse; class CloseCursorCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java index c2487142a..9d06df866 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java @@ -16,7 +16,7 @@ package io.vertx.db2client.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.impl.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java index 20eec05e6..528916fd6 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java @@ -20,14 +20,13 @@ import io.vertx.db2client.impl.command.InitialHandshakeCommand; import io.vertx.db2client.impl.command.PingCommand; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; public abstract class CommandCodec> extends CommandMessage { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java index d18d317c1..4bdffb9ed 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -29,7 +29,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java index f91165d75..56ca20767 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -28,7 +28,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; abstract class ExtendedQueryCommandBaseCodec> extends QueryCommandBaseCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java index b471aa08e..03ab52eea 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java @@ -20,7 +20,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java index 694c40151..f25320a5c 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java @@ -25,7 +25,7 @@ import io.vertx.db2client.impl.drda.DRDAConstants; import io.vertx.db2client.impl.drda.SQLState; import io.vertx.db2client.impl.drda.SqlCode; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.CommandResponse; /** diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java index 40b08d629..45d628a15 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java @@ -24,7 +24,7 @@ import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; class PrepareStatementCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java index 859b43b34..b675ec04c 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java @@ -19,7 +19,7 @@ import io.vertx.db2client.impl.drda.ColumnMetaData; import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.command.QueryCommandBase; +import io.vertx.sqlclient.spi.protocol.QueryCommandBase; abstract class QueryCommandBaseCodec> extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java index 0cc084a70..8fd643097 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java @@ -24,7 +24,7 @@ import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; class SimpleQueryCommandCodec extends QueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/AuthenticationCommandBase.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/AuthenticationCommandBase.java index b87668fd3..4f3eec4af 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/AuthenticationCommandBase.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/AuthenticationCommandBase.java @@ -17,7 +17,7 @@ import java.util.Map; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class AuthenticationCommandBase extends CommandBase { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java index f6ce353aa..5847c710d 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java @@ -17,7 +17,7 @@ import java.util.Map; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.SocketConnectionBase; public class InitialHandshakeCommand extends AuthenticationCommandBase { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/PingCommand.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/PingCommand.java index e9193113e..c3895e48f 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/PingCommand.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/PingCommand.java @@ -15,7 +15,7 @@ */ package io.vertx.db2client.impl.command; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class PingCommand extends CommandBase { } 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 b66e93198..74960c898 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 @@ -29,10 +29,10 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Supplier; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java index c34efc989..1d6f856de 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionFactory.java @@ -24,8 +24,7 @@ import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.core.spi.metrics.VertxMetrics; import io.vertx.mssqlclient.MSSQLConnectOptions; -import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.ConnectionFactoryBase; import java.util.Map; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java index b280b2295..d3baa014a 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java @@ -20,10 +20,10 @@ import io.vertx.mssqlclient.MSSQLConnection; import io.vertx.mssqlclient.MSSQLInfo; import io.vertx.mssqlclient.spi.MSSQLDriver; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.SocketConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionBase; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; public class MSSQLConnectionImpl extends SqlConnectionBase implements MSSQLConnection { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java index 7fb65c09d..0bf163709 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java @@ -37,17 +37,21 @@ import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; -import io.vertx.sqlclient.internal.command.*; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.InitCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.TxCommand; import java.util.Map; import java.util.function.Predicate; -import static io.vertx.sqlclient.internal.command.TxCommand.Kind.BEGIN; +import static io.vertx.sqlclient.spi.protocol.TxCommand.Kind.BEGIN; public class MSSQLSocketConnection extends SocketConnectionBase { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java index 3dd7e431e..dedad18d8 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseConnectionCommandCodec.java @@ -11,7 +11,7 @@ package io.vertx.mssqlclient.impl.codec; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; class CloseConnectionCommandCodec extends MSSQLCommandCodec { CloseConnectionCommandCodec(CloseConnectionCommand cmd) { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java index 753e42777..1815d0f48 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.impl.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java index 01c3f8b31..ce12cb1bc 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.impl.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 45cbec481..3bcfd5e80 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.TupleInternal; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import java.util.List; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java index dcddc4e96..bccac6fcb 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; import static io.vertx.mssqlclient.impl.codec.DataType.NVARCHAR; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java index e980a0d54..abf53656d 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.data.NullValue; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mssqlclient.impl.codec.DataType.*; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java index 313aa7989..9ef6e90e6 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java index 964d2010d..6cdda99e5 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/InitCommandCodec.java @@ -17,8 +17,8 @@ import io.vertx.mssqlclient.impl.MSSQLSocketConnection; import io.vertx.mssqlclient.impl.protocol.client.login.LoginPacket; import io.vertx.mssqlclient.impl.utils.Utils; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.InitCommand; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.protocol.InitCommand; import java.util.Map; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index 94c4777ab..21a7acf14 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -18,15 +18,14 @@ import io.vertx.mssqlclient.MSSQLInfo; import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.InitCommand; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.InitCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import static io.vertx.mssqlclient.impl.codec.EnvChange.*; import static io.vertx.mssqlclient.impl.codec.TokenType.*; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java index bcf4f6784..30130bc98 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java @@ -13,7 +13,7 @@ import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; class PrepareStatementCodec extends MSSQLCommandCodec { PrepareStatementCodec(PrepareStatementCommand cmd) { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java index 46d9b496c..d29781c4b 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.command.QueryCommandBase; +import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java index 80fd1342b..fb3aa56d1 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/SQLBatchCommandCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import java.nio.charset.StandardCharsets; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java index a92464c4a..87eb805aa 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageEncoder.java @@ -15,7 +15,6 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; -import io.vertx.sqlclient.internal.command.*; import static io.vertx.mssqlclient.MSSQLConnectOptions.MIN_PACKET_SIZE; import static io.vertx.mssqlclient.impl.codec.MessageStatus.END_OF_MESSAGE; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/command/PreLoginCommand.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/command/PreLoginCommand.java index 78d67ff71..2995a17b4 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/command/PreLoginCommand.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/command/PreLoginCommand.java @@ -11,7 +11,7 @@ package io.vertx.mssqlclient.impl.command; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class PreLoginCommand extends CommandBase { 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 c067a8384..1fe869b81 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 @@ -25,9 +25,9 @@ import io.vertx.mssqlclient.impl.MSSQLConnectionImpl; import io.vertx.mssqlclient.impl.MSSQLConnectionUriParser; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionInternal; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; public class MSSQLDriver extends GenericDriver { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java index cdbe94782..7a0178ba1 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionFactory.java @@ -28,8 +28,7 @@ import io.vertx.mysqlclient.MySQLAuthenticationPlugin; import io.vertx.mysqlclient.MySQLConnectOptions; import io.vertx.mysqlclient.SslMode; -import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.ConnectionFactoryBase; import java.nio.charset.Charset; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java index 465dfc5fc..89a7938f1 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java @@ -21,9 +21,9 @@ import io.vertx.mysqlclient.MySQLSetOption; import io.vertx.mysqlclient.impl.command.*; import io.vertx.mysqlclient.spi.MySQLDriver; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionBase; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; public class MySQLConnectionImpl extends SqlConnectionBase implements MySQLConnection { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java index 5635a579f..ec22cdb8d 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java @@ -37,14 +37,14 @@ import io.vertx.mysqlclient.impl.command.InitialHandshakeCommand; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; -import io.vertx.sqlclient.internal.command.TxCommand; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.TxCommand; import io.vertx.sqlclient.spi.DatabaseMetadata; import java.nio.charset.Charset; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseConnectionCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseConnectionCommandCodec.java index f62ea556a..c26b618b0 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseConnectionCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseConnectionCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; class CloseConnectionCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 1; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java index aa6b46c7f..725ab3a23 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.impl.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java index f46d429d3..eeddb599a 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java @@ -31,14 +31,13 @@ import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index b49e43f91..e1d791df7 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -18,7 +18,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import java.util.BitSet; import java.util.List; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java index 32c34524b..27677e206 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -17,7 +17,7 @@ import io.vertx.mysqlclient.impl.datatype.DataTypeCodec; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.*; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java index dcb620201..0ffc90c2c 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -20,7 +20,7 @@ import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; import static io.vertx.mysqlclient.impl.protocol.Packets.EnumCursorType.CURSOR_TYPE_NO_CURSOR; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java index 8f5ecfecd..7b6f44a78 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java @@ -27,7 +27,7 @@ import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.mysqlclient.impl.util.CachingSha2Authenticator; import io.vertx.mysqlclient.impl.util.Native41Authenticator; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.CommandResponse; import java.nio.charset.StandardCharsets; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java index feb1e0aa1..dc22475ea 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java @@ -24,7 +24,7 @@ import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java index 5e2f9c9db..2dde695bd 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java @@ -25,7 +25,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.QueryCommandBase; +import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ResetStatementCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ResetStatementCommandCodec.java index 0ddc12aa0..1e3ed6b5e 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ResetStatementCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ResetStatementCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; class ResetStatementCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 5; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/SimpleQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/SimpleQueryCommandCodec.java index 9d7d8d865..b6a177987 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/SimpleQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/SimpleQueryCommandCodec.java @@ -20,7 +20,7 @@ import io.vertx.core.Future; import io.vertx.mysqlclient.impl.datatype.DataFormat; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import java.io.File; import java.nio.charset.StandardCharsets; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/AuthenticationCommandBase.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/AuthenticationCommandBase.java index 85545736e..1ecc22c92 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/AuthenticationCommandBase.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/AuthenticationCommandBase.java @@ -13,7 +13,7 @@ import io.vertx.core.buffer.Buffer; import io.vertx.mysqlclient.impl.MySQLCollation; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/DebugCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/DebugCommand.java index 027038b40..b4fb62277 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/DebugCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/DebugCommand.java @@ -11,7 +11,7 @@ package io.vertx.mysqlclient.impl.command; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class DebugCommand extends CommandBase { } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitDbCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitDbCommand.java index e9715f1a6..9bec20e31 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitDbCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitDbCommand.java @@ -11,7 +11,7 @@ package io.vertx.mysqlclient.impl.command; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class InitDbCommand extends CommandBase { private final String schemaName; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java index 4cb001e2f..68b40ebd9 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java @@ -16,7 +16,7 @@ import io.vertx.mysqlclient.MySQLAuthenticationPlugin; import io.vertx.mysqlclient.SslMode; import io.vertx.mysqlclient.impl.MySQLCollation; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.SocketConnectionBase; import java.nio.charset.Charset; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/PingCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/PingCommand.java index cf2a8045e..811766105 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/PingCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/PingCommand.java @@ -11,7 +11,7 @@ package io.vertx.mysqlclient.impl.command; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class PingCommand extends CommandBase { } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/ResetConnectionCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/ResetConnectionCommand.java index ba699a660..a7633a5bd 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/ResetConnectionCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/ResetConnectionCommand.java @@ -11,7 +11,7 @@ package io.vertx.mysqlclient.impl.command; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class ResetConnectionCommand extends CommandBase { } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/SetOptionCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/SetOptionCommand.java index 0f8ca98fa..0ed138460 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/SetOptionCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/SetOptionCommand.java @@ -12,7 +12,7 @@ package io.vertx.mysqlclient.impl.command; import io.vertx.mysqlclient.MySQLSetOption; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class SetOptionCommand extends CommandBase { private final MySQLSetOption mySQLSetOption; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/StatisticsCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/StatisticsCommand.java index dfe537e14..30f5fc19b 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/StatisticsCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/StatisticsCommand.java @@ -11,7 +11,7 @@ package io.vertx.mysqlclient.impl.command; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class StatisticsCommand extends CommandBase { } 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 582d033a3..f3f0725bf 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 @@ -29,10 +29,10 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Supplier; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java index aaa3610f8..cf19c3199 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionFactory.java @@ -20,8 +20,8 @@ import io.vertx.core.spi.metrics.VertxMetrics; import io.vertx.oracleclient.OracleConnectOptions; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import oracle.jdbc.OracleConnection; import oracle.jdbc.datasource.OracleDataSource; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java index 64c69724f..c0f8cd799 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleConnectionImpl.java @@ -11,16 +11,15 @@ package io.vertx.oracleclient.impl; -import io.vertx.core.Context; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.internal.ContextInternal; import io.vertx.oracleclient.OracleConnectOptions; import io.vertx.oracleclient.OracleConnection; import io.vertx.oracleclient.spi.OracleDriver; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionBase; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; public class OracleConnectionImpl extends SqlConnectionBase implements OracleConnection { diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java index 755d3c8ff..a8ffdacf5 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java @@ -20,9 +20,16 @@ import io.vertx.core.tracing.TracingPolicy; import io.vertx.oracleclient.OracleConnectOptions; import io.vertx.oracleclient.impl.commands.*; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.*; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.TxCommand; import oracle.jdbc.OracleConnection; import java.sql.SQLException; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorFetchCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorFetchCommand.java index 744c0a563..8180553d6 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorFetchCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorFetchCommand.java @@ -15,7 +15,7 @@ import io.vertx.core.internal.ContextInternal; import io.vertx.oracleclient.impl.RowReader; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import oracle.jdbc.OracleConnection; public class OracleCursorFetchCommand extends OracleCommand { diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorQueryCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorQueryCommand.java index 7cb756e67..07f8b84fd 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorQueryCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleCursorQueryCommand.java @@ -18,7 +18,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import oracle.jdbc.OracleConnection; import oracle.jdbc.OraclePreparedStatement; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePrepareStatementCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePrepareStatementCommand.java index 026df67f2..2242c3e22 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePrepareStatementCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePrepareStatementCommand.java @@ -15,7 +15,7 @@ import io.vertx.core.json.JsonArray; import io.vertx.oracleclient.OraclePrepareOptions; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import oracle.jdbc.OracleConnection; import java.sql.SQLException; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java index 7162b5757..e99c85e1c 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java @@ -18,7 +18,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import oracle.jdbc.OracleConnection; import oracle.jdbc.OraclePreparedStatement; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedQueryCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedQueryCommand.java index 4858c03ed..0b4d92b8f 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedQueryCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedQueryCommand.java @@ -17,7 +17,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import oracle.jdbc.OracleConnection; import oracle.jdbc.OraclePreparedStatement; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleSimpleQueryCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleSimpleQueryCommand.java index ead98af8d..9c2e06b29 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleSimpleQueryCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleSimpleQueryCommand.java @@ -15,7 +15,7 @@ import io.vertx.oracleclient.OraclePrepareOptions; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import oracle.jdbc.OracleConnection; import oracle.jdbc.OraclePreparedStatement; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java index b6a61418e..cf6b205cb 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleTransactionCommand.java @@ -13,11 +13,11 @@ import io.vertx.core.Future; import io.vertx.core.internal.ContextInternal; import io.vertx.oracleclient.impl.Helper.SQLFutureMapper; -import io.vertx.sqlclient.internal.command.TxCommand; +import io.vertx.sqlclient.spi.protocol.TxCommand; import oracle.jdbc.OracleConnection; -import static io.vertx.sqlclient.internal.command.TxCommand.Kind.BEGIN; -import static io.vertx.sqlclient.internal.command.TxCommand.Kind.COMMIT; +import static io.vertx.sqlclient.spi.protocol.TxCommand.Kind.BEGIN; +import static io.vertx.sqlclient.spi.protocol.TxCommand.Kind.COMMIT; public class OracleTransactionCommand extends OracleCommand { diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java index c554ade4a..9cd8760b9 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java @@ -19,9 +19,9 @@ import io.vertx.oracleclient.OracleConnectOptions; import io.vertx.oracleclient.impl.*; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionInternal; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Function; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java index bb9e96c82..a13770b4a 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionFactory.java @@ -28,7 +28,7 @@ import io.vertx.core.internal.net.NetSocketInternal; import io.vertx.pgclient.PgConnectOptions; import io.vertx.pgclient.SslMode; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.ConnectionFactoryBase; import java.util.Collections; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java index ed1c538fb..6b9f4044b 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java @@ -28,7 +28,7 @@ import io.vertx.pgclient.impl.codec.NoticeResponse; import io.vertx.pgclient.impl.codec.TxFailedEvent; import io.vertx.pgclient.spi.PgDriver; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.impl.SocketConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionBase; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index b5a803600..ecf8a1502 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -33,13 +33,17 @@ import io.vertx.pgclient.impl.codec.PgCommandCodec; import io.vertx.pgclient.impl.codec.TxFailedEvent; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.impl.SocketConnectionBase; -import io.vertx.sqlclient.internal.command.*; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.InitCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.TxCommand; import java.util.Map; import java.util.function.Predicate; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseConnectionCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseConnectionCommandCodec.java index 06dfe7ce9..fdec71608 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseConnectionCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseConnectionCommandCodec.java @@ -16,7 +16,7 @@ */ package io.vertx.pgclient.impl.codec; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; class CloseConnectionCommandCodec extends PgCommandCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ClosePortalCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ClosePortalCommandCodec.java index 267cc6103..6584c8939 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ClosePortalCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ClosePortalCommandCodec.java @@ -16,7 +16,7 @@ */ package io.vertx.pgclient.impl.codec; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; class ClosePortalCommandCodec extends PgCommandCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseStatementCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseStatementCommandCodec.java index 92dd14df0..f9aefe8a6 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/CloseStatementCommandCodec.java @@ -16,7 +16,7 @@ */ package io.vertx.pgclient.impl.codec; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; class CloseStatementCommandCodec extends PgCommandCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java index 6ac7e33ca..1c285bb97 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java @@ -21,7 +21,7 @@ import io.vertx.sqlclient.impl.codec.InvalidCachedStatementEvent; import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedQueryCommandCodec> extends QueryCommandBaseCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java index 2a8f90975..cbb170c10 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java @@ -25,9 +25,9 @@ import io.vertx.pgclient.impl.PgSocketConnection; import io.vertx.pgclient.impl.auth.scram.ScramAuthentication; import io.vertx.pgclient.impl.auth.scram.ScramSession; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.InitCommand; +import io.vertx.sqlclient.spi.protocol.InitCommand; class InitCommandCodec extends PgCommandCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java index c805bfc54..7b20d0491 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java @@ -21,15 +21,14 @@ import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.pgclient.PgException; import io.vertx.sqlclient.impl.CommandMessage; -import io.vertx.sqlclient.internal.command.CloseConnectionCommand; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.impl.CommandResponse; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.InitCommand; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.InitCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import java.util.Arrays; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java index 914ae4e57..5f342ac8d 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java @@ -25,11 +25,10 @@ import io.netty.channel.socket.SocketChannel; import io.vertx.sqlclient.Tuple; import io.vertx.pgclient.impl.util.Util; -import io.vertx.sqlclient.impl.CommandMessage; import io.vertx.sqlclient.impl.HexSequence; import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.command.*; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import java.util.*; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java index 57a620a25..d12997904 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java @@ -16,7 +16,7 @@ */ package io.vertx.pgclient.impl.codec; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.internal.PreparedStatement; import java.util.List; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java index ec8cac359..0a11e5b2d 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java @@ -18,7 +18,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.command.QueryCommandBase; +import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java index 22cfab981..735ac831f 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java @@ -18,7 +18,7 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; class SimpleQueryCodec extends QueryCommandBaseCodec> { 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 b1b566db8..8cd2d8026 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 @@ -17,10 +17,10 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.GenericDriver; import java.util.function.Supplier; diff --git a/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java b/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java index 52710246c..69f04306e 100644 --- a/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java +++ b/vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/TemplateBuilderTest.java @@ -7,7 +7,6 @@ import io.vertx.core.net.NetClientOptions; import io.vertx.sqlclient.*; import io.vertx.sqlclient.impl.SqlClientInternal; -import io.vertx.sqlclient.spi.ConnectionFactory; import io.vertx.sqlclient.spi.Driver; import io.vertx.sqlclient.templates.impl.SqlTemplate; import org.junit.Assert; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java index af8b0f16c..03ef3c331 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java @@ -13,7 +13,7 @@ import io.vertx.core.AsyncResult; import io.vertx.core.Completable; import io.vertx.core.Future; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class CommandMessage> { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java index 90bf07ca9..3a2902f68 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java @@ -15,7 +15,7 @@ import io.vertx.core.Future; import io.vertx.core.AsyncResult; import io.vertx.core.VertxException; -import io.vertx.sqlclient.internal.command.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; public class CommandResponse { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ConnectionFactoryBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ConnectionFactoryBase.java index bb9bd120e..e3bb92d32 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ConnectionFactoryBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ConnectionFactoryBase.java @@ -12,7 +12,6 @@ import io.vertx.core.Completable; import io.vertx.core.Future; -import io.vertx.core.Promise; import io.vertx.core.net.NetClient; import io.vertx.core.net.NetClientOptions; import io.vertx.core.internal.CloseSequence; @@ -20,8 +19,8 @@ import io.vertx.core.internal.PromiseInternal; import io.vertx.core.internal.VertxInternal; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; /** * An base connection factory for creating database connections diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java index c525e6dba..86fa0cf4f 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java @@ -24,8 +24,7 @@ import io.vertx.sqlclient.Cursor; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.RowSet; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.PreparedStatement; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.TupleInternal; import java.util.UUID; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java index 585c0d6f8..346fe5797 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java @@ -22,9 +22,9 @@ import io.vertx.sqlclient.PrepareOptions; import io.vertx.sqlclient.PreparedQuery; import io.vertx.sqlclient.internal.ArrayTuple; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.CloseCursorCommand; -import io.vertx.sqlclient.internal.command.CloseStatementCommand; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.Cursor; import io.vertx.sqlclient.PreparedStatement; import io.vertx.sqlclient.SqlResult; @@ -33,7 +33,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.core.*; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.internal.TupleInternal; import java.util.List; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java index b60c1f297..6c53ec2cd 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java @@ -23,13 +23,12 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.SqlResult; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.command.CommandScheduler; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.protocol.CommandScheduler; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.TupleInternal; -import java.util.ArrayList; import java.util.List; import java.util.function.Function; import java.util.stream.Collector; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index a0e4f38bf..401b9b2e7 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -33,10 +33,15 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.impl.cache.PreparedStatementCache; import io.vertx.sqlclient.impl.codec.InvalidCachedStatementEvent; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.*; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; +import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.CompositeCommand; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import java.util.ArrayDeque; import java.util.List; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java index 4b7a265c0..154155ac2 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/TransactionImpl.java @@ -21,9 +21,9 @@ import io.vertx.core.internal.PromiseInternal; import io.vertx.sqlclient.Transaction; import io.vertx.sqlclient.TransactionRollbackException; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.TxCommand; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.TxCommand; public class TransactionImpl implements Transaction { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java index 3bf02204e..1abc8b402 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/ConnectionWrapper.java @@ -2,9 +2,9 @@ import io.vertx.core.internal.ContextInternal; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionInternal; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; public interface ConnectionWrapper { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java index 04c56bf20..4bb350050 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java @@ -27,11 +27,11 @@ import io.vertx.core.spi.metrics.VertxMetrics; import io.vertx.sqlclient.*; import io.vertx.sqlclient.impl.TransactionPropagationLocal; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlClientBase; import io.vertx.sqlclient.internal.SqlConnectionInternal; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.Driver; import java.util.function.Function; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java index d5a77dbee..c6d648ecf 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java @@ -24,13 +24,11 @@ import io.vertx.core.internal.ContextInternal; import io.vertx.core.internal.VertxInternal; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.SqlConnectionBase; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.QueryCommandBase; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import io.vertx.sqlclient.impl.tracing.QueryReporter; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.DatabaseMetadata; import java.util.List; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java index 88ffe02c8..e47dbbd93 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java @@ -1,6 +1,5 @@ package io.vertx.sqlclient.impl.tracing; -import io.vertx.core.AsyncResult; import io.vertx.core.internal.ContextInternal; import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.core.spi.tracing.SpanKind; @@ -9,10 +8,10 @@ import io.vertx.core.tracing.TracingPolicy; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.impl.QueryResultBuilder; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; -import io.vertx.sqlclient.internal.command.QueryCommandBase; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; +import io.vertx.sqlclient.spi.protocol.QueryCommandBase; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import java.util.Collections; import java.util.List; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java index b6af37871..8490d2270 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java @@ -27,8 +27,8 @@ import io.vertx.sqlclient.impl.QueryExecutor; import io.vertx.sqlclient.impl.RowSetImpl; import io.vertx.sqlclient.impl.SqlClientInternal; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.CommandScheduler; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.CommandScheduler; import io.vertx.sqlclient.SqlResult; import io.vertx.sqlclient.RowSet; import io.vertx.sqlclient.Row; @@ -36,7 +36,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.core.Future; import io.vertx.core.Handler; -import io.vertx.sqlclient.internal.command.CompositeCommand; +import io.vertx.sqlclient.spi.protocol.CompositeCommand; import io.vertx.sqlclient.spi.Driver; import java.util.List; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java index 8084b5571..99577f8e4 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java @@ -28,12 +28,13 @@ import io.vertx.sqlclient.Transaction; import io.vertx.sqlclient.impl.PreparedStatementBase; import io.vertx.sqlclient.impl.TransactionImpl; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.PrepareStatementCommand; -import io.vertx.sqlclient.internal.command.QueryCommandBase; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; +import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import io.vertx.sqlclient.impl.pool.SqlConnectionPool; import io.vertx.sqlclient.impl.tracing.QueryReporter; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.Driver; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionInternal.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionInternal.java index bf2f1a7b4..7d6d48d23 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionInternal.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionInternal.java @@ -11,6 +11,7 @@ package io.vertx.sqlclient.internal; import io.vertx.sqlclient.SqlConnection; +import io.vertx.sqlclient.spi.connection.Connection; public interface SqlConnectionInternal extends SqlConnection { 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 fff9696e4..b01765f16 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 @@ -28,9 +28,6 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.internal.SqlConnectionBase; -import io.vertx.sqlclient.internal.SqlConnectionInternal; import java.util.function.Supplier; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java index a5474f1b1..b38aca92e 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java @@ -11,11 +11,12 @@ import io.vertx.sqlclient.PoolOptions; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.pool.CloseablePool; import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionInternal; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import java.util.function.Function; import java.util.function.Supplier; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/Connection.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/Connection.java similarity index 91% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/Connection.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/Connection.java index c77025948..d4e5e254c 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/Connection.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/Connection.java @@ -15,20 +15,19 @@ * */ -package io.vertx.sqlclient.internal; +package io.vertx.sqlclient.spi.connection; import io.vertx.core.Completable; -import io.vertx.core.Promise; import io.vertx.core.net.SocketAddress; import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.core.tracing.TracingPolicy; -import io.vertx.sqlclient.internal.command.CommandScheduler; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.protocol.CommandScheduler; /** * A connection capable of scheduling command execution. */ -public interface Connection extends CommandScheduler { +public interface Connection extends CommandScheduler { /** * @return {@code true} when {@code error} is an indeterminate data type reported when preparing a statement diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/ConnectionFactory.java similarity index 92% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/ConnectionFactory.java index 68f6167b5..17442c0e5 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/ConnectionFactory.java @@ -1,4 +1,4 @@ -package io.vertx.sqlclient.spi; +package io.vertx.sqlclient.spi.connection; import io.vertx.core.Closeable; import io.vertx.core.Context; @@ -6,7 +6,7 @@ import io.vertx.core.*; import io.vertx.core.internal.ContextInternal; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.Driver; /** * A connection factory, can be obtained from {@link Driver#createConnectionFactory} diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java new file mode 100644 index 000000000..afc3e7509 --- /dev/null +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java @@ -0,0 +1,18 @@ + +/* + * Copyright (c) 2011-2025 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 + * which is available at https://www.apache.org/licenses/LICENSE-2.0. + * + * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 + */ + +/** + *

The Connection Service Provider Interface (SPI).

+ * + *

This SPI is the contract between a {@link io.vertx.sqlclient.spi.GenericDriver} and a database backend.

+ */ +package io.vertx.sqlclient.spi.connection; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseConnectionCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseConnectionCommand.java similarity index 94% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseConnectionCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseConnectionCommand.java index 9cfa3606f..0892ba0f4 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseConnectionCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseConnectionCommand.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; public class CloseConnectionCommand extends CommandBase { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseCursorCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseCursorCommand.java similarity index 96% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseCursorCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseCursorCommand.java index f1f2bdee7..eb98b78df 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseCursorCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseCursorCommand.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.sqlclient.internal.PreparedStatement; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseStatementCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseStatementCommand.java similarity index 95% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseStatementCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseStatementCommand.java index 03eb2bcfa..114bb3d07 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CloseStatementCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CloseStatementCommand.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.sqlclient.internal.PreparedStatement; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CommandBase.java similarity index 94% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CommandBase.java index 181a485b7..a5e1fd4b4 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CommandBase.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; /** * @author Julien Viet diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandScheduler.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CommandScheduler.java similarity index 95% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandScheduler.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CommandScheduler.java index 2d6e7a1f0..72b5c7af5 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CommandScheduler.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CommandScheduler.java @@ -14,7 +14,7 @@ * limitations under the License. * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.core.Completable; import io.vertx.core.Future; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CompositeCommand.java similarity index 92% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CompositeCommand.java index 33f9fec65..ae3ab91ae 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/CompositeCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/CompositeCommand.java @@ -1,4 +1,4 @@ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.core.Completable; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/ExtendedQueryCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/ExtendedQueryCommand.java similarity index 99% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/ExtendedQueryCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/ExtendedQueryCommand.java index 245db6e0b..0fb139ee4 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/ExtendedQueryCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/ExtendedQueryCommand.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.sqlclient.PrepareOptions; import io.vertx.sqlclient.Row; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/InitCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/InitCommand.java similarity index 91% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/InitCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/InitCommand.java index 6f27d4bdd..71b22bf93 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/InitCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/InitCommand.java @@ -15,10 +15,9 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; -import io.vertx.sqlclient.internal.Connection; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.spi.connection.Connection; import java.util.Map; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/PrepareStatementCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/PrepareStatementCommand.java similarity index 97% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/PrepareStatementCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/PrepareStatementCommand.java index 0b2e8409e..03faaebab 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/PrepareStatementCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/PrepareStatementCommand.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.sqlclient.PrepareOptions; import io.vertx.sqlclient.internal.PreparedStatement; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/QueryCommandBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/QueryCommandBase.java similarity index 97% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/QueryCommandBase.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/QueryCommandBase.java index 491c13c71..9a02e4758 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/QueryCommandBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/QueryCommandBase.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.QueryResultHandler; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/SimpleQueryCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/SimpleQueryCommand.java similarity index 96% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/SimpleQueryCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/SimpleQueryCommand.java index ff224fbb4..655a9a3d0 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/SimpleQueryCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/SimpleQueryCommand.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.QueryResultHandler; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/TxCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/TxCommand.java similarity index 95% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/TxCommand.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/TxCommand.java index 5247e2915..e3802058e 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/command/TxCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/TxCommand.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.internal.command; +package io.vertx.sqlclient.spi.protocol; public class TxCommand extends CommandBase { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/package-info.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/package-info.java new file mode 100644 index 000000000..5d255d765 --- /dev/null +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/package-info.java @@ -0,0 +1,19 @@ + +/* + * Copyright (c) 2011-2025 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 + * which is available at https://www.apache.org/licenses/LICENSE-2.0. + * + * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 + */ + +/** + *

Defines the interaction protocol between the client and a database backend.

+ * + *

The client interacts with the backend with a set of commands modelling the interactions between a client + * and a database.

+ */ +package io.vertx.sqlclient.spi.protocol; diff --git a/vertx-sql-client/src/main/java/module-info.java b/vertx-sql-client/src/main/java/module-info.java index 3ba677853..ff27734b5 100644 --- a/vertx-sql-client/src/main/java/module-info.java +++ b/vertx-sql-client/src/main/java/module-info.java @@ -23,8 +23,7 @@ // Expose enough for implementing a client back-end on top of this API (e.g. vertx-jdbc-client) exports io.vertx.sqlclient.internal; - exports io.vertx.sqlclient.internal.command; - + // Expose impl to our own implementation, this actually would deserve to be in another module since it is not // related to the API or the internal API @@ -35,5 +34,7 @@ exports io.vertx.sqlclient.impl.cache to io.vertx.tests.sql.client, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2; exports io.vertx.sqlclient.impl.tracing to io.vertx.tests.sql.client; exports io.vertx.sqlclient.impl.pool; + exports io.vertx.sqlclient.spi.protocol; + exports io.vertx.sqlclient.spi.connection; } diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java index 12e375d84..6ecdd9b57 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java @@ -16,12 +16,12 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.desc.ColumnDescriptor; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.Connection; +import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.command.CommandBase; -import io.vertx.sqlclient.internal.command.SimpleQueryCommand; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.protocol.CommandBase; +import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.GenericDriver; import org.junit.Test; diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/tck/ConnectionTestBase.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/tck/ConnectionTestBase.java index 2f36423d0..bd23fa4fc 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/tck/ConnectionTestBase.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/tck/ConnectionTestBase.java @@ -17,7 +17,7 @@ import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.SqlConnection; import io.vertx.sqlclient.internal.SqlConnectionBase; -import io.vertx.sqlclient.spi.ConnectionFactory; +import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.DatabaseMetadata; import org.junit.After; import org.junit.Before; From 813c2768cb76d1520ee0d2acfb48f3cba5e4f97d Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 14:01:35 +0200 Subject: [PATCH 17/25] Various cleanups --- .../db2client/impl/DB2SocketConnection.java | 2 +- .../impl/MSSQLSocketConnection.java | 2 +- .../impl/MySQLSocketConnection.java | 2 +- .../impl/OracleJdbcConnection.java | 16 ++--- .../pgclient/impl/PgSocketConnection.java | 2 +- .../sqlclient/impl/SocketConnectionBase.java | 13 ++-- .../vertx/sqlclient/impl/pool/PoolImpl.java | 5 +- .../impl/pool/SqlConnectionPool.java | 21 ++++--- .../sqlclient/internal/PreparedStatement.java | 2 - .../sqlclient/internal/SqlConnectionBase.java | 11 ++-- .../sqlclient/spi/connection/Connection.java | 61 +++++++++++++------ .../spi/connection/ConnectionContext.java | 29 +++++++++ .../spi/backend/GenericDriverTest.java | 7 ++- 13 files changed, 113 insertions(+), 60 deletions(-) create mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/ConnectionContext.java diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index 1c02ec1ee..c3ff1f427 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -132,7 +132,7 @@ public String system() { } @Override - public DatabaseMetadata getDatabaseMetaData() { + public DatabaseMetadata databaseMetadata() { return connMetadata.getDbMetadata(); } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java index 0bf163709..0c9dfa3f9 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java @@ -196,7 +196,7 @@ public String system() { } @Override - public DatabaseMetadata getDatabaseMetaData() { + public DatabaseMetadata databaseMetadata() { return databaseMetadata; } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java index ec22cdb8d..35d114dbe 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java @@ -157,7 +157,7 @@ public String system() { } @Override - public DatabaseMetadata getDatabaseMetaData() { + public DatabaseMetadata databaseMetadata() { return metaData; } } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java index a8ffdacf5..697178872 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java @@ -22,6 +22,7 @@ import io.vertx.oracleclient.impl.commands.*; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; @@ -53,7 +54,7 @@ public class OracleJdbcConnection implements Connection { private final OracleConnectOptions options; @SuppressWarnings("rawtypes") private final ConcurrentMap cursors = new ConcurrentHashMap<>(); - private Holder holder; + private ConnectionContext holder; // Command pipeline state @SuppressWarnings("rawtypes") @@ -75,11 +76,6 @@ public ClientMetrics metrics() { return metrics; } - @Override - public int pipeliningLimit() { - return 1; - } - @Override public TracingPolicy tracingPolicy() { return options.getTracingPolicy(); @@ -106,8 +102,8 @@ public SocketAddress server() { } @Override - public void init(Holder holder) { - this.holder = holder; + public void init(ConnectionContext context) { + this.holder = context; } @Override @@ -126,12 +122,12 @@ public boolean isValid() { } @Override - public DatabaseMetadata getDatabaseMetaData() { + public DatabaseMetadata databaseMetadata() { return metadata; } @Override - public void close(Holder holder, Completable promise) { + public void close(ConnectionContext holder, Completable promise) { if (Vertx.currentContext() == context) { Future future; if (closePromise == null) { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index ecf8a1502..9cc521bd2 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -140,7 +140,7 @@ public int getSecretKey() { } @Override - public DatabaseMetadata getDatabaseMetaData() { + public DatabaseMetadata databaseMetadata() { return dbMetaData; } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java index 401b9b2e7..1092a0485 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java @@ -36,6 +36,7 @@ import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.spi.DatabaseMetadata; +import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; @@ -71,7 +72,7 @@ public enum Status { protected final PreparedStatementCache psCache; protected final ContextInternal context; private final Predicate preparedStatementCacheSqlFilter; - private Holder holder; + private ConnectionContext holder; private final int pipeliningLimit; // Command pipeline state @@ -128,11 +129,11 @@ public String user() { } @Override - public DatabaseMetadata getDatabaseMetaData() { + public DatabaseMetadata databaseMetadata() { return null; } - public Context context() { + public io.vertx.core.Context context() { return context; } @@ -168,7 +169,7 @@ public boolean isValid() { } @Override - public void init(Holder holder) { + public void init(ConnectionContext holder) { ContextInternal context = (ContextInternal) Vertx.currentContext(); if (context == null || context.nettyEventLoop() != this.context.nettyEventLoop()) { throw new IllegalStateException(); @@ -180,7 +181,7 @@ public void init(Holder holder) { } @Override - public void close(Holder holder, Completable promise) { + public void close(ConnectionContext holder, Completable promise) { if (Vertx.currentContext() == context) { Channel ch = socket.channelHandlerContext().channel(); if (status == Status.CONNECTED) { @@ -206,7 +207,7 @@ protected void doSchedule(CommandBase cmd, Completable handler) { if (handler == null) { throw new IllegalArgumentException(); } - Context context = Vertx.currentContext(); + io.vertx.core.Context context = Vertx.currentContext(); if (context != this.context) { throw new IllegalStateException(); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java index 4bb350050..803e2b8af 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/PoolImpl.java @@ -30,6 +30,7 @@ import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlClientBase; import io.vertx.sqlclient.internal.SqlConnectionInternal; +import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.Driver; @@ -99,7 +100,7 @@ private void initializeConnection(SqlConnectionPool.PooledConnection conn) { if (connectionInitializer != null) { ContextInternal current = vertx.getContext(); SqlConnectionInternal wrapper = connectionWrapper.wrap(current, conn.factory(), conn); - conn.init((Connection.Holder) wrapper); + conn.init((ConnectionContext) wrapper); current.dispatch(wrapper, connectionInitializer); } } @@ -148,7 +149,7 @@ public Future getConnection() { acquire(current, connectionTimeout, promise); return promise.future().map(conn -> { SqlConnectionInternal wrapper = connectionWrapper.wrap(current, conn.factory(), conn); - conn.init((Connection.Holder) wrapper); + conn.init((ConnectionContext) wrapper); return wrapper; }); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java index c6d648ecf..1f46c3c33 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/pool/SqlConnectionPool.java @@ -25,6 +25,7 @@ import io.vertx.core.internal.VertxInternal; import io.vertx.sqlclient.SqlConnectOptions; import io.vertx.sqlclient.spi.connection.Connection; +import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import io.vertx.sqlclient.impl.tracing.QueryReporter; @@ -297,12 +298,12 @@ public Future close() { return promise.future(); } - public class PooledConnection implements Connection, Connection.Holder { + public class PooledConnection implements Connection, ConnectionContext { private final ConnectionFactory factory; private final Connection conn; private final PoolConnector.Listener listener; - private Holder holder; + private ConnectionContext holder; private Promise> poolCallback; private Lease lease; public long idleEvictionTimestamp; @@ -366,8 +367,8 @@ public int pipeliningLimit() { } @Override - public DatabaseMetadata getDatabaseMetaData() { - return conn.getDatabaseMetaData(); + public DatabaseMetadata databaseMetadata() { + return conn.databaseMetadata(); } @Override @@ -405,19 +406,19 @@ private void refresh() { } @Override - public void init(Holder holder) { + public void init(ConnectionContext context) { if (this.holder != null) { throw new IllegalStateException(); } - this.holder = holder; + this.holder = context; } @Override - public void close(Holder holder, Completable promise) { + public void close(ConnectionContext holder, Completable promise) { doClose(holder, promise); } - private void doClose(Holder holder, Completable promise) { + private void doClose(ConnectionContext holder, Completable promise) { if (holder != this.holder) { String msg; if (this.holder == null) { @@ -473,9 +474,9 @@ public void handleEvent(Object event) { } @Override - public void handleException(Throwable err) { + public void handleException(Throwable failure) { if (holder != null) { - holder.handleException(err); + holder.handleException(failure); } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java index 55591917f..d7b991178 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java @@ -17,8 +17,6 @@ package io.vertx.sqlclient.internal; -import io.vertx.sqlclient.Tuple; - import java.util.ArrayList; import java.util.List; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java index 99577f8e4..6a35f5269 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlConnectionBase.java @@ -28,6 +28,7 @@ import io.vertx.sqlclient.Transaction; import io.vertx.sqlclient.impl.PreparedStatementBase; import io.vertx.sqlclient.impl.TransactionImpl; +import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; @@ -41,7 +42,7 @@ /** * @author Julien Viet */ -public class SqlConnectionBase> extends SqlClientBase implements SqlConnectionInternal, Closeable, Connection.Holder { +public class SqlConnectionBase> extends SqlClientBase implements SqlConnectionInternal, Closeable, ConnectionContext { private volatile Handler exceptionHandler; private volatile Handler closeHandler; @@ -139,12 +140,12 @@ public void schedule(CommandBase cmd, Completable handler) { } @Override - public void handleException(Throwable err) { + public void handleException(Throwable failure) { Handler handler = exceptionHandler; if (handler != null) { - context.emit(err, handler); + context.emit(failure, handler); } else { - err.printStackTrace(); + failure.printStackTrace(); } } @@ -155,7 +156,7 @@ public boolean isSSL() { @Override public DatabaseMetadata databaseMetadata() { - return conn.getDatabaseMetaData(); + return conn.databaseMetadata(); } @Override diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/Connection.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/Connection.java index d4e5e254c..254f7b67b 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/Connection.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/Connection.java @@ -25,7 +25,7 @@ import io.vertx.sqlclient.spi.protocol.CommandScheduler; /** - * A connection capable of scheduling command execution. + * A connection capable of scheduling commands. */ public interface Connection extends CommandScheduler { @@ -36,45 +36,70 @@ default boolean isIndeterminatePreparedStatementError(Throwable error) { return false; } + /** + * @return The connection tracing policy + */ TracingPolicy tracingPolicy(); + /** + * @return The connection client metrics + */ + ClientMetrics metrics(); + + /** + * @return the known server address + */ SocketAddress server(); + /** + * @return a database specific discriminant / identifier + */ default String system() { return "other_sql"; } + /** + * @return the database name + */ String database(); + /** + * @return the database user + */ String user(); - ClientMetrics metrics(); + /** + * Initialize the connection with the context for its usage. + * + * @param context the context + */ + void init(ConnectionContext context); - void init(Holder holder); + void close(ConnectionContext holder, Completable promise); + /** + * @return whether the underlying transport uses TLS + */ boolean isSsl(); + /** + * @return whether the connection is valid + */ boolean isValid(); - int pipeliningLimit(); - - DatabaseMetadata getDatabaseMetaData(); - - void close(Holder holder, Completable promise); - /** - * The connection holder that handles connection interactions with the outer world, e.g. handling an event. + * @return the connection pipelining limit, that is how many queries can be scheduled on this connection + * @implNote returns {@literal 1}, the connection does not support pipelining */ - interface Holder { - - void handleEvent(Object event); - - void handleClosed(); - - void handleException(Throwable err); - + default int pipeliningLimit() { + return 1; } + /** + * @return the metadata + */ + DatabaseMetadata databaseMetadata(); + /** * @return the most unwrapped connection (e.g. for pooled connections) */ diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/ConnectionContext.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/ConnectionContext.java new file mode 100644 index 000000000..0aa5cc4dd --- /dev/null +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/ConnectionContext.java @@ -0,0 +1,29 @@ +package io.vertx.sqlclient.spi.connection; + +/** + *

The connection context that handles connection interactions with the outer world, e.g. handling an event.

+ * + *

The connection context allows a connection to signal inner changes to its context (the client state machine).

+ */ +public interface ConnectionContext { + + /** + * Signals a generic database event. + * + * @param event the event. + */ + void handleEvent(Object event); + + /** + * Signals the connection is closed. + */ + void handleClosed(); + + /** + * Signals a failure. + * + * @param failure the failure + */ + void handleException(Throwable failure); + +} diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java index 6ecdd9b57..583054e00 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java @@ -19,6 +19,7 @@ import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import io.vertx.sqlclient.spi.connection.ConnectionFactory; @@ -95,7 +96,7 @@ public ClientMetrics metrics() { return null; } @Override - public void init(Holder holder) { + public void init(ConnectionContext context) { } @Override public boolean isSsl() { @@ -110,11 +111,11 @@ public int pipeliningLimit() { return 1; } @Override - public DatabaseMetadata getDatabaseMetaData() { + public DatabaseMetadata databaseMetadata() { throw new UnsupportedOperationException(); } @Override - public void close(Holder holder, Completable promise) { + public void close(ConnectionContext holder, Completable promise) { promise.succeed(); } @Override From 9f67c06cf7e4dc2ce7fb4d98377db07db7de43de Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 15:42:14 +0200 Subject: [PATCH 18/25] Isolate SocketConnectionBase in a package --- .../java/io/vertx/db2client/impl/DB2SocketConnection.java | 4 ++-- .../vertx/db2client/impl/codec/CloseCursorCommandCodec.java | 2 +- .../db2client/impl/codec/CloseStatementCommandCodec.java | 2 +- .../main/java/io/vertx/db2client/impl/codec/CommandCodec.java | 4 ++-- .../main/java/io/vertx/db2client/impl/codec/DB2Decoder.java | 2 +- .../main/java/io/vertx/db2client/impl/codec/DB2Encoder.java | 2 +- .../db2client/impl/codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../db2client/impl/codec/ExtendedQueryCommandBaseCodec.java | 2 +- .../vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../db2client/impl/codec/InitialHandshakeCommandCodec.java | 2 +- .../java/io/vertx/db2client/impl/codec/PingCommandCodec.java | 2 +- .../io/vertx/db2client/impl/codec/PrepareStatementCodec.java | 2 +- .../vertx/db2client/impl/codec/SimpleQueryCommandCodec.java | 2 +- .../vertx/db2client/impl/command/InitialHandshakeCommand.java | 2 +- .../java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java | 2 +- .../java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java | 4 ++-- .../vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java | 2 +- .../mssqlclient/impl/codec/CloseStatementCommandCodec.java | 2 +- .../impl/codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java | 4 ++-- .../io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java | 2 +- .../vertx/mssqlclient/impl/codec/PrepareStatementCodec.java | 2 +- .../io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java | 2 +- vertx-mysql-client/src/main/asciidoc/index.adoc | 2 +- .../java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java | 4 ++-- .../impl/codec/AuthenticationCommandBaseCodec.java | 2 +- .../vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java | 2 +- .../mysqlclient/impl/codec/CloseStatementCommandCodec.java | 2 +- .../java/io/vertx/mysqlclient/impl/codec/CommandCodec.java | 4 ++-- .../impl/codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../mysqlclient/impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../mysqlclient/impl/codec/InitialHandshakeCommandCodec.java | 2 +- .../java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java | 2 +- .../io/vertx/mysqlclient/impl/codec/PingCommandCodec.java | 2 +- .../vertx/mysqlclient/impl/codec/PrepareStatementCodec.java | 2 +- .../vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java | 2 +- .../vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java | 2 +- .../mysqlclient/impl/command/InitialHandshakeCommand.java | 2 +- .../main/java/io/vertx/pgclient/impl/InitiateSslHandler.java | 2 +- .../main/java/io/vertx/pgclient/impl/PgConnectionImpl.java | 2 +- .../main/java/io/vertx/pgclient/impl/PgSocketConnection.java | 4 ++-- .../vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java | 4 ++-- .../java/io/vertx/pgclient/impl/codec/InitCommandCodec.java | 2 +- .../java/io/vertx/pgclient/impl/codec/PgCommandCodec.java | 4 ++-- .../src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java | 2 +- .../vertx/sqlclient/impl/{ => connection}/CommandMessage.java | 2 +- .../sqlclient/impl/{ => connection}/CommandResponse.java | 2 +- .../{codec => connection}/InvalidCachedStatementEvent.java | 2 +- .../vertx/sqlclient/impl/{cache => connection}/LruCache.java | 2 +- .../impl/{cache => connection}/PreparedStatementCache.java | 2 +- .../sqlclient/impl/{ => connection}/SocketConnectionBase.java | 4 +--- vertx-sql-client/src/main/java/module-info.java | 2 +- .../src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java | 2 +- 53 files changed, 62 insertions(+), 64 deletions(-) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/{ => connection}/CommandMessage.java (96%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/{ => connection}/CommandResponse.java (96%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/{codec => connection}/InvalidCachedStatementEvent.java (87%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/{cache => connection}/LruCache.java (97%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/{cache => connection}/PreparedStatementCache.java (97%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/{ => connection}/SocketConnectionBase.java (98%) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index c3ff1f427..bc33a952d 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -31,11 +31,11 @@ import io.vertx.db2client.impl.command.InitialHandshakeCommand; import io.vertx.db2client.impl.drda.ConnectionMetaData; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java index 06afa754a..7183d80a6 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java @@ -22,7 +22,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class CloseCursorCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java index 9d06df866..bf9ec0576 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java @@ -17,7 +17,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java index 528916fd6..aced4d335 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java @@ -19,12 +19,12 @@ import io.vertx.core.Handler; import io.vertx.db2client.impl.command.InitialHandshakeCommand; import io.vertx.db2client.impl.command.PingCommand; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java index f2ca19a1f..0d0ed2947 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java @@ -25,7 +25,7 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.DB2Exception; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class DB2Decoder extends ByteToMessageDecoder { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java index 43c592211..ac6e32246 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java @@ -24,7 +24,7 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.impl.DB2SocketConnection; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class DB2Encoder extends ChannelOutboundHandlerAdapter { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java index 4bdffb9ed..fc05bd16c 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -28,7 +28,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java index 56ca20767..04d159f7b 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -27,7 +27,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.data.Numeric; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; abstract class ExtendedQueryCommandBaseCodec> diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java index 03ab52eea..a85a8bbd2 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.vertx.db2client.impl.codec.DB2PreparedStatement.QueryInstance; import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java index f25320a5c..0e3f29880 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java @@ -26,7 +26,7 @@ import io.vertx.db2client.impl.drda.SQLState; import io.vertx.db2client.impl.drda.SqlCode; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; /** * InitialHandshakeCommandCodec encodes the packets to get a connection from the database. diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java index 3e5cb155b..26a172762 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java @@ -22,7 +22,7 @@ import io.vertx.db2client.impl.drda.DRDAConnectResponse; import io.vertx.db2client.impl.drda.DRDAConstants; import io.vertx.db2client.impl.drda.ConnectionMetaData; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class PingCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java index 45d628a15..fa85b17b7 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java @@ -23,7 +23,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; class PrepareStatementCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java index 8fd643097..51671e417 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java @@ -23,7 +23,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; class SimpleQueryCommandCodec extends QueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java index 5847c710d..cdcf9bacb 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java @@ -18,7 +18,7 @@ import java.util.Map; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; public class InitialHandshakeCommand extends AuthenticationCommandBase { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java index d3baa014a..421ac9c23 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java @@ -21,7 +21,7 @@ import io.vertx.mssqlclient.MSSQLInfo; import io.vertx.mssqlclient.spi.MSSQLDriver; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionBase; import io.vertx.sqlclient.spi.connection.ConnectionFactory; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java index 0c9dfa3f9..7fc072d9e 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java @@ -36,11 +36,11 @@ import io.vertx.mssqlclient.impl.codec.TdsSslHandshakeCodec; import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java index 1815d0f48..be9f5e6db 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java index ce12cb1bc..c14f3dba3 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 3bcfd5e80..c2849d2d2 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import java.util.List; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index 21a7acf14..8d47b0a4b 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -17,12 +17,12 @@ import io.vertx.mssqlclient.MSSQLException; import io.vertx.mssqlclient.MSSQLInfo; import io.vertx.mssqlclient.impl.command.PreLoginCommand; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.InitCommand; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java index 65cffef58..3a76031d6 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java @@ -15,7 +15,7 @@ import io.vertx.mssqlclient.impl.MSSQLDatabaseMetadata; import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.mssqlclient.impl.command.PreLoginResponse; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import static io.vertx.mssqlclient.impl.codec.EncryptionLevel.ENCRYPT_OFF; import static io.vertx.mssqlclient.impl.codec.EncryptionLevel.ENCRYPT_ON; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java index 30130bc98..be08761a1 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; class PrepareStatementCodec extends MSSQLCommandCodec { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java index ca6dbeb8a..a4cd1e637 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java @@ -15,7 +15,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.vertx.core.Completable; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; public class TdsMessageDecoder extends ChannelInboundHandlerAdapter { diff --git a/vertx-mysql-client/src/main/asciidoc/index.adoc b/vertx-mysql-client/src/main/asciidoc/index.adoc index 4c577040c..401b3a9f5 100644 --- a/vertx-mysql-client/src/main/asciidoc/index.adoc +++ b/vertx-mysql-client/src/main/asciidoc/index.adoc @@ -244,7 +244,7 @@ Currently, the client supports the following parameter keys (case-insensitive): * `user` * `password` * `schema` -* `socket` +* `connection` * `useAffectedRows` NOTE: Configuring parameters in connection URI will override the default properties. diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java index 35d114dbe..c30a89b67 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java @@ -36,11 +36,11 @@ import io.vertx.mysqlclient.impl.codec.MySQLPreparedStatement; import io.vertx.mysqlclient.impl.command.InitialHandshakeCommand; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java index fae383abf..e860d8c31 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java @@ -16,7 +16,7 @@ import io.vertx.mysqlclient.impl.command.AuthenticationCommandBase; import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.mysqlclient.impl.util.RsaPublicKeyEncryptor; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Arrays; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java index 9433fbecd..d08ec0bba 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java @@ -18,7 +18,7 @@ import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.mysqlclient.impl.util.CachingSha2Authenticator; import io.vertx.mysqlclient.impl.util.Native41Authenticator; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java index 725ab3a23..813e494af 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 5; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java index eeddb599a..e4073d641 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java @@ -30,12 +30,12 @@ import io.vertx.mysqlclient.impl.protocol.CapabilitiesFlag; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.util.BufferUtils; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index e1d791df7..085a2c190 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -17,7 +17,7 @@ import io.vertx.mysqlclient.MySQLException; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import java.util.BitSet; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java index 0ffc90c2c..c32fb4a66 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java index 7b6f44a78..0d566db00 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java @@ -28,7 +28,7 @@ import io.vertx.mysqlclient.impl.util.CachingSha2Authenticator; import io.vertx.mysqlclient.impl.util.Native41Authenticator; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java index 8d1490c18..a40feaf42 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java @@ -16,7 +16,7 @@ import io.netty.channel.ChannelPromise; import io.vertx.core.Completable; import io.vertx.mysqlclient.impl.MySQLSocketConnection; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import java.nio.charset.Charset; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java index 0b5a9c63b..c84531704 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.command.PingCommand; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class PingCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 1; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java index dc22475ea..76a350bf1 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java @@ -23,7 +23,7 @@ import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java index 2dde695bd..ba3f0a61c 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java @@ -24,7 +24,7 @@ import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java index 42d482010..56f3e9997 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.command.StatisticsCommand; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; class StatisticsCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 1; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java index 68b40ebd9..444940da5 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java @@ -17,7 +17,7 @@ import io.vertx.mysqlclient.SslMode; import io.vertx.mysqlclient.impl.MySQLCollation; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import java.nio.charset.Charset; import java.util.Map; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java index 1f6795339..ee2b8b0f2 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java @@ -25,7 +25,7 @@ import io.vertx.core.Promise; import io.vertx.core.net.ClientSSLOptions; import io.vertx.pgclient.impl.codec.PgProtocolConstants; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.core.VertxException; public class InitiateSslHandler extends ChannelInboundHandlerAdapter { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java index 6b9f4044b..92a6aa539 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java @@ -30,7 +30,7 @@ import io.vertx.pgclient.spi.PgDriver; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.Notification; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionBase; public class PgConnectionImpl extends SqlConnectionBase implements PgConnection { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index 9cc521bd2..e67382c11 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -32,12 +32,12 @@ import io.vertx.pgclient.impl.codec.PgCodec; import io.vertx.pgclient.impl.codec.PgCommandCodec; import io.vertx.pgclient.impl.codec.TxFailedEvent; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.SocketConnectionBase; +import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java index 1c285bb97..deed3de46 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java @@ -18,9 +18,9 @@ import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.codec.InvalidCachedStatementEvent; +import io.vertx.sqlclient.impl.connection.InvalidCachedStatementEvent; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedQueryCommandCodec> extends QueryCommandBaseCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java index cbb170c10..d525e2f14 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java @@ -26,7 +26,7 @@ import io.vertx.pgclient.impl.auth.scram.ScramAuthentication; import io.vertx.pgclient.impl.auth.scram.ScramSession; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.InitCommand; class InitCommandCodec extends PgCommandCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java index 7b20d0491..5204e8dee 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java @@ -20,12 +20,12 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.pgclient.PgException; -import io.vertx.sqlclient.impl.CommandMessage; +import io.vertx.sqlclient.impl.connection.CommandMessage; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.InitCommand; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java index 14e913176..7ef555ffe 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java @@ -26,7 +26,7 @@ import io.vertx.core.Completable; import io.vertx.pgclient.impl.util.Util; import io.vertx.sqlclient.impl.Notification; -import io.vertx.sqlclient.impl.CommandResponse; +import io.vertx.sqlclient.impl.connection.CommandResponse; /** * diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandMessage.java similarity index 96% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandMessage.java index 03ef3c331..0a04ecb7e 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandMessage.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandMessage.java @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl; +package io.vertx.sqlclient.impl.connection; import io.vertx.core.AsyncResult; import io.vertx.core.Completable; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandResponse.java similarity index 96% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandResponse.java index 3a2902f68..8f4ffadbf 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CommandResponse.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandResponse.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl; +package io.vertx.sqlclient.impl.connection; import io.vertx.core.Completable; import io.vertx.core.Future; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/codec/InvalidCachedStatementEvent.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/InvalidCachedStatementEvent.java similarity index 87% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/codec/InvalidCachedStatementEvent.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/InvalidCachedStatementEvent.java index 711476d7d..97c78bb02 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/codec/InvalidCachedStatementEvent.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/InvalidCachedStatementEvent.java @@ -1,4 +1,4 @@ -package io.vertx.sqlclient.impl.codec; +package io.vertx.sqlclient.impl.connection; /** * An event signals when a cached prepared statement is invalid and needs to be evicted from the cache. diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/cache/LruCache.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/LruCache.java similarity index 97% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/cache/LruCache.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/LruCache.java index a8183ccd9..6f2469095 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/cache/LruCache.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/LruCache.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl.cache; +package io.vertx.sqlclient.impl.connection; import java.util.*; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/cache/PreparedStatementCache.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/PreparedStatementCache.java similarity index 97% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/cache/PreparedStatementCache.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/PreparedStatementCache.java index 445b224b1..6b334798b 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/cache/PreparedStatementCache.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/PreparedStatementCache.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl.cache; +package io.vertx.sqlclient.impl.connection; import io.vertx.sqlclient.internal.PreparedStatement; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/SocketConnectionBase.java similarity index 98% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/SocketConnectionBase.java index 1092a0485..217dd1d9e 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SocketConnectionBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/SocketConnectionBase.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.impl; +package io.vertx.sqlclient.impl.connection; import io.netty.channel.Channel; import io.netty.channel.ChannelFutureListener; @@ -31,8 +31,6 @@ import io.vertx.core.internal.net.NetSocketInternal; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.impl.cache.PreparedStatementCache; -import io.vertx.sqlclient.impl.codec.InvalidCachedStatementEvent; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.spi.DatabaseMetadata; diff --git a/vertx-sql-client/src/main/java/module-info.java b/vertx-sql-client/src/main/java/module-info.java index ff27734b5..a9c9c0974 100644 --- a/vertx-sql-client/src/main/java/module-info.java +++ b/vertx-sql-client/src/main/java/module-info.java @@ -30,8 +30,8 @@ exports io.vertx.sqlclient.impl to io.vertx.tests.sql.client, io.vertx.tests.sql.client.pg, io.vertx.tests.sql.client.mysql, io.vertx.tests.sql.client.templates, io.vertx.sql.client.pg, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2, io.vertx.sql.client.oracle, io.vertx.sql.client.templates; + exports io.vertx.sqlclient.impl.connection to io.vertx.sql.client.db2, io.vertx.sql.client.mssql, io.vertx.sql.client.mysql, io.vertx.sql.client.oracle, io.vertx.sql.client.pg, io.vertx.sql.client.templates, io.vertx.tests.sql.client, io.vertx.tests.sql.client.mysql, io.vertx.tests.sql.client.pg, io.vertx.tests.sql.client.templates; exports io.vertx.sqlclient.impl.codec to io.vertx.sql.client.pg, io.vertx.tests.sql.client.pg, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2; - exports io.vertx.sqlclient.impl.cache to io.vertx.tests.sql.client, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2; exports io.vertx.sqlclient.impl.tracing to io.vertx.tests.sql.client; exports io.vertx.sqlclient.impl.pool; exports io.vertx.sqlclient.spi.protocol; diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java index 314dc37b6..9e79ec3de 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java @@ -1,6 +1,6 @@ package io.vertx.tests.sqlclient; -import io.vertx.sqlclient.impl.cache.LruCache; +import io.vertx.sqlclient.impl.connection.LruCache; import org.junit.Test; import java.util.List; From 4ac19906508d23f3b65259e6ceb8c38e4c2a9177 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 16:33:22 +0200 Subject: [PATCH 19/25] Extract the socket/codec classes in its own module. Motivation: The vertx-sql-client component defines among all the base framework for Vert.x/Netty based implementations (e.g. PG client). This module intents to define the SQL client API as well as the SPI, there are implementations that do not use the Vert.x/Netty such as JDBC client or Oracle client. This extracts the Vert.x/Netty part into its own io.vertx.sql.client.codec module ensuring strong decoupling between with io.vertx.sql.client module. This new module intents to remain quite internal and is not an API usable from Vert.x by most users. --- pom.xml | 22 ++++++++- vertx-db2-client/pom.xml | 4 ++ .../db2client/impl/DB2SocketConnection.java | 4 +- .../impl/codec/CloseCursorCommandCodec.java | 2 +- .../codec/CloseStatementCommandCodec.java | 2 +- .../db2client/impl/codec/CommandCodec.java | 4 +- .../db2client/impl/codec/DB2Decoder.java | 2 +- .../db2client/impl/codec/DB2Encoder.java | 2 +- .../codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../codec/ExtendedQueryCommandBaseCodec.java | 2 +- .../impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../codec/InitialHandshakeCommandCodec.java | 2 +- .../impl/codec/PingCommandCodec.java | 2 +- .../impl/codec/PrepareStatementCodec.java | 2 +- .../impl/codec/SimpleQueryCommandCodec.java | 2 +- .../impl/command/InitialHandshakeCommand.java | 2 +- .../src/main/java/module-info.java | 1 + vertx-mssql-client/pom.xml | 5 +- .../mssqlclient/impl/MSSQLConnectionImpl.java | 2 +- .../impl/MSSQLSocketConnection.java | 4 +- .../impl/codec/CloseCursorCommandCodec.java | 2 +- .../codec/CloseStatementCommandCodec.java | 2 +- .../codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../impl/codec/MSSQLCommandCodec.java | 4 +- .../impl/codec/PreLoginCommandCodec.java | 2 +- .../impl/codec/PrepareStatementCodec.java | 2 +- .../impl/codec/TdsMessageDecoder.java | 2 +- .../src/main/java/module-info.java | 1 + vertx-mysql-client/pom.xml | 4 ++ .../impl/MySQLSocketConnection.java | 10 +--- .../codec/AuthenticationCommandBaseCodec.java | 2 +- .../impl/codec/ChangeUserCommandCodec.java | 2 +- .../codec/CloseStatementCommandCodec.java | 2 +- .../mysqlclient/impl/codec/CommandCodec.java | 4 +- .../codec/ExtendedBatchQueryCommandCodec.java | 2 +- .../impl/codec/ExtendedQueryCommandCodec.java | 2 +- .../codec/InitialHandshakeCommandCodec.java | 2 +- .../mysqlclient/impl/codec/MySQLEncoder.java | 2 +- .../impl/codec/PingCommandCodec.java | 2 +- .../impl/codec/PrepareStatementCodec.java | 2 +- .../impl/codec/QueryCommandBaseCodec.java | 2 +- .../impl/codec/StatisticsCommandCodec.java | 2 +- .../impl/command/InitialHandshakeCommand.java | 2 +- .../src/main/java/module-info.java | 1 + vertx-pg-client/pom.xml | 4 ++ .../pgclient/impl/InitiateSslHandler.java | 2 +- .../vertx/pgclient/impl/PgConnectionImpl.java | 2 +- .../pgclient/impl/PgSocketConnection.java | 4 +- .../impl/codec/ExtendedQueryCommandCodec.java | 4 +- .../pgclient/impl/codec/InitCommandCodec.java | 2 +- .../pgclient/impl/codec/PgCommandCodec.java | 4 +- .../vertx/pgclient/impl/codec/PgDecoder.java | 2 +- .../src/main/java/module-info.java | 1 + vertx-sql-client-codec/pom.xml | 49 +++++++++++++++++++ .../src/main/asciidoc/index.adoc | 0 .../sqlclient/codec}/CommandMessage.java | 2 +- .../sqlclient/codec}/CommandResponse.java | 2 +- .../codec}/InvalidCachedStatementEvent.java | 3 +- .../codec}/SocketConnectionBase.java | 9 +++- .../vertx/sqlclient/codec/impl}/LruCache.java | 2 +- .../codec/impl}/PreparedStatementCache.java | 2 +- .../src/main/java/module-info.java | 16 ++++++ .../tests/sqlclient/codec}/LruCacheTest.java | 4 +- .../src/test/java/module-info.java | 11 +++++ .../src/main/java/module-info.java | 1 - 65 files changed, 186 insertions(+), 70 deletions(-) create mode 100644 vertx-sql-client-codec/pom.xml create mode 100644 vertx-sql-client-codec/src/main/asciidoc/index.adoc rename {vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection => vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec}/CommandMessage.java (96%) rename {vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection => vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec}/CommandResponse.java (96%) rename {vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection => vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec}/InvalidCachedStatementEvent.java (87%) rename {vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection => vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec}/SocketConnectionBase.java (98%) rename {vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection => vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl}/LruCache.java (97%) rename {vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection => vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl}/PreparedStatementCache.java (97%) create mode 100644 vertx-sql-client-codec/src/main/java/module-info.java rename {vertx-sql-client/src/test/java/io/vertx/tests/sqlclient => vertx-sql-client-codec/src/test/java/io/vertx/tests/sqlclient/codec}/LruCacheTest.java (93%) create mode 100644 vertx-sql-client-codec/src/test/java/module-info.java diff --git a/pom.xml b/pom.xml index 28f04de4c..2499abce4 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,13 @@ pom import + + + + io.vertx + vertx-sql-client-codec + ${project.version} + @@ -184,6 +191,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-pg-client vertx-mysql-client vertx-mssql-client @@ -199,6 +207,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-pg-client @@ -209,6 +218,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-pg-client @@ -219,6 +229,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-pg-client @@ -230,6 +241,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-mysql-client @@ -241,6 +253,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-mysql-client @@ -252,6 +265,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-mysql-client @@ -263,6 +277,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-mysql-client @@ -273,6 +288,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-mssql-client @@ -283,6 +299,7 @@ vertx-sql-client + vertx-sql-client-codec vertx-mssql-client @@ -290,6 +307,7 @@ DB2-11.5 vertx-sql-client + vertx-sql-client-codec vertx-db2-client @@ -297,6 +315,7 @@ SQL-templates vertx-sql-client + vertx-sql-client-codec vertx-pg-client vertx-mysql-client vertx-sql-client-templates @@ -309,9 +328,10 @@ vertx-sql-client + vertx-sql-client-codec vertx-oracle-client - \ No newline at end of file + diff --git a/vertx-db2-client/pom.xml b/vertx-db2-client/pom.xml index b33bf5cb2..3486c5d96 100644 --- a/vertx-db2-client/pom.xml +++ b/vertx-db2-client/pom.xml @@ -47,6 +47,10 @@ io.vertx vertx-sql-client + + io.vertx + vertx-sql-client-codec + diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java index bc33a952d..3b4729183 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java @@ -31,11 +31,11 @@ import io.vertx.db2client.impl.command.InitialHandshakeCommand; import io.vertx.db2client.impl.drda.ConnectionMetaData; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java index 7183d80a6..184d85936 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseCursorCommandCodec.java @@ -22,7 +22,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class CloseCursorCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java index bf9ec0576..199dd7bde 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CloseStatementCommandCodec.java @@ -17,7 +17,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java index aced4d335..b966a6115 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/CommandCodec.java @@ -19,12 +19,12 @@ import io.vertx.core.Handler; import io.vertx.db2client.impl.command.InitialHandshakeCommand; import io.vertx.db2client.impl.command.PingCommand; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java index 0d0ed2947..39c81a9f1 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Decoder.java @@ -25,7 +25,7 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.DB2Exception; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class DB2Decoder extends ByteToMessageDecoder { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java index ac6e32246..0778f926d 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2Encoder.java @@ -24,7 +24,7 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.impl.DB2SocketConnection; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class DB2Encoder extends ChannelOutboundHandlerAdapter { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java index fc05bd16c..ebd2b8ea8 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -28,7 +28,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java index 04d159f7b..175578375 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -27,7 +27,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.data.Numeric; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; abstract class ExtendedQueryCommandBaseCodec> diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java index a85a8bbd2..d49bf773b 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.vertx.db2client.impl.codec.DB2PreparedStatement.QueryInstance; import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java index 0e3f29880..7b7882c4b 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/InitialHandshakeCommandCodec.java @@ -26,7 +26,7 @@ import io.vertx.db2client.impl.drda.SQLState; import io.vertx.db2client.impl.drda.SqlCode; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; /** * InitialHandshakeCommandCodec encodes the packets to get a connection from the database. diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java index 26a172762..ad9da6cba 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PingCommandCodec.java @@ -22,7 +22,7 @@ import io.vertx.db2client.impl.drda.DRDAConnectResponse; import io.vertx.db2client.impl.drda.DRDAConstants; import io.vertx.db2client.impl.drda.ConnectionMetaData; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class PingCommandCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java index fa85b17b7..cad92bd3c 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java @@ -23,7 +23,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; class PrepareStatementCodec extends CommandCodec { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java index 51671e417..fa03666a0 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java @@ -23,7 +23,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; class SimpleQueryCommandCodec extends QueryCommandBaseCodec> { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java index cdcf9bacb..23196d676 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/command/InitialHandshakeCommand.java @@ -18,7 +18,7 @@ import java.util.Map; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; public class InitialHandshakeCommand extends AuthenticationCommandBase { diff --git a/vertx-db2-client/src/main/java/module-info.java b/vertx-db2-client/src/main/java/module-info.java index 8a111b09d..bac0a77fe 100644 --- a/vertx-db2-client/src/main/java/module-info.java +++ b/vertx-db2-client/src/main/java/module-info.java @@ -6,6 +6,7 @@ requires io.netty.handler; requires io.netty.transport; requires io.vertx.sql.client; + requires io.vertx.sql.client.codec; requires io.vertx.core; requires io.vertx.core.logging; requires java.sql; diff --git a/vertx-mssql-client/pom.xml b/vertx-mssql-client/pom.xml index 2d4b3940d..058564dfe 100644 --- a/vertx-mssql-client/pom.xml +++ b/vertx-mssql-client/pom.xml @@ -30,7 +30,10 @@ io.vertx vertx-sql-client - ${project.version} + + + io.vertx + vertx-sql-client-codec diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java index 421ac9c23..a255e3dba 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java @@ -21,7 +21,7 @@ import io.vertx.mssqlclient.MSSQLInfo; import io.vertx.mssqlclient.spi.MSSQLDriver; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionBase; import io.vertx.sqlclient.spi.connection.ConnectionFactory; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java index 7fc072d9e..4294805a6 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java @@ -36,11 +36,11 @@ import io.vertx.mssqlclient.impl.codec.TdsSslHandshakeCodec; import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java index be9f5e6db..4e23a1323 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseCursorCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java index c14f3dba3..63a28bdf1 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CloseStatementCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; import static io.vertx.mssqlclient.impl.codec.MessageType.RPC; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index c2849d2d2..262b52a20 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import java.util.List; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index 8d47b0a4b..27f31c1ca 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -17,12 +17,12 @@ import io.vertx.mssqlclient.MSSQLException; import io.vertx.mssqlclient.MSSQLInfo; import io.vertx.mssqlclient.impl.command.PreLoginCommand; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.InitCommand; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java index 3a76031d6..00158f50d 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PreLoginCommandCodec.java @@ -15,7 +15,7 @@ import io.vertx.mssqlclient.impl.MSSQLDatabaseMetadata; import io.vertx.mssqlclient.impl.command.PreLoginCommand; import io.vertx.mssqlclient.impl.command.PreLoginResponse; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import static io.vertx.mssqlclient.impl.codec.EncryptionLevel.ENCRYPT_OFF; import static io.vertx.mssqlclient.impl.codec.EncryptionLevel.ENCRYPT_ON; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java index be08761a1..73e7365ff 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/PrepareStatementCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; class PrepareStatementCodec extends MSSQLCommandCodec { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java index a4cd1e637..b34eb02f5 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/TdsMessageDecoder.java @@ -15,7 +15,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.vertx.core.Completable; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; public class TdsMessageDecoder extends ChannelInboundHandlerAdapter { diff --git a/vertx-mssql-client/src/main/java/module-info.java b/vertx-mssql-client/src/main/java/module-info.java index 1e9f6e193..6fa20b559 100644 --- a/vertx-mssql-client/src/main/java/module-info.java +++ b/vertx-mssql-client/src/main/java/module-info.java @@ -6,6 +6,7 @@ requires io.netty.handler; requires io.netty.transport; requires io.vertx.sql.client; + requires io.vertx.sql.client.codec; requires io.vertx.core; requires io.vertx.core.logging; requires java.sql; diff --git a/vertx-mysql-client/pom.xml b/vertx-mysql-client/pom.xml index 0bf587ac0..6fda3f33a 100644 --- a/vertx-mysql-client/pom.xml +++ b/vertx-mysql-client/pom.xml @@ -46,6 +46,10 @@ io.vertx vertx-sql-client + + io.vertx + vertx-sql-client-codec + diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java index c30a89b67..3d96849ae 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java @@ -36,11 +36,11 @@ import io.vertx.mysqlclient.impl.codec.MySQLPreparedStatement; import io.vertx.mysqlclient.impl.command.InitialHandshakeCommand; import io.vertx.sqlclient.SqlConnectOptions; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; @@ -141,12 +141,6 @@ protected void handleMessage(Object msg) { } } - private void clearCachedStatements() { - if (this.psCache != null) { - this.psCache.clear(); - } - } - public Future upgradeToSsl(ClientSSLOptions sslOptions) { return socket.upgradeToSsl(sslOptions); } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java index e860d8c31..2fa894a49 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java @@ -16,7 +16,7 @@ import io.vertx.mysqlclient.impl.command.AuthenticationCommandBase; import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.mysqlclient.impl.util.RsaPublicKeyEncryptor; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Arrays; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java index d08ec0bba..60015a65c 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec.java @@ -18,7 +18,7 @@ import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.mysqlclient.impl.util.CachingSha2Authenticator; import io.vertx.mysqlclient.impl.util.Native41Authenticator; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java index 813e494af..2801b1915 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CloseStatementCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class CloseStatementCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 5; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java index e4073d641..0449c7193 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/CommandCodec.java @@ -30,12 +30,12 @@ import io.vertx.mysqlclient.impl.protocol.CapabilitiesFlag; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.util.BufferUtils; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 085a2c190..03aeb3e1c 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -17,7 +17,7 @@ import io.vertx.mysqlclient.MySQLException; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import java.util.BitSet; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java index c32fb4a66..619fa5281 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java index 0d566db00..fd6ad2152 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.java @@ -28,7 +28,7 @@ import io.vertx.mysqlclient.impl.util.CachingSha2Authenticator; import io.vertx.mysqlclient.impl.util.Native41Authenticator; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java index a40feaf42..02ca755ad 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLEncoder.java @@ -16,7 +16,7 @@ import io.netty.channel.ChannelPromise; import io.vertx.core.Completable; import io.vertx.mysqlclient.impl.MySQLSocketConnection; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import java.nio.charset.Charset; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java index c84531704..ee096ea30 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PingCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.command.PingCommand; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class PingCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 1; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java index 76a350bf1..856592810 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java @@ -23,7 +23,7 @@ import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.protocol.CommandType; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import static io.vertx.mysqlclient.impl.protocol.Packets.ERROR_PACKET_HEADER; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java index ba3f0a61c..3a0d078aa 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java @@ -24,7 +24,7 @@ import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java index 56f3e9997..64d3cf554 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/StatisticsCommandCodec.java @@ -14,7 +14,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.command.StatisticsCommand; import io.vertx.mysqlclient.impl.protocol.CommandType; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; class StatisticsCommandCodec extends CommandCodec { private static final int PAYLOAD_LENGTH = 1; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java index 444940da5..7cb3817fa 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/command/InitialHandshakeCommand.java @@ -17,7 +17,7 @@ import io.vertx.mysqlclient.SslMode; import io.vertx.mysqlclient.impl.MySQLCollation; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; import java.nio.charset.Charset; import java.util.Map; diff --git a/vertx-mysql-client/src/main/java/module-info.java b/vertx-mysql-client/src/main/java/module-info.java index bf2627e56..c75ee9b32 100644 --- a/vertx-mysql-client/src/main/java/module-info.java +++ b/vertx-mysql-client/src/main/java/module-info.java @@ -6,6 +6,7 @@ requires io.netty.handler; requires io.netty.transport; requires io.vertx.sql.client; + requires io.vertx.sql.client.codec; requires io.vertx.core; requires io.vertx.core.logging; requires java.sql; diff --git a/vertx-pg-client/pom.xml b/vertx-pg-client/pom.xml index 251242b4a..85e42e6ba 100644 --- a/vertx-pg-client/pom.xml +++ b/vertx-pg-client/pom.xml @@ -48,6 +48,10 @@ io.vertx vertx-sql-client + + io.vertx + vertx-sql-client-codec + diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java index ee2b8b0f2..402c3d2d8 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/InitiateSslHandler.java @@ -25,7 +25,7 @@ import io.vertx.core.Promise; import io.vertx.core.net.ClientSSLOptions; import io.vertx.pgclient.impl.codec.PgProtocolConstants; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.core.VertxException; public class InitiateSslHandler extends ChannelInboundHandlerAdapter { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java index 92a6aa539..aee4fd481 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java @@ -30,7 +30,7 @@ import io.vertx.pgclient.spi.PgDriver; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.Notification; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; +import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionBase; public class PgConnectionImpl extends SqlConnectionBase implements PgConnection { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index e67382c11..6ab8fb01c 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -32,12 +32,12 @@ import io.vertx.pgclient.impl.codec.PgCodec; import io.vertx.pgclient.impl.codec.PgCommandCodec; import io.vertx.pgclient.impl.codec.TxFailedEvent; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; +import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.impl.connection.SocketConnectionBase; import io.vertx.sqlclient.spi.DatabaseMetadata; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java index deed3de46..aeaa11a2c 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java @@ -18,9 +18,9 @@ import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.TupleInternal; -import io.vertx.sqlclient.impl.connection.InvalidCachedStatementEvent; +import io.vertx.sqlclient.codec.InvalidCachedStatementEvent; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; public class ExtendedQueryCommandCodec> extends QueryCommandBaseCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java index d525e2f14..9bcb56381 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/InitCommandCodec.java @@ -26,7 +26,7 @@ import io.vertx.pgclient.impl.auth.scram.ScramAuthentication; import io.vertx.pgclient.impl.auth.scram.ScramSession; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.InitCommand; class InitCommandCodec extends PgCommandCodec { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java index 5204e8dee..7bb1849bd 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgCommandCodec.java @@ -20,12 +20,12 @@ import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.pgclient.PgException; -import io.vertx.sqlclient.impl.connection.CommandMessage; +import io.vertx.sqlclient.codec.CommandMessage; +import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import io.vertx.sqlclient.spi.protocol.CloseCursorCommand; import io.vertx.sqlclient.spi.protocol.CloseStatementCommand; import io.vertx.sqlclient.spi.protocol.CommandBase; -import io.vertx.sqlclient.impl.connection.CommandResponse; import io.vertx.sqlclient.spi.protocol.InitCommand; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java index 7ef555ffe..5ca36d811 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java @@ -26,7 +26,7 @@ import io.vertx.core.Completable; import io.vertx.pgclient.impl.util.Util; import io.vertx.sqlclient.impl.Notification; -import io.vertx.sqlclient.impl.connection.CommandResponse; +import io.vertx.sqlclient.codec.CommandResponse; /** * diff --git a/vertx-pg-client/src/main/java/module-info.java b/vertx-pg-client/src/main/java/module-info.java index c2094eeb0..ec6b47ed9 100644 --- a/vertx-pg-client/src/main/java/module-info.java +++ b/vertx-pg-client/src/main/java/module-info.java @@ -6,6 +6,7 @@ requires io.netty.handler; requires io.netty.transport; requires io.vertx.sql.client; + requires io.vertx.sql.client.codec; requires io.vertx.core; requires io.vertx.core.logging; requires java.sql; diff --git a/vertx-sql-client-codec/pom.xml b/vertx-sql-client-codec/pom.xml new file mode 100644 index 000000000..6e459e61d --- /dev/null +++ b/vertx-sql-client-codec/pom.xml @@ -0,0 +1,49 @@ + + + + + 4.0.0 + + + io.vertx + vertx-sql-client-parent + 5.1.0-SNAPSHOT + + + vertx-sql-client-codec + + Vertx SQL Client Codec + https://github.com/eclipse-vertx/vertx-sql-client + Vert.x SQL Client Codec + + + + + + io.vertx + vertx-sql-client + + + + + + + + + + diff --git a/vertx-sql-client-codec/src/main/asciidoc/index.adoc b/vertx-sql-client-codec/src/main/asciidoc/index.adoc new file mode 100644 index 000000000..e69de29bb diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandMessage.java b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/CommandMessage.java similarity index 96% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandMessage.java rename to vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/CommandMessage.java index 0a04ecb7e..99ae87b6f 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandMessage.java +++ b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/CommandMessage.java @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl.connection; +package io.vertx.sqlclient.codec; import io.vertx.core.AsyncResult; import io.vertx.core.Completable; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandResponse.java b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/CommandResponse.java similarity index 96% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandResponse.java rename to vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/CommandResponse.java index 8f4ffadbf..83634185c 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/CommandResponse.java +++ b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/CommandResponse.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl.connection; +package io.vertx.sqlclient.codec; import io.vertx.core.Completable; import io.vertx.core.Future; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/InvalidCachedStatementEvent.java b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/InvalidCachedStatementEvent.java similarity index 87% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/InvalidCachedStatementEvent.java rename to vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/InvalidCachedStatementEvent.java index 97c78bb02..1dae303dd 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/InvalidCachedStatementEvent.java +++ b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/InvalidCachedStatementEvent.java @@ -1,9 +1,10 @@ -package io.vertx.sqlclient.impl.connection; +package io.vertx.sqlclient.codec; /** * An event signals when a cached prepared statement is invalid and needs to be evicted from the cache. */ public class InvalidCachedStatementEvent { + private final String sql; public InvalidCachedStatementEvent(String sql) { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/SocketConnectionBase.java b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/SocketConnectionBase.java similarity index 98% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/SocketConnectionBase.java rename to vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/SocketConnectionBase.java index 217dd1d9e..65ecb151a 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/SocketConnectionBase.java +++ b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/SocketConnectionBase.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.impl.connection; +package io.vertx.sqlclient.codec; import io.netty.channel.Channel; import io.netty.channel.ChannelFutureListener; @@ -31,6 +31,7 @@ import io.vertx.core.internal.net.NetSocketInternal; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.SqlConnectOptions; +import io.vertx.sqlclient.codec.impl.PreparedStatementCache; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.spi.DatabaseMetadata; @@ -443,4 +444,10 @@ public void suspendPipeline() { public void resumePipeline() { this.paused = false; } + + protected void clearCachedStatements() { + if (this.psCache != null) { + this.psCache.clear(); + } + } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/LruCache.java b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl/LruCache.java similarity index 97% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/LruCache.java rename to vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl/LruCache.java index 6f2469095..0c093bdf3 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/LruCache.java +++ b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl/LruCache.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl.connection; +package io.vertx.sqlclient.codec.impl; import java.util.*; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/PreparedStatementCache.java b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl/PreparedStatementCache.java similarity index 97% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/PreparedStatementCache.java rename to vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl/PreparedStatementCache.java index 6b334798b..694801563 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/connection/PreparedStatementCache.java +++ b/vertx-sql-client-codec/src/main/java/io/vertx/sqlclient/codec/impl/PreparedStatementCache.java @@ -9,7 +9,7 @@ * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 */ -package io.vertx.sqlclient.impl.connection; +package io.vertx.sqlclient.codec.impl; import io.vertx.sqlclient.internal.PreparedStatement; diff --git a/vertx-sql-client-codec/src/main/java/module-info.java b/vertx-sql-client-codec/src/main/java/module-info.java new file mode 100644 index 000000000..6937aed22 --- /dev/null +++ b/vertx-sql-client-codec/src/main/java/module-info.java @@ -0,0 +1,16 @@ +module io.vertx.sql.client.codec { + + requires io.netty.common; + requires io.netty.buffer; + requires io.netty.codec; + requires io.netty.transport; + + requires io.vertx.core; + requires io.vertx.core.logging; + + requires io.vertx.sql.client; + + exports io.vertx.sqlclient.codec; + exports io.vertx.sqlclient.codec.impl to io.vertx.tests.sql.client.codec; + +} diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java b/vertx-sql-client-codec/src/test/java/io/vertx/tests/sqlclient/codec/LruCacheTest.java similarity index 93% rename from vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java rename to vertx-sql-client-codec/src/test/java/io/vertx/tests/sqlclient/codec/LruCacheTest.java index 9e79ec3de..5b3e620d1 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/LruCacheTest.java +++ b/vertx-sql-client-codec/src/test/java/io/vertx/tests/sqlclient/codec/LruCacheTest.java @@ -1,6 +1,6 @@ -package io.vertx.tests.sqlclient; +package io.vertx.tests.sqlclient.codec; -import io.vertx.sqlclient.impl.connection.LruCache; +import io.vertx.sqlclient.codec.impl.LruCache; import org.junit.Test; import java.util.List; diff --git a/vertx-sql-client-codec/src/test/java/module-info.java b/vertx-sql-client-codec/src/test/java/module-info.java new file mode 100644 index 000000000..923b8fdaf --- /dev/null +++ b/vertx-sql-client-codec/src/test/java/module-info.java @@ -0,0 +1,11 @@ +open module io.vertx.tests.sql.client.codec { + + requires io.vertx.core; + requires io.vertx.core.logging; + requires io.vertx.sql.client; + requires io.vertx.sql.client.codec; + requires io.vertx.testing.unit; + requires java.sql; + requires junit; + +} diff --git a/vertx-sql-client/src/main/java/module-info.java b/vertx-sql-client/src/main/java/module-info.java index a9c9c0974..aabd52954 100644 --- a/vertx-sql-client/src/main/java/module-info.java +++ b/vertx-sql-client/src/main/java/module-info.java @@ -30,7 +30,6 @@ exports io.vertx.sqlclient.impl to io.vertx.tests.sql.client, io.vertx.tests.sql.client.pg, io.vertx.tests.sql.client.mysql, io.vertx.tests.sql.client.templates, io.vertx.sql.client.pg, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2, io.vertx.sql.client.oracle, io.vertx.sql.client.templates; - exports io.vertx.sqlclient.impl.connection to io.vertx.sql.client.db2, io.vertx.sql.client.mssql, io.vertx.sql.client.mysql, io.vertx.sql.client.oracle, io.vertx.sql.client.pg, io.vertx.sql.client.templates, io.vertx.tests.sql.client, io.vertx.tests.sql.client.mysql, io.vertx.tests.sql.client.pg, io.vertx.tests.sql.client.templates; exports io.vertx.sqlclient.impl.codec to io.vertx.sql.client.pg, io.vertx.tests.sql.client.pg, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2; exports io.vertx.sqlclient.impl.tracing to io.vertx.tests.sql.client; exports io.vertx.sqlclient.impl.pool; From 9eb2efd4f0ec4255ec2462e6c123aee94fdc3cb5 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 16:57:13 +0200 Subject: [PATCH 20/25] Remove unused ParamDesc class. --- .../db2client/impl/codec/DB2ParamDesc.java | 3 +- .../impl/codec/DB2PreparedStatement.java | 6 --- .../impl/codec/MSSQLParamDesc.java | 37 ------------------- .../impl/codec/MSSQLPreparedStatement.java | 7 ---- .../mysqlclient/impl/MySQLParamDesc.java | 3 +- .../impl/codec/MySQLPreparedStatement.java | 6 --- .../commands/OraclePreparedStatement.java | 7 ---- .../vertx/pgclient/impl/codec/PgEncoder.java | 1 - .../pgclient/impl/codec/PgParamDesc.java | 3 +- .../impl/codec/PgPreparedStatement.java | 6 --- .../vertx/sqlclient/internal/ParamDesc.java | 25 ------------- .../sqlclient/internal/PreparedStatement.java | 2 - 12 files changed, 3 insertions(+), 103 deletions(-) delete mode 100644 vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLParamDesc.java delete mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ParamDesc.java diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java index 06269430e..f73bc1f8f 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java @@ -21,10 +21,9 @@ import io.vertx.db2client.impl.drda.ColumnMetaData; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.ErrorMessageFactory; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.TupleInternal; -class DB2ParamDesc extends ParamDesc { +class DB2ParamDesc { private final ColumnMetaData paramDefinitions; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java index 8ac3819a2..493c0a933 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java @@ -23,7 +23,6 @@ import io.vertx.core.internal.logging.LoggerFactory; import io.vertx.db2client.impl.drda.Cursor; import io.vertx.db2client.impl.drda.Section; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.internal.TupleInternal; @@ -58,11 +57,6 @@ public static class QueryInstance { this.section = section; } - @Override - public ParamDesc paramDesc() { - return paramDesc; - } - @Override public RowDesc rowDesc() { return rowDesc; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLParamDesc.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLParamDesc.java deleted file mode 100644 index c7b62223e..000000000 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLParamDesc.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011-2019 Contributors to the Eclipse Foundation - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 - * which is available at https://www.apache.org/licenses/LICENSE-2.0. - * - * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 - */ - -package io.vertx.mssqlclient.impl.codec; - -import io.vertx.sqlclient.impl.ErrorMessageFactory; -import io.vertx.sqlclient.internal.ParamDesc; -import io.vertx.sqlclient.internal.TupleInternal; - -class MSSQLParamDesc extends ParamDesc { - private final ColumnData[] paramDescriptions; - - public MSSQLParamDesc(ColumnData[] paramDescriptions) { - this.paramDescriptions = paramDescriptions; - } - - public ColumnData[] paramDescriptions() { - return paramDescriptions; - } - - public String prepare(TupleInternal values) { - int numberOfParameters = values.size(); - int paramDescLength = paramDescriptions.length; - if (numberOfParameters != paramDescLength){ - return ErrorMessageFactory.buildWhenArgumentsLengthNotMatched(paramDescLength, numberOfParameters); - } - return null; - } -} diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java index ff282d373..8c8d63de3 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java @@ -11,10 +11,8 @@ package io.vertx.mssqlclient.impl.codec; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.TupleInternal; public class MSSQLPreparedStatement implements PreparedStatement { @@ -25,11 +23,6 @@ public MSSQLPreparedStatement(String sql) { this.sql = sql; } - @Override - public ParamDesc paramDesc() { - throw new UnsupportedOperationException(); - } - @Override public RowDesc rowDesc() { throw new UnsupportedOperationException(); diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLParamDesc.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLParamDesc.java index 6bd8277aa..7c2f68986 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLParamDesc.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLParamDesc.java @@ -12,9 +12,8 @@ package io.vertx.mysqlclient.impl; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; -import io.vertx.sqlclient.internal.ParamDesc; -public class MySQLParamDesc extends ParamDesc { +public class MySQLParamDesc { private final ColumnDefinition[] paramDefinitions; public MySQLParamDesc(ColumnDefinition[] paramDefinitions) { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java index 4dda02c9c..ef140abaa 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java @@ -24,7 +24,6 @@ import io.vertx.mysqlclient.impl.datatype.DataTypeCodec; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.impl.*; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.internal.TupleInternal; @@ -56,11 +55,6 @@ public class MySQLPreparedStatement implements PreparedStatement { cleanBindings(); } - @Override - public ParamDesc paramDesc() { - return paramDesc; - } - @Override public RowDesc rowDesc() { return rowDesc; diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java index fc01fecea..e3c851764 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java @@ -11,9 +11,7 @@ package io.vertx.oracleclient.impl.commands; import io.vertx.oracleclient.impl.OracleRowDesc; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.TupleInternal; import io.vertx.sqlclient.internal.PreparedStatement; import java.sql.ResultSetMetaData; @@ -36,11 +34,6 @@ public OraclePreparedStatement(String sql, java.sql.PreparedStatement preparedSt this.rowDesc = rowDesc; } - @Override - public ParamDesc paramDesc() { - throw new UnsupportedOperationException(); - } - @Override public RowDesc rowDesc() { return rowDesc; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java index 5f342ac8d..e2b3cc759 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java @@ -26,7 +26,6 @@ import io.vertx.sqlclient.Tuple; import io.vertx.pgclient.impl.util.Util; import io.vertx.sqlclient.impl.HexSequence; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.RowDesc; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java index 9f4fd9e98..df36316b3 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java @@ -19,7 +19,6 @@ import io.vertx.core.VertxException; import io.vertx.sqlclient.impl.ErrorMessageFactory; import io.vertx.sqlclient.internal.ArrayTuple; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.TupleInternal; import java.util.Arrays; @@ -28,7 +27,7 @@ /** * @author Emad Alblueshi */ -class PgParamDesc extends ParamDesc { +class PgParamDesc { // OIDs private final DataType[] paramDataTypes; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java index 1f078cb55..8f42e60a0 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java @@ -18,7 +18,6 @@ package io.vertx.pgclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.ParamDesc; import io.vertx.sqlclient.internal.TupleInternal; class PgPreparedStatement implements PreparedStatement { @@ -37,11 +36,6 @@ class PgPreparedStatement implements PreparedStatement { this.cached = cached; } - @Override - public ParamDesc paramDesc() { - return paramDesc; - } - @Override public PgRowDesc rowDesc() { return rowDesc; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ParamDesc.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ParamDesc.java deleted file mode 100644 index ec6dd3793..000000000 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ParamDesc.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (C) 2017 Julien Viet - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package io.vertx.sqlclient.internal; - -/** - * @author Emad Alblueshi - */ - -public class ParamDesc { -} diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java index d7b991178..5479d3429 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java @@ -22,8 +22,6 @@ public interface PreparedStatement { - ParamDesc paramDesc(); - RowDesc rowDesc(); String sql(); From 3f7862aab947b9c0d552186e5e0fd3865c8c8d09 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 17:03:35 +0200 Subject: [PATCH 21/25] Various cleanups/renames --- .../impl/{DB2RowImpl.java => DB2Row.java} | 9 ++++----- .../db2client/impl/codec/DB2ParamDesc.java | 4 ++-- .../impl/codec/DB2PreparedStatement.java | 12 ++++++------ .../{DB2RowDesc.java => DB2RowDescriptor.java} | 10 +++++----- .../codec/ExtendedBatchQueryCommandCodec.java | 4 ++-- .../codec/ExtendedQueryCommandBaseCodec.java | 2 +- .../impl/codec/PrepareStatementCodec.java | 2 +- .../impl/codec/QueryCommandBaseCodec.java | 6 +++--- .../db2client/impl/codec/RowResultDecoder.java | 8 ++++---- .../impl/codec/SimpleQueryCommandCodec.java | 2 +- .../{DB2RowImplTest.java => DB2RowTest.java} | 8 ++++---- .../impl/{MSSQLRowImpl.java => MSSQLRow.java} | 9 ++++----- .../mssqlclient/impl/codec/CursorData.java | 2 +- .../codec/ExtendedBatchQueryCommandCodec.java | 8 ++++---- .../codec/ExtendedCursorQueryCommandCodec.java | 12 ++++++------ .../codec/ExtendedQueryCommandBaseCodec.java | 12 ++++++------ .../impl/codec/ExtendedQueryCommandCodec.java | 6 +++--- .../impl/codec/MSSQLCommandCodec.java | 6 +++--- .../impl/codec/MSSQLPreparedStatement.java | 4 ++-- ...SQLRowDesc.java => MSSQLRowDescriptor.java} | 12 ++++++------ .../impl/codec/QueryCommandBaseCodec.java | 12 ++++++------ .../impl/codec/RowResultDecoder.java | 10 +++++----- ...MSSQLRowImplTest.java => MSSQLRowTest.java} | 8 ++++---- .../impl/{MySQLRowImpl.java => MySQLRow.java} | 7 +++---- ...SQLRowDesc.java => MySQLRowDescriptor.java} | 10 +++++----- .../codec/ExtendedBatchQueryCommandCodec.java | 4 ++-- .../impl/codec/MySQLPreparedStatement.java | 14 +++++++------- .../impl/codec/PrepareStatementCodec.java | 4 ++-- .../impl/codec/QueryCommandBaseCodec.java | 14 +++++++------- .../impl/codec/RowResultDecoder.java | 10 +++++----- ...MySQLRowImplTest.java => MySQLRowTest.java} | 8 ++++---- .../io/vertx/oracleclient/impl/OracleRow.java | 4 ++-- ...leRowDesc.java => OracleRowDescriptor.java} | 12 ++++++------ .../io/vertx/oracleclient/impl/RowReader.java | 8 ++++---- .../commands/OraclePreparedBatchQuery.java | 4 ++-- .../impl/commands/OraclePreparedStatement.java | 18 +++++++++--------- .../impl/commands/OracleQueryCommand.java | 10 +++++----- .../impl/commands/OracleResponse.java | 10 +++++----- .../pgclient/impl/{RowImpl.java => PgRow.java} | 9 ++++----- .../io/vertx/pgclient/impl/codec/DataType.java | 4 ++-- .../impl/codec/ExtendedQueryCommandCodec.java | 8 ++++---- .../pgclient/impl/codec/ParamExtractor.java | 6 +++--- .../vertx/pgclient/impl/codec/PgEncoder.java | 12 ++++++------ .../vertx/pgclient/impl/codec/PgParamDesc.java | 6 +++--- .../impl/codec/PgPreparedStatement.java | 10 +++++----- .../{PgRowDesc.java => PgRowDescriptor.java} | 14 +++++++------- .../codec/PrepareStatementCommandCodec.java | 4 ++-- .../impl/codec/QueryCommandBaseCodec.java | 4 ++-- .../pgclient/impl/codec/RowResultDecoder.java | 8 ++++---- .../pgclient/impl/codec/SimpleQueryCodec.java | 2 +- .../impl/{RowImplTest.java => PgRowTest.java} | 8 ++++---- .../sqlclient/templates/impl/JsonTuple.java | 4 ++-- .../io/vertx/sqlclient/impl/CursorImpl.java | 6 +++--- .../io/vertx/sqlclient/impl/ListTuple.java | 4 ++-- .../sqlclient/impl/PreparedStatementBase.java | 10 +++++----- .../io/vertx/sqlclient/impl/QueryExecutor.java | 4 ++-- .../sqlclient/impl/QueryResultBuilder.java | 5 ++--- .../java/io/vertx/sqlclient/impl/RowBase.java | 10 +++++----- .../vertx/sqlclient/internal/ArrayTuple.java | 2 +- .../sqlclient/internal/PreparedStatement.java | 12 ++++++------ .../sqlclient/internal/QueryResultHandler.java | 4 ++-- .../{RowDesc.java => RowDescriptor.java} | 4 ++-- .../sqlclient/internal/SqlClientBase.java | 6 +++--- .../{TupleInternal.java => TupleBase.java} | 2 +- .../spi/protocol/ExtendedQueryCommand.java | 16 ++++++++-------- ...TestRowDesc.java => TestRowDescriptor.java} | 10 +++++----- .../spi/backend/GenericDriverTest.java | 8 ++++---- 67 files changed, 251 insertions(+), 256 deletions(-) rename vertx-db2-client/src/main/java/io/vertx/db2client/impl/{DB2RowImpl.java => DB2Row.java} (96%) rename vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/{DB2RowDesc.java => DB2RowDescriptor.java} (80%) rename vertx-db2-client/src/test/java/io/vertx/tests/db2client/{DB2RowImplTest.java => DB2RowTest.java} (82%) rename vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/{MSSQLRowImpl.java => MSSQLRow.java} (95%) rename vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/{MSSQLRowDesc.java => MSSQLRowDescriptor.java} (69%) rename vertx-mssql-client/src/test/java/io/vertx/tests/mssqlclient/impl/{MSSQLRowImplTest.java => MSSQLRowTest.java} (81%) rename vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/{MySQLRowImpl.java => MySQLRow.java} (97%) rename vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/{MySQLRowDesc.java => MySQLRowDescriptor.java} (76%) rename vertx-mysql-client/src/test/java/io/vertx/tests/mysqlclient/impl/{MySQLRowImplTest.java => MySQLRowTest.java} (80%) rename vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/{OracleRowDesc.java => OracleRowDescriptor.java} (66%) rename vertx-pg-client/src/main/java/io/vertx/pgclient/impl/{RowImpl.java => PgRow.java} (98%) rename vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/{PgRowDesc.java => PgRowDescriptor.java} (74%) rename vertx-pg-client/src/test/java/io/vertx/tests/pgclient/impl/{RowImplTest.java => PgRowTest.java} (83%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/{RowDesc.java => RowDescriptor.java} (96%) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/{TupleInternal.java => TupleBase.java} (95%) rename vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/{TestRowDesc.java => TestRowDescriptor.java} (81%) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2RowImpl.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java similarity index 96% rename from vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2RowImpl.java rename to vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java index 441cf39a1..36ad57c1b 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2RowImpl.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java @@ -23,19 +23,18 @@ import java.time.OffsetDateTime; import java.time.OffsetTime; import java.time.temporal.Temporal; -import java.util.List; import java.util.UUID; import io.vertx.core.buffer.Buffer; import io.vertx.db2client.impl.drda.DB2RowId; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; -public class DB2RowImpl extends RowBase { +public class DB2Row extends RowBase { - public DB2RowImpl(RowDesc rowDesc) { - super(rowDesc); + public DB2Row(RowDescriptor rowDescriptor) { + super(rowDescriptor); } @Override diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java index f73bc1f8f..9d558ce2c 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2ParamDesc.java @@ -21,7 +21,7 @@ import io.vertx.db2client.impl.drda.ColumnMetaData; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.ErrorMessageFactory; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; class DB2ParamDesc { @@ -35,7 +35,7 @@ ColumnMetaData paramDefinitions() { return paramDefinitions; } - public TupleInternal prepare(TupleInternal values) { + public TupleBase prepare(TupleBase values) { if (values.size() != paramDefinitions.columns_) { throw new VertxException(ErrorMessageFactory.buildWhenArgumentsLengthNotMatched(paramDefinitions.columns_, values.size()), true); } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java index 493c0a933..9117619ff 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java @@ -24,8 +24,8 @@ import io.vertx.db2client.impl.drda.Cursor; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.TupleBase; public class DB2PreparedStatement implements PreparedStatement { @@ -33,7 +33,7 @@ public class DB2PreparedStatement implements PreparedStatement { final String sql; final DB2ParamDesc paramDesc; - final DB2RowDesc rowDesc; + final DB2RowDescriptor rowDesc; final Section section; private final Map activeQueries = new ConcurrentHashMap<>(4); @@ -50,7 +50,7 @@ public static class QueryInstance { } } - DB2PreparedStatement(String sql, DB2ParamDesc paramDesc, DB2RowDesc rowDesc, Section section) { + DB2PreparedStatement(String sql, DB2ParamDesc paramDesc, DB2RowDescriptor rowDesc, Section section) { this.paramDesc = paramDesc; this.rowDesc = rowDesc; this.sql = sql; @@ -58,7 +58,7 @@ public static class QueryInstance { } @Override - public RowDesc rowDesc() { + public RowDescriptor rowDesc() { return rowDesc; } @@ -68,7 +68,7 @@ public String sql() { } @Override - public TupleInternal prepare(TupleInternal values) { + public TupleBase prepare(TupleBase values) { return paramDesc.prepare(values); } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDesc.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDescriptor.java similarity index 80% rename from vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDesc.java rename to vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDescriptor.java index f29947bdd..793de9b67 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDesc.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDescriptor.java @@ -16,16 +16,16 @@ package io.vertx.db2client.impl.codec; import io.vertx.db2client.impl.drda.ColumnMetaData; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.sql.JDBCType; import java.util.List; -class DB2RowDesc extends RowDesc { +class DB2RowDescriptor extends RowDescriptor { private final ColumnMetaData columnMetaData; - private DB2RowDesc(DB2ColumnDesc[] columnDescs, ColumnMetaData columnMetaData) { + private DB2RowDescriptor(DB2ColumnDesc[] columnDescs, ColumnMetaData columnMetaData) { super(columnDescs); this.columnMetaData = columnMetaData; } @@ -34,13 +34,13 @@ ColumnMetaData columnDefinitions() { return columnMetaData; } - static DB2RowDesc create(ColumnMetaData md) { + static DB2RowDescriptor create(ColumnMetaData md) { List names = md.getColumnNames(); List types = md.getJdbcTypes(); DB2ColumnDesc[] columns = new DB2ColumnDesc[names.size()]; for (int i = 0; i < columns.length; i++) { columns[i] = new DB2ColumnDesc(names.get(i), types.get(i)); } - return new DB2RowDesc(columns, md); + return new DB2RowDescriptor(columns, md); } } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java index ebd2b8ea8..e396a7652 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -27,7 +27,7 @@ import io.vertx.db2client.impl.drda.DRDAQueryRequest; import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; @@ -35,7 +35,7 @@ public class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseC private static final Logger LOG = LoggerFactory.getLogger(ExtendedBatchQueryCommandCodec.class); - private final List params; + private final List params; private final List queryInstances; private final String baseCursorId; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java index 175578375..8630d3b68 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -72,7 +72,7 @@ RowResultDecoder decodePreparedQuery(ByteBuf payload, DRDAQueryResponse re if (queryInstance.cursor == null) { resp.setOutputColumnMetaData(columnDefinitions); resp.readBeginOpenQuery(); - decoder = new RowResultDecoder<>(cmd.collector(), DB2RowDesc.create(columnDefinitions), resp.getCursor(), resp); + decoder = new RowResultDecoder<>(cmd.collector(), DB2RowDescriptor.create(columnDefinitions), resp.getCursor(), resp); queryInstance.cursor = resp.getCursor(); queryInstance.queryInstanceId = resp.getQueryInstanceId(); } else { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java index cad92bd3c..d5282ecca 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/PrepareStatementCodec.java @@ -89,7 +89,7 @@ void decodePayload(ByteBuf payload, int payloadLength) { private void handleReadyForQuery() { completionHandler.handle(CommandResponse.success(new DB2PreparedStatement(cmd.sql(), new DB2ParamDesc(paramDesc), - DB2RowDesc.create(rowDesc), section))); + DB2RowDescriptor.create(rowDesc), section))); } private void resetIntermediaryResult() { diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java index b675ec04c..9b063fab1 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java @@ -18,7 +18,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.db2client.impl.drda.ColumnMetaData; import io.vertx.db2client.impl.drda.DRDAQueryRequest; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; abstract class QueryCommandBaseCodec> extends CommandCodec { @@ -79,11 +79,11 @@ void decodePayload(ByteBuf payload, int payloadLength) { void handleQueryResult(RowResultDecoder decoder) { Throwable failure = decoder.complete(); T result = decoder.result(); - RowDesc rowDesc = decoder.rowDesc; + RowDescriptor rowDescriptor = decoder.rowDesc; int size = decoder.size(); int updatedCount = decoder.size(); decoder.reset(); - cmd.resultHandler().handleResult(updatedCount, size, rowDesc, result, failure); + cmd.resultHandler().handleResult(updatedCount, size, rowDescriptor, result, failure); } } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/RowResultDecoder.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/RowResultDecoder.java index bcb4658d1..3c2ece644 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/RowResultDecoder.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/RowResultDecoder.java @@ -21,7 +21,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.core.internal.logging.Logger; import io.vertx.core.internal.logging.LoggerFactory; -import io.vertx.db2client.impl.DB2RowImpl; +import io.vertx.db2client.impl.DB2Row; import io.vertx.db2client.impl.drda.Cursor; import io.vertx.db2client.impl.drda.DRDAQueryResponse; import io.vertx.sqlclient.Row; @@ -33,11 +33,11 @@ class RowResultDecoder extends RowDecoder { private static final Logger LOG = LoggerFactory.getLogger(RowResultDecoder.class); - final DB2RowDesc rowDesc; + final DB2RowDescriptor rowDesc; final Cursor cursor; final DRDAQueryResponse response; - RowResultDecoder(Collector collector, DB2RowDesc rowDesc, Cursor cursor, DRDAQueryResponse resp) { + RowResultDecoder(Collector collector, DB2RowDescriptor rowDesc, Cursor cursor, DRDAQueryResponse resp) { super(collector); this.rowDesc = rowDesc; this.cursor = cursor; @@ -55,7 +55,7 @@ public boolean next() { @Override protected RowInternal row() { - return new DB2RowImpl(rowDesc); + return new DB2Row(rowDesc); } @Override diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java index fa03666a0..305ffa20f 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/SimpleQueryCommandCodec.java @@ -75,7 +75,7 @@ void decodeQuery(ByteBuf payload) { resp.readPrepareDescribeOutput(); resp.readBeginOpenQuery(); columnDefinitions = resp.getOutputColumnMetaData(); - RowResultDecoder decoder = new RowResultDecoder<>(cmd.collector(), DB2RowDesc.create(columnDefinitions), resp.getCursor(), resp); + RowResultDecoder decoder = new RowResultDecoder<>(cmd.collector(), DB2RowDescriptor.create(columnDefinitions), resp.getCursor(), resp); while (decoder.next()) { decoder.handleRow(columnDefinitions.columns_, payload); diff --git a/vertx-db2-client/src/test/java/io/vertx/tests/db2client/DB2RowImplTest.java b/vertx-db2-client/src/test/java/io/vertx/tests/db2client/DB2RowTest.java similarity index 82% rename from vertx-db2-client/src/test/java/io/vertx/tests/db2client/DB2RowImplTest.java rename to vertx-db2-client/src/test/java/io/vertx/tests/db2client/DB2RowTest.java index 511a6a16c..048ee82c3 100644 --- a/vertx-db2-client/src/test/java/io/vertx/tests/db2client/DB2RowImplTest.java +++ b/vertx-db2-client/src/test/java/io/vertx/tests/db2client/DB2RowTest.java @@ -11,8 +11,8 @@ package io.vertx.tests.db2client; -import io.vertx.db2client.impl.DB2RowImpl; -import io.vertx.tests.sqlclient.TestRowDesc; +import io.vertx.db2client.impl.DB2Row; +import io.vertx.tests.sqlclient.TestRowDescriptor; import org.junit.Test; import java.time.LocalDate; @@ -20,14 +20,14 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; -public class DB2RowImplTest { +public class DB2RowTest { enum EnumValue { SOME, NONE } @Test public void testGetNullEnum() { - DB2RowImpl row = new DB2RowImpl(TestRowDesc.create("enum")); + DB2Row row = new DB2Row(TestRowDescriptor.create("enum")); row.addValue(null); assertNull(row.get(EnumValue.class, 0)); diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRowImpl.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java similarity index 95% rename from vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRowImpl.java rename to vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java index 50e28632e..faa55c77a 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRowImpl.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java @@ -13,7 +13,7 @@ import io.vertx.core.buffer.Buffer; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.math.BigDecimal; import java.time.LocalDate; @@ -21,13 +21,12 @@ import java.time.LocalTime; import java.time.OffsetDateTime; import java.time.temporal.Temporal; -import java.util.List; import java.util.UUID; -public class MSSQLRowImpl extends RowBase { +public class MSSQLRow extends RowBase { - public MSSQLRowImpl(RowDesc rowDesc) { - super(rowDesc); + public MSSQLRow(RowDescriptor rowDescriptor) { + super(rowDescriptor); } @Override diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CursorData.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CursorData.java index 8e7d03459..1256e4fe6 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CursorData.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/CursorData.java @@ -22,7 +22,7 @@ class CursorData { int serverCursorId; // When invoking CursorPrepExec, the database server returns column metadata. // We store it so that we can tell the server not to return column metadata again when invoking CursorFetch - MSSQLRowDesc mssqlRowDesc; + MSSQLRowDescriptor mssqlRowDesc; boolean fetchSent; int rowsTotal; int rowsFetched; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 262b52a20..abeb8b444 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; @@ -20,7 +20,7 @@ class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec { - private final List paramsList; + private final List paramsList; private int paramsIdx; private int messageDecoded; @@ -49,7 +49,7 @@ protected void handleDecodingComplete() { } @Override - protected TupleInternal prepexecRequestParams() { + protected TupleBase prepexecRequestParams() { paramsIdx = 1; return paramsList.get(0); } @@ -65,7 +65,7 @@ protected void writeRpcRequestBatch(ByteBuf packet) { } @Override - protected TupleInternal execRequestParams() { + protected TupleBase execRequestParams() { return paramsList.get(paramsIdx); } } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java index bccac6fcb..236be34d4 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedCursorQueryCommandCodec.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mssqlclient.impl.codec.DataType.INTN; @@ -68,7 +68,7 @@ private void sendCursorPrepExec() { INTN.encodeParam(content, null, true, 0); // prepared handle INTN.encodeParam(content, null, true, 0); // cursor - TupleInternal params = prepexecRequestParams(); + TupleBase params = prepexecRequestParams(); // Param definitions String paramDefinitions = parseParamDefinitions(params); @@ -112,9 +112,9 @@ protected void handleDecodingComplete() { } @Override - protected MSSQLRowDesc createRowDesc(ColumnData[] columnData) { + protected MSSQLRowDescriptor createRowDesc(ColumnData[] columnData) { boolean hasRowStat = columnData.length > 0 && "ROWSTAT".equals(columnData[columnData.length - 1].name()); - return (cursorData.mssqlRowDesc = MSSQLRowDesc.create(columnData, hasRowStat)); + return (cursorData.mssqlRowDesc = MSSQLRowDescriptor.create(columnData, hasRowStat)); } private void sendCursorFetch() { @@ -174,12 +174,12 @@ protected void handleNbcRow(ByteBuf payload) { } @Override - protected TupleInternal prepexecRequestParams() { + protected TupleBase prepexecRequestParams() { return cmd.params(); } @Override - protected TupleInternal execRequestParams() { + protected TupleBase execRequestParams() { throw new UnsupportedOperationException(); } } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java index abf53656d..dd1d902cb 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandBaseCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.data.NullValue; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import static io.vertx.mssqlclient.impl.codec.DataType.*; @@ -87,7 +87,7 @@ private void sendPrepexecRequest() { // OUT Parameter INTN.encodeParam(content, null, true, ps.handle); - TupleInternal params = prepexecRequestParams(); + TupleBase params = prepexecRequestParams(); // Param definitions String paramDefinitions = parseParamDefinitions(params); @@ -102,7 +102,7 @@ private void sendPrepexecRequest() { tdsMessageCodec.encoder().writeTdsMessage(RPC, content); } - protected abstract TupleInternal prepexecRequestParams(); + protected abstract TupleBase prepexecRequestParams(); void sendExecRequest() { ByteBuf content = tdsMessageCodec.alloc().ioBuffer(); @@ -131,9 +131,9 @@ protected void writeRpcRequestBatch(ByteBuf packet) { encodeParams(packet, execRequestParams()); } - protected abstract TupleInternal execRequestParams(); + protected abstract TupleBase execRequestParams(); - protected String parseParamDefinitions(TupleInternal params) { + protected String parseParamDefinitions(TupleBase params) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < params.size(); i++) { if (i > 0) { @@ -156,7 +156,7 @@ protected String parseParamDefinitions(TupleInternal params) { return stringBuilder.toString(); } - protected void encodeParams(ByteBuf buffer, TupleInternal params) { + protected void encodeParams(ByteBuf buffer, TupleBase params) { for (int i = 0; i < params.size(); i++) { String name = "@P" + (i + 1); Object value = params.getValue(i); diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java index 9ef6e90e6..bb1986f68 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/ExtendedQueryCommandCodec.java @@ -11,7 +11,7 @@ package io.vertx.mssqlclient.impl.codec; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec { @@ -21,12 +21,12 @@ class ExtendedQueryCommandCodec extends ExtendedQueryCommandBaseCodec { } @Override - protected TupleInternal prepexecRequestParams() { + protected TupleBase prepexecRequestParams() { return cmd.params(); } @Override - protected TupleInternal execRequestParams() { + protected TupleBase execRequestParams() { return cmd.params(); } } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java index 27f31c1ca..d17c03bc4 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLCommandCodec.java @@ -151,11 +151,11 @@ private void handleColumnMetadata(ByteBuf payload) { handleRowDesc(createRowDesc(columnDatas)); } - protected MSSQLRowDesc createRowDesc(ColumnData[] columnData) { - return MSSQLRowDesc.create(columnData, false); + protected MSSQLRowDescriptor createRowDesc(ColumnData[] columnData) { + return MSSQLRowDescriptor.create(columnData, false); } - protected void handleRowDesc(MSSQLRowDesc mssqlRowDesc) { + protected void handleRowDesc(MSSQLRowDescriptor mssqlRowDesc) { } protected void handleRow(ByteBuf payload) { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java index 8c8d63de3..956350e2f 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; public class MSSQLPreparedStatement implements PreparedStatement { @@ -24,7 +24,7 @@ public MSSQLPreparedStatement(String sql) { } @Override - public RowDesc rowDesc() { + public RowDescriptor rowDesc() { throw new UnsupportedOperationException(); } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDesc.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDescriptor.java similarity index 69% rename from vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDesc.java rename to vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDescriptor.java index e8485e16c..c5de996bd 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDesc.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDescriptor.java @@ -11,29 +11,29 @@ package io.vertx.mssqlclient.impl.codec; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.util.Arrays; /** - * An implementation of {@link RowDesc} for MSSQL. + * An implementation of {@link RowDescriptor} for MSSQL. *

* When reading rows with a cursor, an extra column named {@code ROWSTAT} is returned by the server. * This column should not be conveyed to the user so this class filters it out. */ -public class MSSQLRowDesc extends RowDesc { +public class MSSQLRowDescriptor extends RowDescriptor { private final ColumnData[] columnDatas; private final boolean rowStat; - private MSSQLRowDesc(ColumnData[] columnDatas, boolean hasRowStat) { + private MSSQLRowDescriptor(ColumnData[] columnDatas, boolean hasRowStat) { super(columnDatas); this.columnDatas = columnDatas; this.rowStat = hasRowStat; } - public static MSSQLRowDesc create(ColumnData[] columnDatas, boolean hasRowStat) { - return new MSSQLRowDesc(hasRowStat ? Arrays.copyOf(columnDatas, columnDatas.length - 1) : columnDatas, hasRowStat); + public static MSSQLRowDescriptor create(ColumnData[] columnDatas, boolean hasRowStat) { + return new MSSQLRowDescriptor(hasRowStat ? Arrays.copyOf(columnDatas, columnDatas.length - 1) : columnDatas, hasRowStat); } public int size() { diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java index d29781c4b..493acdd14 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; @@ -32,7 +32,7 @@ private static T emptyResult(Collector collector) { } @Override - protected void handleRowDesc(MSSQLRowDesc mssqlRowDesc) { + protected void handleRowDesc(MSSQLRowDescriptor mssqlRowDesc) { rowResultDecoder = new RowResultDecoder<>(cmd.collector(), mssqlRowDesc); } @@ -58,20 +58,20 @@ protected void handleResultSetDone() { T result; Throwable failure; int size; - RowDesc rowDesc; + RowDescriptor rowDescriptor; if (rowResultDecoder != null) { failure = rowResultDecoder.complete(); result = rowResultDecoder.result(); - rowDesc = rowResultDecoder.desc(); + rowDescriptor = rowResultDecoder.desc(); size = rowResultDecoder.size(); rowResultDecoder.reset(); } else { result = emptyResult(cmd.collector()); failure = null; size = 0; - rowDesc = null; + rowDescriptor = null; } - cmd.resultHandler().handleResult(rowCount, size, rowDesc, result, failure); + cmd.resultHandler().handleResult(rowCount, size, rowDescriptor, result, failure); } } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/RowResultDecoder.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/RowResultDecoder.java index 6673433d3..21809de19 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/RowResultDecoder.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/RowResultDecoder.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.mssqlclient.impl.MSSQLRowImpl; +import io.vertx.mssqlclient.impl.MSSQLRow; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.impl.RowDecoder; import io.vertx.sqlclient.internal.RowInternal; @@ -23,21 +23,21 @@ public class RowResultDecoder extends RowDecoder { private static final int FETCH_MISSING = 0x0002; - private final MSSQLRowDesc desc; + private final MSSQLRowDescriptor desc; public boolean nbc; - public RowResultDecoder(Collector collector, MSSQLRowDesc desc) { + public RowResultDecoder(Collector collector, MSSQLRowDescriptor desc) { super(collector); this.desc = desc; } - public MSSQLRowDesc desc() { + public MSSQLRowDescriptor desc() { return desc; } @Override protected RowInternal row() { - return new MSSQLRowImpl(desc); + return new MSSQLRow(desc); } @Override diff --git a/vertx-mssql-client/src/test/java/io/vertx/tests/mssqlclient/impl/MSSQLRowImplTest.java b/vertx-mssql-client/src/test/java/io/vertx/tests/mssqlclient/impl/MSSQLRowTest.java similarity index 81% rename from vertx-mssql-client/src/test/java/io/vertx/tests/mssqlclient/impl/MSSQLRowImplTest.java rename to vertx-mssql-client/src/test/java/io/vertx/tests/mssqlclient/impl/MSSQLRowTest.java index e49b1cc45..53384ae3b 100644 --- a/vertx-mssql-client/src/test/java/io/vertx/tests/mssqlclient/impl/MSSQLRowImplTest.java +++ b/vertx-mssql-client/src/test/java/io/vertx/tests/mssqlclient/impl/MSSQLRowTest.java @@ -11,8 +11,8 @@ package io.vertx.tests.mssqlclient.impl; -import io.vertx.mssqlclient.impl.MSSQLRowImpl; -import io.vertx.tests.sqlclient.TestRowDesc; +import io.vertx.mssqlclient.impl.MSSQLRow; +import io.vertx.tests.sqlclient.TestRowDescriptor; import org.junit.Test; import java.time.LocalDate; @@ -20,14 +20,14 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; -public class MSSQLRowImplTest { +public class MSSQLRowTest { enum EnumValue { SOME, NONE } @Test public void testGetNullEnum() { - MSSQLRowImpl row = new MSSQLRowImpl(TestRowDesc.create("enum")); + MSSQLRow row = new MSSQLRow(TestRowDescriptor.create("enum")); row.addValue(null); assertNull(row.get(EnumValue.class, 0)); diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowImpl.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRow.java similarity index 97% rename from vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowImpl.java rename to vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRow.java index 824afa523..d92ffd33f 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowImpl.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRow.java @@ -23,12 +23,11 @@ import java.math.BigDecimal; import java.time.*; import java.time.temporal.Temporal; -import java.util.List; import java.util.UUID; -public class MySQLRowImpl extends RowBase { +public class MySQLRow extends RowBase { - public MySQLRowImpl(MySQLRowDesc rowDesc) { + public MySQLRow(MySQLRowDescriptor rowDesc) { super(rowDesc); } @@ -224,7 +223,7 @@ private GeometryCollection getGeometryCollection(int pos) { @Override public LocalTime getLocalTime(int pos) { - ColumnDefinition columnDefinition = ((MySQLRowDesc)desc).get(pos); + ColumnDefinition columnDefinition = ((MySQLRowDescriptor)desc).get(pos); Object val = getValue(pos); if (columnDefinition.type() == DataType.TIME && val instanceof Duration) { // map MySQL TIME data type to java.time.LocalTime diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDesc.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDescriptor.java similarity index 76% rename from vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDesc.java rename to vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDescriptor.java index c7906c7dc..44462f7f0 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDesc.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDescriptor.java @@ -18,21 +18,21 @@ import io.vertx.mysqlclient.impl.datatype.DataFormat; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; -public class MySQLRowDesc extends RowDesc { +public class MySQLRowDescriptor extends RowDescriptor { private final ColumnDefinition[] columnDefinitions; private final DataFormat dataFormat; - private MySQLRowDesc(ColumnDefinition[] columnDefinitions, DataFormat dataFormat) { + private MySQLRowDescriptor(ColumnDefinition[] columnDefinitions, DataFormat dataFormat) { super(columnDefinitions); this.columnDefinitions = columnDefinitions; this.dataFormat = dataFormat; } - public static MySQLRowDesc create(ColumnDefinition[] columnDefinitions, DataFormat dataFormat) { - return new MySQLRowDesc(columnDefinitions, dataFormat); + public static MySQLRowDescriptor create(ColumnDefinition[] columnDefinitions, DataFormat dataFormat) { + return new MySQLRowDescriptor(columnDefinitions, dataFormat); } public ColumnDefinition[] columnDefinitions() { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java index 03aeb3e1c..f7a17fb8f 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/ExtendedBatchQueryCommandCodec.java @@ -16,7 +16,7 @@ import io.vertx.mysqlclient.MySQLBatchException; import io.vertx.mysqlclient.MySQLException; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; @@ -27,7 +27,7 @@ public class ExtendedBatchQueryCommandCodec extends ExtendedQueryCommandBaseCodec> { - private final List params; + private final List params; private final BitSet bindingFailures; private boolean pipeliningEnabled; private int sent; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java index ef140abaa..f6058f533 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java @@ -19,14 +19,14 @@ import io.vertx.core.VertxException; import io.vertx.mysqlclient.impl.MySQLParamDesc; -import io.vertx.mysqlclient.impl.MySQLRowDesc; +import io.vertx.mysqlclient.impl.MySQLRowDescriptor; import io.vertx.mysqlclient.impl.datatype.DataType; import io.vertx.mysqlclient.impl.datatype.DataTypeCodec; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.impl.*; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.RowDesc; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.TupleBase; import java.util.Arrays; @@ -35,7 +35,7 @@ public class MySQLPreparedStatement implements PreparedStatement { final long statementId; final String sql; final MySQLParamDesc paramDesc; - final MySQLRowDesc rowDesc; + final MySQLRowDescriptor rowDesc; final boolean closeAfterUsage; private boolean sendTypesToServer; @@ -43,7 +43,7 @@ public class MySQLPreparedStatement implements PreparedStatement { boolean isCursorOpen; - MySQLPreparedStatement(String sql, long statementId, MySQLParamDesc paramDesc, MySQLRowDesc rowDesc, boolean closeAfterUsage) { + MySQLPreparedStatement(String sql, long statementId, MySQLParamDesc paramDesc, MySQLRowDescriptor rowDesc, boolean closeAfterUsage) { this.statementId = statementId; this.paramDesc = paramDesc; this.rowDesc = rowDesc; @@ -56,7 +56,7 @@ public class MySQLPreparedStatement implements PreparedStatement { } @Override - public RowDesc rowDesc() { + public RowDescriptor rowDesc() { return rowDesc; } @@ -66,7 +66,7 @@ public String sql() { } @Override - public TupleInternal prepare(TupleInternal values) { + public TupleBase prepare(TupleBase values) { int numberOfParameters = values.size(); int paramDescLength = paramDesc.paramDefinitions().length; if (numberOfParameters != paramDescLength) { diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java index 856592810..130305005 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/PrepareStatementCodec.java @@ -18,7 +18,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.impl.MySQLParamDesc; -import io.vertx.mysqlclient.impl.MySQLRowDesc; +import io.vertx.mysqlclient.impl.MySQLRowDescriptor; import io.vertx.mysqlclient.impl.datatype.DataFormat; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.protocol.CommandType; @@ -135,7 +135,7 @@ private void handleReadyForQuery() { cmd.sql(), this.statementId, new MySQLParamDesc(paramDescs), - MySQLRowDesc.create(columnDescs, DataFormat.BINARY), + MySQLRowDescriptor.create(columnDescs, DataFormat.BINARY), !cmd.isManaged()))); } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java index 3a0d078aa..aa9f0287c 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java @@ -18,12 +18,12 @@ import io.netty.buffer.ByteBuf; import io.vertx.mysqlclient.MySQLClient; -import io.vertx.mysqlclient.impl.MySQLRowDesc; +import io.vertx.mysqlclient.impl.MySQLRowDescriptor; import io.vertx.mysqlclient.impl.datatype.DataFormat; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; @@ -93,7 +93,7 @@ protected void handleResultsetColumnDefinitions(ByteBuf payload) { protected void handleResultsetColumnDefinitionsDecodingCompleted() { commandHandlerState = CommandHandlerState.HANDLING_ROW_DATA_OR_END_PACKET; - MySQLRowDesc mySQLRowDesc = MySQLRowDesc.create(columnDefinitions, format); // use the column definitions if provided by execute or fetch response instead of prepare response + MySQLRowDescriptor mySQLRowDesc = MySQLRowDescriptor.create(columnDefinitions, format); // use the column definitions if provided by execute or fetch response instead of prepare response decoder = new RowResultDecoder<>(cmd.collector(), mySQLRowDesc); } @@ -146,20 +146,20 @@ private void handleSingleResultsetEndPacket(int serverStatusFlags, int affectedR T result; Throwable failure; int size; - RowDesc rowDesc; + RowDescriptor rowDescriptor; if (decoder != null) { failure = decoder.complete(); result = decoder.result(); - rowDesc = decoder.rowDesc; + rowDescriptor = decoder.rowDesc; size = decoder.size(); decoder.reset(); } else { result = emptyResult(cmd.collector()); failure = null; size = 0; - rowDesc = null; + rowDescriptor = null; } - cmd.resultHandler().handleResult(affectedRows, size, rowDesc, result, failure); + cmd.resultHandler().handleResult(affectedRows, size, rowDescriptor, result, failure); if (lastInsertId > 0) { cmd.resultHandler().addProperty(MySQLClient.LAST_INSERTED_ID, lastInsertId); } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/RowResultDecoder.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/RowResultDecoder.java index 4005403c1..a91dd3b22 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/RowResultDecoder.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/RowResultDecoder.java @@ -12,8 +12,8 @@ package io.vertx.mysqlclient.impl.codec; import io.netty.buffer.ByteBuf; -import io.vertx.mysqlclient.impl.MySQLRowDesc; -import io.vertx.mysqlclient.impl.MySQLRowImpl; +import io.vertx.mysqlclient.impl.MySQLRowDescriptor; +import io.vertx.mysqlclient.impl.MySQLRow; import io.vertx.mysqlclient.impl.datatype.DataFormat; import io.vertx.mysqlclient.impl.datatype.DataType; import io.vertx.mysqlclient.impl.datatype.DataTypeCodec; @@ -27,16 +27,16 @@ class RowResultDecoder extends RowDecoder { private static final int NULL = 0xFB; - MySQLRowDesc rowDesc; + MySQLRowDescriptor rowDesc; - RowResultDecoder(Collector collector, MySQLRowDesc rowDesc) { + RowResultDecoder(Collector collector, MySQLRowDescriptor rowDesc) { super(collector); this.rowDesc = rowDesc; } @Override protected RowInternal row() { - return new MySQLRowImpl(rowDesc); + return new MySQLRow(rowDesc); } @Override diff --git a/vertx-mysql-client/src/test/java/io/vertx/tests/mysqlclient/impl/MySQLRowImplTest.java b/vertx-mysql-client/src/test/java/io/vertx/tests/mysqlclient/impl/MySQLRowTest.java similarity index 80% rename from vertx-mysql-client/src/test/java/io/vertx/tests/mysqlclient/impl/MySQLRowImplTest.java rename to vertx-mysql-client/src/test/java/io/vertx/tests/mysqlclient/impl/MySQLRowTest.java index de6a3f850..cda56e877 100644 --- a/vertx-mysql-client/src/test/java/io/vertx/tests/mysqlclient/impl/MySQLRowImplTest.java +++ b/vertx-mysql-client/src/test/java/io/vertx/tests/mysqlclient/impl/MySQLRowTest.java @@ -11,8 +11,8 @@ package io.vertx.tests.mysqlclient.impl; -import io.vertx.mysqlclient.impl.MySQLRowDesc; -import io.vertx.mysqlclient.impl.MySQLRowImpl; +import io.vertx.mysqlclient.impl.MySQLRowDescriptor; +import io.vertx.mysqlclient.impl.MySQLRow; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import org.junit.Test; @@ -21,14 +21,14 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; -public class MySQLRowImplTest { +public class MySQLRowTest { enum EnumValue { SOME, NONE } @Test public void testGetNullEnum() { - MySQLRowImpl row = new MySQLRowImpl(MySQLRowDesc.create(new ColumnDefinition[0], null)); + MySQLRow row = new MySQLRow(MySQLRowDescriptor.create(new ColumnDefinition[0], null)); row.addValue(null); assertNull(row.get(EnumValue.class, 0)); diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java index b2920c0b7..4ac69dbb7 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java @@ -15,14 +15,14 @@ import io.vertx.core.json.JsonObject; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.time.*; import java.util.UUID; public class OracleRow extends RowBase { - public OracleRow(RowDesc desc) { + public OracleRow(RowDescriptor desc) { super(desc); } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDesc.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDescriptor.java similarity index 66% rename from vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDesc.java rename to vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDescriptor.java index 36faba690..fee4d2857 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDesc.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDescriptor.java @@ -11,20 +11,20 @@ package io.vertx.oracleclient.impl; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.sql.ResultSetMetaData; import java.sql.SQLException; -public class OracleRowDesc extends RowDesc { +public class OracleRowDescriptor extends RowDescriptor { - public static final OracleRowDesc EMPTY = new OracleRowDesc(new OracleColumnDesc[0]); + public static final OracleRowDescriptor EMPTY = new OracleRowDescriptor(new OracleColumnDesc[0]); - private OracleRowDesc(OracleColumnDesc[] columnDescriptors) { + private OracleRowDescriptor(OracleColumnDesc[] columnDescriptors) { super(columnDescriptors); } - public static OracleRowDesc create(ResultSetMetaData metaData) throws SQLException { + public static OracleRowDescriptor create(ResultSetMetaData metaData) throws SQLException { if (metaData == null) { return EMPTY; } @@ -33,6 +33,6 @@ public static OracleRowDesc create(ResultSetMetaData metaData) throws SQLExcepti for (int i = 0; i < cols; i++) { columnDescriptors[i] = new OracleColumnDesc(metaData, i + 1); } - return new OracleRowDesc(columnDescriptors); + return new OracleRowDescriptor(columnDescriptors); } } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java index 4348047fd..50117823e 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java @@ -18,7 +18,7 @@ import io.vertx.oracleclient.OracleException; import io.vertx.oracleclient.impl.commands.OracleResponse; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import oracle.jdbc.OracleResultSet; import java.sql.ResultSetMetaData; @@ -40,7 +40,7 @@ public class RowReader implements Flow.Subscriber, Function> classes; - private final RowDesc description; + private final RowDescriptor description; private final Statement resultSetStatement; // The following fields must be read/updated on the RowReader context @@ -67,7 +67,7 @@ public RowReader(ContextInternal context, Collector collector, Oracle classes.add(getType(metaData.getColumnClassName(i))); } Flow.Publisher publisher = ors.publisherOracle(this); - description = OracleRowDesc.create(metaData); + description = OracleRowDescriptor.create(metaData); publisher.subscribe(this); } @@ -175,7 +175,7 @@ public Row apply(oracle.jdbc.OracleRow oracleRow) { } } - private static Row transform(List> classes, RowDesc desc, oracle.jdbc.OracleRow or) throws SQLException { + private static Row transform(List> classes, RowDescriptor desc, oracle.jdbc.OracleRow or) throws SQLException { Row row = new OracleRow(desc); for (int i = 1; i <= desc.columnNames().size(); i++) { Object res = convertSqlValue(or.getObject(i, classes.get(i - 1))); diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java index e99c85e1c..6a32dc94e 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedBatchQuery.java @@ -17,7 +17,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import oracle.jdbc.OracleConnection; import oracle.jdbc.OraclePreparedStatement; @@ -36,7 +36,7 @@ public class OraclePreparedBatchQuery extends OracleQueryCommand { private final String sql; - private final List listParams; + private final List listParams; private final QueryResultHandler resultHandler; public OraclePreparedBatchQuery(OracleConnection oracleConnection, ContextInternal connectionContext, ExtendedQueryCommand cmd, Collector collector) { diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java index e3c851764..34fe5e073 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java @@ -10,8 +10,8 @@ */ package io.vertx.oracleclient.impl.commands; -import io.vertx.oracleclient.impl.OracleRowDesc; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.oracleclient.impl.OracleRowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.internal.PreparedStatement; import java.sql.ResultSetMetaData; @@ -20,23 +20,23 @@ public class OraclePreparedStatement implements PreparedStatement { private final String sql; - private final RowDesc rowDesc; + private final RowDescriptor rowDescriptor; public OraclePreparedStatement(String sql, java.sql.PreparedStatement preparedStatement) throws SQLException { ResultSetMetaData metaData = preparedStatement.getMetaData(); - RowDesc rowDesc; + RowDescriptor rowDescriptor; if (metaData != null) { - rowDesc = OracleRowDesc.create(metaData); + rowDescriptor = OracleRowDescriptor.create(metaData); } else { - rowDesc = OracleRowDesc.EMPTY; + rowDescriptor = OracleRowDescriptor.EMPTY; } this.sql = sql; - this.rowDesc = rowDesc; + this.rowDescriptor = rowDescriptor; } @Override - public RowDesc rowDesc() { - return rowDesc; + public RowDescriptor rowDesc() { + return rowDescriptor; } @Override diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java index ca87f4d63..b6dc641ae 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java @@ -20,10 +20,10 @@ import io.vertx.oracleclient.data.Blob; import io.vertx.oracleclient.impl.Helper; import io.vertx.oracleclient.impl.OracleRow; -import io.vertx.oracleclient.impl.OracleRowDesc; +import io.vertx.oracleclient.impl.OracleRowDescriptor; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.desc.ColumnDescriptor; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import oracle.jdbc.OracleConnection; import oracle.jdbc.OraclePreparedStatement; import oracle.sql.TIMESTAMPTZ; @@ -209,7 +209,7 @@ protected OracleResponse decode(Statement statement, int[] returnedBatchResul BiConsumer accumulator = collector.accumulator(); - RowDesc desc = OracleRowDesc.EMPTY; + RowDescriptor desc = OracleRowDescriptor.EMPTY; C container = collector.supplier().get(); for (int result : returnedBatchResult) { Row row = new OracleRow(desc); @@ -233,7 +233,7 @@ private void decodeResultSet(ResultSet rs, OracleResponse response) throws SQ C container = collector.supplier().get(); int size = 0; ResultSetMetaData metaData = rs.getMetaData(); - RowDesc desc = OracleRowDesc.create(metaData); + RowDescriptor desc = OracleRowDescriptor.create(metaData); while (rs.next()) { size++; Row row = new OracleRow(desc); @@ -255,7 +255,7 @@ private void decodeReturnedKeys(Statement statement, OracleResponse response) if (metaData != null) { int cols = metaData.getColumnCount(); if (cols > 0) { - RowDesc keysDesc = OracleRowDesc.create(metaData); + RowDescriptor keysDesc = OracleRowDescriptor.create(metaData); OracleRow keys = new OracleRow(keysDesc); for (int i = 1; i <= cols; i++) { ColumnDescriptor columnDesc = keysDesc.columnDescriptor().get(i - 1); diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java index 79bf72aa5..e23340d1a 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java @@ -13,7 +13,7 @@ import io.vertx.oracleclient.OracleClient; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.util.ArrayList; import java.util.List; @@ -23,9 +23,9 @@ public class OracleResponse { static class RS { R holder; int size; - RowDesc desc; + RowDescriptor desc; - RS(R holder, RowDesc desc, int size) { + RS(R holder, RowDescriptor desc, int size) { this.holder = holder; this.desc = desc; this.size = size; @@ -42,7 +42,7 @@ public OracleResponse(int updateCount) { this.update = updateCount; } - public void push(R decodeResultSet, RowDesc desc, int size) { + public void push(R decodeResultSet, RowDescriptor desc, int size) { if (rs == null) { rs = new ArrayList<>(); } @@ -57,7 +57,7 @@ public void empty(R apply) { this.empty = apply; } - public void outputs(R decodeResultSet, RowDesc desc, int size) { + public void outputs(R decodeResultSet, RowDescriptor desc, int size) { if (output == null) { output = new ArrayList<>(); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/RowImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java similarity index 98% rename from vertx-pg-client/src/main/java/io/vertx/pgclient/impl/RowImpl.java rename to vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java index 4e599b476..ecb657f54 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/RowImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java @@ -23,21 +23,20 @@ import io.vertx.pgclient.data.*; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.lang.reflect.Array; import java.math.BigDecimal; import java.time.*; -import java.util.List; import java.util.UUID; -public class RowImpl extends RowBase { +public class PgRow extends RowBase { - public RowImpl(RowDesc desc) { + public PgRow(RowDescriptor desc) { super(desc); } - public RowImpl(RowImpl row) { + public PgRow(PgRow row) { super(row.desc, row); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataType.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataType.java index a63738742..220a0415a 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataType.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataType.java @@ -27,7 +27,7 @@ import io.vertx.pgclient.data.*; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.data.Numeric; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.sql.JDBCType; import java.time.*; @@ -243,7 +243,7 @@ private static class DefaultParamExtractor implements ParamExtractor { } @Override - public T get(TupleInternal tuple, int idx) { + public T get(TupleBase tuple, int idx) { Object value = tuple.getValue(idx); if (value == null) { return null; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java index aeaa11a2c..62d3616d2 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java @@ -17,9 +17,9 @@ package io.vertx.pgclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.codec.InvalidCachedStatementEvent; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; @@ -54,7 +54,7 @@ void encode(PgEncoder encoder) { if (encoder.useLayer7Proxy) { encoder.writeParse(ps.sql, ps.bind.statement, new DataType[0]); } - for (TupleInternal param : cmd.paramsList()) { + for (TupleBase param : cmd.paramsList()) { encoder.writeBind(ps.bind, cmd.cursorId(), param); encoder.writeExecute(cmd.cursorId(), cmd.fetch()); } @@ -79,7 +79,7 @@ void handleParseComplete() { void handlePortalSuspended() { Throwable failure = rowDecoder.complete(); R result = rowDecoder.result(); - RowDesc desc = rowDecoder.desc; + RowDescriptor desc = rowDecoder.desc; int size = rowDecoder.size(); rowDecoder.reset(); this.result = true; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ParamExtractor.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ParamExtractor.java index 92f4de9a9..50ed2a640 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ParamExtractor.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ParamExtractor.java @@ -12,14 +12,14 @@ import io.vertx.core.json.Json; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.Arrays; import java.util.stream.Collectors; interface ParamExtractor { - static String extractUnknownType(TupleInternal tuple, int pos) { + static String extractUnknownType(TupleBase tuple, int pos) { Object value = tuple.getValue(pos); if (value instanceof Object[]) { String[] strings = tuple.getArrayOfStrings(pos); @@ -29,7 +29,7 @@ static String extractUnknownType(TupleInternal tuple, int pos) { } } - T get(TupleInternal tuple, int idx); + T get(TupleBase tuple, int idx); private static String encodeJsonToString(Object value) { if (value == Tuple.JSON_NULL) { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java index e2b3cc759..0c624517e 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java @@ -26,7 +26,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.pgclient.impl.util.Util; import io.vertx.sqlclient.impl.HexSequence; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import java.util.*; @@ -577,7 +577,7 @@ void writeScramClientFinalMessage(ScramClientFinalMessage msg) { * This message includes an SQL command (or commands) expressed as a text string. *

* The possible response messages from the backend are - * {@link CommandComplete}, {@link RowDesc}, {@link DataRow}, {@link EmptyQueryResponse}, {@link ErrorResponse}, + * {@link CommandComplete}, {@link RowDescriptor}, {@link DataRow}, {@link EmptyQueryResponse}, {@link ErrorResponse}, * {@link ReadyForQuery} and {@link NoticeResponse} */ void writeQuery(Query query) { @@ -589,16 +589,16 @@ void writeQuery(Query query) { * The message that using "statement" variant specifies the name of an existing prepared statement. *

* The response is a {@link ParamDesc} message describing the parameters needed by the statement, - * followed by a {@link RowDesc} message describing the rows that will be returned when the statement is eventually + * followed by a {@link RowDescriptor} message describing the rows that will be returned when the statement is eventually * executed or a {@link NoData} message if the statement will not return rows. * {@link ErrorResponse} is issued if there is no such prepared statement. *

* Note that since {@link Bind} has not yet been issued, the formats to be used for returned columns are not yet known to - * the backend; the format code fields in the {@link RowDesc} message will be zeroes in this case. + * the backend; the format code fields in the {@link RowDescriptor} message will be zeroes in this case. *

* The message that using "portal" variant specifies the name of an existing portal. *

- * The response is a {@link RowDesc} message describing the rows that will be returned by executing the portal; + * The response is a {@link RowDescriptor} message describing the rows that will be returned by executing the portal; * or a {@link NoData} message if the portal does not contain a query that will return rows; or {@link ErrorResponse} * if there is no such portal. */ @@ -617,7 +617,7 @@ void writeParse(String sql, byte[] statement, DataType[] parameterTypes) { * in other cases the command is always executed to completion, and the row count of the result is ignored. *

* The possible responses to this message are the same as {@link Query} message, except that - * it doesn't cause {@link ReadyForQuery} or {@link RowDesc} to be issued. + * it doesn't cause {@link ReadyForQuery} or {@link RowDescriptor} to be issued. *

* If Execute terminates before completing the execution of a portal, it will send a {@link PortalSuspended} message; * the appearance of this message tells the frontend that another Execute should be issued against the same portal to diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java index df36316b3..5e43152c6 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgParamDesc.java @@ -19,7 +19,7 @@ import io.vertx.core.VertxException; import io.vertx.sqlclient.impl.ErrorMessageFactory; import io.vertx.sqlclient.internal.ArrayTuple; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.Arrays; import java.util.function.Function; @@ -40,7 +40,7 @@ DataType[] paramDataTypes() { return paramDataTypes; } - public TupleInternal prepare(TupleInternal values) { + public TupleBase prepare(TupleBase values) { int numberOfParams = values.size(); if (numberOfParams > 65535) { throw new VertxException("The number of parameters (" + numberOfParams + ") exceeds the maximum of 65535. Use arrays or split the query.", true); @@ -49,7 +49,7 @@ public TupleInternal prepare(TupleInternal values) { if (numberOfParams != paramDescLength) { throw new VertxException(ErrorMessageFactory.buildWhenArgumentsLengthNotMatched(paramDescLength, numberOfParams), true); } - TupleInternal prepared = values; + TupleBase prepared = values; for (int i = 0; i < paramDescLength; i++) { DataType paramDataType = paramDataTypes[i]; ParamExtractor extractor = paramDataType.paramExtractor; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java index 8f42e60a0..98580843c 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgPreparedStatement.java @@ -18,17 +18,17 @@ package io.vertx.pgclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; class PgPreparedStatement implements PreparedStatement { final String sql; final Bind bind; final PgParamDesc paramDesc; - final PgRowDesc rowDesc; + final PgRowDescriptor rowDesc; final boolean cached; - PgPreparedStatement(String sql, byte[] statement, PgParamDesc paramDesc, PgRowDesc rowDesc, boolean cached) { + PgPreparedStatement(String sql, byte[] statement, PgParamDesc paramDesc, PgRowDescriptor rowDesc, boolean cached) { this.paramDesc = paramDesc; this.rowDesc = rowDesc; this.sql = sql; @@ -37,7 +37,7 @@ class PgPreparedStatement implements PreparedStatement { } @Override - public PgRowDesc rowDesc() { + public PgRowDescriptor rowDesc() { return rowDesc; } @@ -47,7 +47,7 @@ public String sql() { } @Override - public TupleInternal prepare(TupleInternal values) { + public TupleBase prepare(TupleBase values) { return paramDesc.prepare(values); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDesc.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDescriptor.java similarity index 74% rename from vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDesc.java rename to vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDescriptor.java index 557cc630b..a005f1bcf 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDesc.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDescriptor.java @@ -16,11 +16,11 @@ */ package io.vertx.pgclient.impl.codec; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; -class PgRowDesc extends RowDesc { +class PgRowDescriptor extends RowDescriptor { - static PgRowDesc createBinary(PgColumnDesc[] columns) { + static PgRowDescriptor createBinary(PgColumnDesc[] columns) { // Fix to use binary when possible for (int i = 0; i < columns.length; i++) { PgColumnDesc columnDesc = columns[i]; @@ -28,16 +28,16 @@ static PgRowDesc createBinary(PgColumnDesc[] columns) { columns[i] = columnDesc.toBinaryDataFormat(); } } - return new PgRowDesc(columns); + return new PgRowDescriptor(columns); } - static PgRowDesc create(PgColumnDesc[] columns) { - return new PgRowDesc(columns); + static PgRowDescriptor create(PgColumnDesc[] columns) { + return new PgRowDescriptor(columns); } final PgColumnDesc[] columns; - private PgRowDesc(PgColumnDesc[] columns) { + private PgRowDescriptor(PgColumnDesc[] columns) { super(columns); this.columns = columns; } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java index d12997904..afa648d89 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PrepareStatementCommandCodec.java @@ -26,7 +26,7 @@ class PrepareStatementCommandCodec extends PgCommandCodec extends RowDecoder { - final PgRowDesc desc; + final PgRowDescriptor desc; - public RowResultDecoder(Collector collector, PgRowDesc desc) { + public RowResultDecoder(Collector collector, PgRowDescriptor desc) { super(collector); this.desc = desc; } @Override protected RowInternal row() { - return new RowImpl(desc); + return new PgRow(desc); } @Override diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java index 735ac831f..902ca43f8 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/SimpleQueryCodec.java @@ -35,6 +35,6 @@ void encode(PgEncoder encoder) { @Override void handleRowDescription(PgColumnDesc[] columnDescs) { - rowDecoder = new RowResultDecoder<>(cmd.collector(), PgRowDesc.create(columnDescs)); + rowDecoder = new RowResultDecoder<>(cmd.collector(), PgRowDescriptor.create(columnDescs)); } } diff --git a/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/impl/RowImplTest.java b/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/impl/PgRowTest.java similarity index 83% rename from vertx-pg-client/src/test/java/io/vertx/tests/pgclient/impl/RowImplTest.java rename to vertx-pg-client/src/test/java/io/vertx/tests/pgclient/impl/PgRowTest.java index db1bdfad2..e71e6307f 100644 --- a/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/impl/RowImplTest.java +++ b/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/impl/PgRowTest.java @@ -11,8 +11,8 @@ package io.vertx.tests.pgclient.impl; -import io.vertx.pgclient.impl.RowImpl; -import io.vertx.tests.sqlclient.TestRowDesc; +import io.vertx.pgclient.impl.PgRow; +import io.vertx.tests.sqlclient.TestRowDescriptor; import org.junit.Test; import java.time.LocalDate; @@ -20,13 +20,13 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; -public class RowImplTest { +public class PgRowTest { enum EnumValue { SOME, NONE } @Test public void testGetNullEnum() { - RowImpl row = new RowImpl(TestRowDesc.create("enum")); + PgRow row = new PgRow(TestRowDescriptor.create("enum")); row.addValue(null); assertNull(row.get(EnumValue.class, 0)); diff --git a/vertx-sql-client-templates/src/main/java/io/vertx/sqlclient/templates/impl/JsonTuple.java b/vertx-sql-client-templates/src/main/java/io/vertx/sqlclient/templates/impl/JsonTuple.java index d868690cd..f5254c25f 100644 --- a/vertx-sql-client-templates/src/main/java/io/vertx/sqlclient/templates/impl/JsonTuple.java +++ b/vertx-sql-client-templates/src/main/java/io/vertx/sqlclient/templates/impl/JsonTuple.java @@ -12,11 +12,11 @@ import io.vertx.core.json.JsonObject; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.function.Function; -public class JsonTuple extends TupleInternal { +public class JsonTuple extends TupleBase { private final int size; private final Function columnMapping; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java index 86fa0cf4f..027da9a37 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java @@ -25,7 +25,7 @@ import io.vertx.sqlclient.Row; import io.vertx.sqlclient.RowSet; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.UUID; @@ -38,13 +38,13 @@ public class CursorImpl implements Cursor { private final PreparedStatementBase ps; private final ContextInternal context; private final boolean autoCommit; - private final TupleInternal params; + private final TupleBase params; private String id; private boolean closed; QueryResultBuilder, RowSetImpl, RowSet> result; - CursorImpl(PreparedStatementBase ps, Connection conn, ContextInternal context, boolean autoCommit, TupleInternal params) { + CursorImpl(PreparedStatementBase ps, Connection conn, ContextInternal context, boolean autoCommit, TupleBase params) { this.ps = ps; this.conn = conn; this.context = context; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ListTuple.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ListTuple.java index a38e1e3ca..f29460825 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ListTuple.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/ListTuple.java @@ -18,11 +18,11 @@ package io.vertx.sqlclient.impl; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.List; -public class ListTuple extends TupleInternal { +public class ListTuple extends TupleBase { private final List list; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java index 346fe5797..793b50118 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java @@ -34,7 +34,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.core.*; import io.vertx.sqlclient.spi.protocol.PrepareStatementCommand; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -69,7 +69,7 @@ protected void closeCursor(String cursorId, Promise promise) { conn.schedule(cmd, promise); } @Override - protected void readCursor(CursorImpl cursor, String id, boolean suspended, TupleInternal params, int count, PromiseInternal> promise) { + protected void readCursor(CursorImpl cursor, String id, boolean suspended, TupleBase params, int count, PromiseInternal> promise) { QueryExecutor, RowSetImpl, RowSet> builder = new QueryExecutor<>(RowSetImpl.FACTORY, RowSetImpl.COLLECTOR); cursor.result = builder.executeExtendedQuery(conn, preparedStatement, null, autoCommit, params, count, id, suspended, promise); } @@ -113,7 +113,7 @@ protected > void execute(Tuple args, int fetch, String }); } @Override - protected void readCursor(CursorImpl cursor, String id, boolean suspended, TupleInternal params, int count, PromiseInternal> promise) { + protected void readCursor(CursorImpl cursor, String id, boolean suspended, TupleBase params, int count, PromiseInternal> promise) { withPreparedStatement(options, params, ar -> { if (ar.succeeded()) { QueryExecutor, RowSetImpl, RowSet> builder = new QueryExecutor<>(RowSetImpl.FACTORY, RowSetImpl.COLLECTOR); @@ -170,7 +170,7 @@ private PreparedStatementBase(Connection conn, ContextInternal context, boolean protected abstract > void executeBatch(List argsList, QueryExecutor builder, PromiseInternal p); protected abstract void close(Promise promise); protected abstract void closeCursor(String cursorId, Promise promise); - protected abstract void readCursor(CursorImpl cursor, String id, boolean suspended, TupleInternal params, int count, PromiseInternal> promise); + protected abstract void readCursor(CursorImpl cursor, String id, boolean suspended, TupleBase params, int count, PromiseInternal> promise); @Override public final PreparedQuery> query() { @@ -179,7 +179,7 @@ public final PreparedQuery> query() { @Override public final Cursor cursor(Tuple args) { - return new CursorImpl(this, conn, context, autoCommit, (TupleInternal) args); + return new CursorImpl(this, conn, context, autoCommit, (TupleBase) args); } @Override diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java index 6c53ec2cd..5ed6be09c 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryExecutor.java @@ -27,7 +27,7 @@ import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.List; import java.util.function.Function; @@ -73,7 +73,7 @@ QueryResultBuilder executeExtendedQuery(CommandScheduler scheduler, ContextInternal context = promise.context(); QueryResultBuilder handler = createHandler(promise); try { - values = preparedStatement.prepare((TupleInternal) values); + values = preparedStatement.prepare((TupleBase) values); } catch (Exception e) { handler.fail(e); return null; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java index 04ef6a3fb..9c10c6e4d 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java @@ -18,13 +18,12 @@ package io.vertx.sqlclient.impl; import io.vertx.core.Completable; -import io.vertx.core.Future; import io.vertx.core.Promise; import io.vertx.core.internal.PromiseInternal; import io.vertx.sqlclient.PropertyKind; import io.vertx.sqlclient.SqlResult; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.util.function.Function; @@ -46,7 +45,7 @@ public class QueryResultBuilder, L extends SqlResu } @Override - public void handleResult(int updatedCount, int size, RowDesc desc, T result, Throwable failure) { + public void handleResult(int updatedCount, int size, RowDescriptor desc, T result, Throwable failure) { if (failure != null) { this.failure = failure; } else { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java index 6b1fd4f8a..bdb916cb6 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java @@ -2,7 +2,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.ArrayTuple; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.internal.RowInternal; import java.util.Collection; @@ -14,21 +14,21 @@ public class RowBase extends ArrayTuple implements RowInternal { private boolean released; - protected final RowDesc desc; + protected final RowDescriptor desc; - public RowBase(RowDesc desc) { + public RowBase(RowDescriptor desc) { super(desc.columnNames().size()); this.desc = desc; } - public RowBase(RowDesc desc, Collection c) { + public RowBase(RowDescriptor desc, Collection c) { super(c); this.desc = desc; } - public RowBase(RowDesc desc, Tuple tuple) { + public RowBase(RowDescriptor desc, Tuple tuple) { super(tuple); this.desc = desc; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ArrayTuple.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ArrayTuple.java index 49301095e..7c7de12af 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ArrayTuple.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/ArrayTuple.java @@ -22,7 +22,7 @@ import java.util.Arrays; import java.util.Collection; -public class ArrayTuple extends TupleInternal { +public class ArrayTuple extends TupleBase { private static final Object[] EMPTY_ARRAY = new Object[0]; public static Tuple EMPTY = new ArrayTuple(0); diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java index 5479d3429..d4bd98b35 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java @@ -22,16 +22,16 @@ public interface PreparedStatement { - RowDesc rowDesc(); + RowDescriptor rowDesc(); String sql(); - default List prepare(List batch) throws Exception { - List actual = batch; + default List prepare(List batch) throws Exception { + List actual = batch; int size = actual.size(); for (int idx = 0;idx < size;idx++) { - TupleInternal values = batch.get(idx); - TupleInternal prepared = prepare(values); + TupleBase values = batch.get(idx); + TupleBase prepared = prepare(values); if (prepared != values) { if (batch == actual) { actual = new ArrayList<>(actual); @@ -42,7 +42,7 @@ default List prepare(List batch) throws Exception return actual; } - default TupleInternal prepare(TupleInternal values) throws Exception { + default TupleBase prepare(TupleBase values) throws Exception { return values; } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java index ddaae2347..dd2c204ac 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java @@ -29,12 +29,12 @@ public interface QueryResultHandler { public void addProperty(PropertyKind property, V value) { } @Override - public void handleResult(int updatedCount, int size, RowDesc desc, Void result, Throwable failure) { + public void handleResult(int updatedCount, int size, RowDescriptor desc, Void result, Throwable failure) { } }; void addProperty(PropertyKind property, V value); - void handleResult(int updatedCount, int size, RowDesc desc, T result, Throwable failure); + void handleResult(int updatedCount, int size, RowDescriptor desc, T result, Throwable failure); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDesc.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptor.java similarity index 96% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDesc.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptor.java index 4e53b713b..317c2484b 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDesc.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptor.java @@ -26,12 +26,12 @@ /** * @author Emad Alblueshi */ -public class RowDesc { +public class RowDescriptor { private final ColumnNames columnNames; private final ColumnDescriptors columnDescriptors; - public RowDesc(ColumnDescriptor[] columnDescriptors) { + public RowDescriptor(ColumnDescriptor[] columnDescriptors) { this.columnNames = new ColumnNames(columnDescriptors); this.columnDescriptors = new ColumnDescriptors(columnDescriptors); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java index 8490d2270..89de20a2a 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/SqlClientBase.java @@ -45,9 +45,9 @@ public abstract class SqlClientBase implements SqlClientInternal, CommandScheduler { - protected final Driver driver; + protected final Driver driver; - public SqlClientBase(Driver driver) { + public SqlClientBase(Driver driver) { this.driver = driver; } @@ -56,7 +56,7 @@ public SqlClientBase(Driver driver) { protected abstract PromiseInternal promise(); @Override - public Driver driver() { + public Driver driver() { return driver; } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/TupleInternal.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/TupleBase.java similarity index 95% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/TupleInternal.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/TupleBase.java index 4d9120353..476bf68b2 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/TupleInternal.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/TupleBase.java @@ -17,7 +17,7 @@ import java.util.ArrayList; import java.util.List; -public abstract class TupleInternal implements Tuple { +public abstract class TupleBase implements Tuple { public abstract void setValue(int pos, Object value); diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/ExtendedQueryCommand.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/ExtendedQueryCommand.java index 0fb139ee4..4baecbf8a 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/ExtendedQueryCommand.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/protocol/ExtendedQueryCommand.java @@ -22,7 +22,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.TupleInternal; +import io.vertx.sqlclient.internal.TupleBase; import java.util.List; import java.util.stream.Collector; @@ -115,10 +115,10 @@ public String prepare(PreparedStatement ps) { prepared = true; // TODO : fix this try { if (batch) { - tuples = ps.prepare((List) tuples); + tuples = ps.prepare((List) tuples); return null; } else { - tuples = ps.prepare((TupleInternal) tuples); + tuples = ps.prepare((TupleBase) tuples); } } catch (Exception e) { return e.getMessage(); @@ -134,8 +134,8 @@ public boolean isBatch() { /** * @return the list of parameters for batch execution */ - public List paramsList() { - return batch ? (List) tuples : null; + public List paramsList() { + return batch ? (List) tuples : null; } /** @@ -150,7 +150,7 @@ public List> parameterTypes() { } tuple = list.get(0); } else { - tuple = (TupleInternal) tuples; + tuple = (TupleBase) tuples; } return tuple.types(); } @@ -158,8 +158,8 @@ public List> parameterTypes() { /** * @return the parameters for query execution */ - public TupleInternal params() { - return batch ? null : (TupleInternal) tuples; + public TupleBase params() { + return batch ? null : (TupleBase) tuples; } public PreparedStatement preparedStatement() { diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDesc.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDescriptor.java similarity index 81% rename from vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDesc.java rename to vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDescriptor.java index 693caf212..9f13ef411 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDesc.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDescriptor.java @@ -12,22 +12,22 @@ package io.vertx.tests.sqlclient; import io.vertx.sqlclient.desc.ColumnDescriptor; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import java.sql.JDBCType; -public class TestRowDesc extends RowDesc { +public class TestRowDescriptor extends RowDescriptor { - private TestRowDesc(TestColumnDescriptor[] columnDescriptors) { + private TestRowDescriptor(TestColumnDescriptor[] columnDescriptors) { super(columnDescriptors); } - public static TestRowDesc create(String... names) { + public static TestRowDescriptor create(String... names) { TestColumnDescriptor[] columnDescriptors = new TestColumnDescriptor[names.length]; for (int i = 0; i < names.length; i++) { columnDescriptors[i] = new TestColumnDescriptor(names[i]); } - return new TestRowDesc(columnDescriptors); + return new TestRowDescriptor(columnDescriptors); } public static class TestColumnDescriptor implements ColumnDescriptor { diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java index 583054e00..796f0c2b9 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java @@ -18,7 +18,7 @@ import io.vertx.sqlclient.impl.RowBase; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.RowDesc; +import io.vertx.sqlclient.internal.RowDescriptor; import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; @@ -132,12 +132,12 @@ private void scheduleQueryCommand(SimpleQueryCommand simpleQuery, Comp Collector collector = (Collector) simpleQuery.collector(); A container = collector.supplier().get(); BiConsumer accumulator = collector.accumulator(); - RowDesc rowDesc = new RowDesc(new ColumnDescriptor[]{new VarcharColumnDescriptor("value")}); - Row row = new RowBase(rowDesc); + RowDescriptor rowDescriptor = new RowDescriptor(new ColumnDescriptor[]{new VarcharColumnDescriptor("value")}); + Row row = new RowBase(rowDescriptor); row.addValue("Hello " + simpleQuery.sql()); accumulator.accept(container, row); T result = collector.finisher().apply(container); - qrh.handleResult(0, 1, rowDesc + qrh.handleResult(0, 1, rowDescriptor , result, null); handler.succeed(true); } From ac14e24efa1f590d568e61e77fd48e5744ed7aa2 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 17:10:53 +0200 Subject: [PATCH 22/25] More cleanups, introduced a RowDescriptor interface to expose what is already there on the SqlResult. --- .../java/io/vertx/db2client/impl/DB2Row.java | 4 +- .../impl/codec/DB2PreparedStatement.java | 4 +- .../impl/codec/DB2RowDescriptor.java | 4 +- .../impl/codec/QueryCommandBaseCodec.java | 4 +- .../io/vertx/mssqlclient/impl/MSSQLRow.java | 4 +- .../impl/codec/MSSQLPreparedStatement.java | 4 +- .../impl/codec/MSSQLRowDescriptor.java | 6 +-- .../impl/codec/QueryCommandBaseCodec.java | 4 +- .../mysqlclient/impl/MySQLRowDescriptor.java | 4 +- .../impl/codec/MySQLPreparedStatement.java | 4 +- .../impl/codec/QueryCommandBaseCodec.java | 4 +- .../io/vertx/oracleclient/impl/OracleRow.java | 4 +- .../impl/OracleRowDescriptor.java | 4 +- .../io/vertx/oracleclient/impl/RowReader.java | 6 +-- .../commands/OraclePreparedStatement.java | 8 ++-- .../impl/commands/OracleQueryCommand.java | 10 ++--- .../impl/commands/OracleResponse.java | 10 ++--- .../java/io/vertx/pgclient/impl/PgRow.java | 4 +- .../impl/codec/ExtendedQueryCommandCodec.java | 4 +- .../vertx/pgclient/impl/codec/PgEncoder.java | 12 +++--- .../pgclient/impl/codec/PgRowDescriptor.java | 4 +- .../impl/codec/QueryCommandBaseCodec.java | 4 +- .../java/io/vertx/sqlclient/SqlResult.java | 3 ++ .../vertx/sqlclient/desc/RowDescriptor.java | 40 +++++++++++++++++++ .../sqlclient/impl/QueryResultBuilder.java | 7 ++-- .../java/io/vertx/sqlclient/impl/RowBase.java | 10 ++--- .../vertx/sqlclient/impl/SqlResultBase.java | 16 ++++++-- .../sqlclient/internal/PreparedStatement.java | 2 +- .../internal/QueryResultHandler.java | 4 +- ...Descriptor.java => RowDescriptorBase.java} | 13 +++--- .../tests/sqlclient/TestRowDescriptor.java | 4 +- .../spi/backend/GenericDriverTest.java | 4 +- 32 files changed, 136 insertions(+), 83 deletions(-) create mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/desc/RowDescriptor.java rename vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/{RowDescriptor.java => RowDescriptorBase.java} (88%) diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java index 36ad57c1b..1fe95c3b7 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java @@ -29,11 +29,11 @@ import io.vertx.db2client.impl.drda.DB2RowId; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; public class DB2Row extends RowBase { - public DB2Row(RowDescriptor rowDescriptor) { + public DB2Row(RowDescriptorBase rowDescriptor) { super(rowDescriptor); } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java index 9117619ff..86854c961 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2PreparedStatement.java @@ -24,7 +24,7 @@ import io.vertx.db2client.impl.drda.Cursor; import io.vertx.db2client.impl.drda.Section; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.internal.TupleBase; public class DB2PreparedStatement implements PreparedStatement { @@ -58,7 +58,7 @@ public static class QueryInstance { } @Override - public RowDescriptor rowDesc() { + public RowDescriptorBase rowDesc() { return rowDesc; } diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDescriptor.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDescriptor.java index 793de9b67..12d3fa238 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDescriptor.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/DB2RowDescriptor.java @@ -16,12 +16,12 @@ package io.vertx.db2client.impl.codec; import io.vertx.db2client.impl.drda.ColumnMetaData; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.sql.JDBCType; import java.util.List; -class DB2RowDescriptor extends RowDescriptor { +class DB2RowDescriptor extends RowDescriptorBase { private final ColumnMetaData columnMetaData; diff --git a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java index 9b063fab1..a640b175c 100644 --- a/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-db2-client/src/main/java/io/vertx/db2client/impl/codec/QueryCommandBaseCodec.java @@ -18,7 +18,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.db2client.impl.drda.ColumnMetaData; import io.vertx.db2client.impl.drda.DRDAQueryRequest; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; abstract class QueryCommandBaseCodec> extends CommandCodec { @@ -79,7 +79,7 @@ void decodePayload(ByteBuf payload, int payloadLength) { void handleQueryResult(RowResultDecoder decoder) { Throwable failure = decoder.complete(); T result = decoder.result(); - RowDescriptor rowDescriptor = decoder.rowDesc; + RowDescriptorBase rowDescriptor = decoder.rowDesc; int size = decoder.size(); int updatedCount = decoder.size(); decoder.reset(); diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java index faa55c77a..a8b96aa47 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java @@ -13,7 +13,7 @@ import io.vertx.core.buffer.Buffer; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.math.BigDecimal; import java.time.LocalDate; @@ -25,7 +25,7 @@ public class MSSQLRow extends RowBase { - public MSSQLRow(RowDescriptor rowDescriptor) { + public MSSQLRow(RowDescriptorBase rowDescriptor) { super(rowDescriptor); } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java index 956350e2f..f9ee313de 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLPreparedStatement.java @@ -12,7 +12,7 @@ package io.vertx.mssqlclient.impl.codec; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; public class MSSQLPreparedStatement implements PreparedStatement { @@ -24,7 +24,7 @@ public MSSQLPreparedStatement(String sql) { } @Override - public RowDescriptor rowDesc() { + public RowDescriptorBase rowDesc() { throw new UnsupportedOperationException(); } diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDescriptor.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDescriptor.java index c5de996bd..f51fe3654 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDescriptor.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/MSSQLRowDescriptor.java @@ -11,17 +11,17 @@ package io.vertx.mssqlclient.impl.codec; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.util.Arrays; /** - * An implementation of {@link RowDescriptor} for MSSQL. + * An implementation of {@link RowDescriptorBase} for MSSQL. *

* When reading rows with a cursor, an extra column named {@code ROWSTAT} is returned by the server. * This column should not be conveyed to the user so this class filters it out. */ -public class MSSQLRowDescriptor extends RowDescriptor { +public class MSSQLRowDescriptor extends RowDescriptorBase { private final ColumnData[] columnDatas; private final boolean rowStat; diff --git a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java index 493acdd14..50f03bd09 100644 --- a/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/codec/QueryCommandBaseCodec.java @@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; @@ -58,7 +58,7 @@ protected void handleResultSetDone() { T result; Throwable failure; int size; - RowDescriptor rowDescriptor; + RowDescriptorBase rowDescriptor; if (rowResultDecoder != null) { failure = rowResultDecoder.complete(); result = rowResultDecoder.result(); diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDescriptor.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDescriptor.java index 44462f7f0..fe0934117 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDescriptor.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRowDescriptor.java @@ -18,9 +18,9 @@ import io.vertx.mysqlclient.impl.datatype.DataFormat; import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; -public class MySQLRowDescriptor extends RowDescriptor { +public class MySQLRowDescriptor extends RowDescriptorBase { private final ColumnDefinition[] columnDefinitions; private final DataFormat dataFormat; diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java index f6058f533..f637a6543 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/MySQLPreparedStatement.java @@ -25,7 +25,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.impl.*; import io.vertx.sqlclient.internal.PreparedStatement; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.internal.TupleBase; import java.util.Arrays; @@ -56,7 +56,7 @@ public class MySQLPreparedStatement implements PreparedStatement { } @Override - public RowDescriptor rowDesc() { + public RowDescriptorBase rowDesc() { return rowDesc; } diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java index aa9f0287c..a410528f8 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/QueryCommandBaseCodec.java @@ -23,7 +23,7 @@ import io.vertx.mysqlclient.impl.protocol.ColumnDefinition; import io.vertx.mysqlclient.impl.util.BufferUtils; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; @@ -146,7 +146,7 @@ private void handleSingleResultsetEndPacket(int serverStatusFlags, int affectedR T result; Throwable failure; int size; - RowDescriptor rowDescriptor; + RowDescriptorBase rowDescriptor; if (decoder != null) { failure = decoder.complete(); result = decoder.result(); diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java index 4ac69dbb7..55f4c1ec7 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRow.java @@ -15,14 +15,14 @@ import io.vertx.core.json.JsonObject; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.time.*; import java.util.UUID; public class OracleRow extends RowBase { - public OracleRow(RowDescriptor desc) { + public OracleRow(RowDescriptorBase desc) { super(desc); } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDescriptor.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDescriptor.java index fee4d2857..0e32f4301 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDescriptor.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleRowDescriptor.java @@ -11,12 +11,12 @@ package io.vertx.oracleclient.impl; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.sql.ResultSetMetaData; import java.sql.SQLException; -public class OracleRowDescriptor extends RowDescriptor { +public class OracleRowDescriptor extends RowDescriptorBase { public static final OracleRowDescriptor EMPTY = new OracleRowDescriptor(new OracleColumnDesc[0]); diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java index 50117823e..f54e55ce2 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/RowReader.java @@ -18,7 +18,7 @@ import io.vertx.oracleclient.OracleException; import io.vertx.oracleclient.impl.commands.OracleResponse; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import oracle.jdbc.OracleResultSet; import java.sql.ResultSetMetaData; @@ -40,7 +40,7 @@ public class RowReader implements Flow.Subscriber, Function> classes; - private final RowDescriptor description; + private final RowDescriptorBase description; private final Statement resultSetStatement; // The following fields must be read/updated on the RowReader context @@ -175,7 +175,7 @@ public Row apply(oracle.jdbc.OracleRow oracleRow) { } } - private static Row transform(List> classes, RowDescriptor desc, oracle.jdbc.OracleRow or) throws SQLException { + private static Row transform(List> classes, RowDescriptorBase desc, oracle.jdbc.OracleRow or) throws SQLException { Row row = new OracleRow(desc); for (int i = 1; i <= desc.columnNames().size(); i++) { Object res = convertSqlValue(or.getObject(i, classes.get(i - 1))); diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java index 34fe5e073..b0d732449 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OraclePreparedStatement.java @@ -11,7 +11,7 @@ package io.vertx.oracleclient.impl.commands; import io.vertx.oracleclient.impl.OracleRowDescriptor; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.internal.PreparedStatement; import java.sql.ResultSetMetaData; @@ -20,11 +20,11 @@ public class OraclePreparedStatement implements PreparedStatement { private final String sql; - private final RowDescriptor rowDescriptor; + private final RowDescriptorBase rowDescriptor; public OraclePreparedStatement(String sql, java.sql.PreparedStatement preparedStatement) throws SQLException { ResultSetMetaData metaData = preparedStatement.getMetaData(); - RowDescriptor rowDescriptor; + RowDescriptorBase rowDescriptor; if (metaData != null) { rowDescriptor = OracleRowDescriptor.create(metaData); } else { @@ -35,7 +35,7 @@ public OraclePreparedStatement(String sql, java.sql.PreparedStatement preparedSt } @Override - public RowDescriptor rowDesc() { + public RowDescriptorBase rowDesc() { return rowDescriptor; } diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java index b6dc641ae..d30ed317b 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleQueryCommand.java @@ -23,7 +23,7 @@ import io.vertx.oracleclient.impl.OracleRowDescriptor; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.desc.ColumnDescriptor; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import oracle.jdbc.OracleConnection; import oracle.jdbc.OraclePreparedStatement; import oracle.sql.TIMESTAMPTZ; @@ -209,7 +209,7 @@ protected OracleResponse decode(Statement statement, int[] returnedBatchResul BiConsumer accumulator = collector.accumulator(); - RowDescriptor desc = OracleRowDescriptor.EMPTY; + RowDescriptorBase desc = OracleRowDescriptor.EMPTY; C container = collector.supplier().get(); for (int result : returnedBatchResult) { Row row = new OracleRow(desc); @@ -233,7 +233,7 @@ private void decodeResultSet(ResultSet rs, OracleResponse response) throws SQ C container = collector.supplier().get(); int size = 0; ResultSetMetaData metaData = rs.getMetaData(); - RowDescriptor desc = OracleRowDescriptor.create(metaData); + RowDescriptorBase desc = OracleRowDescriptor.create(metaData); while (rs.next()) { size++; Row row = new OracleRow(desc); @@ -255,10 +255,10 @@ private void decodeReturnedKeys(Statement statement, OracleResponse response) if (metaData != null) { int cols = metaData.getColumnCount(); if (cols > 0) { - RowDescriptor keysDesc = OracleRowDescriptor.create(metaData); + RowDescriptorBase keysDesc = OracleRowDescriptor.create(metaData); OracleRow keys = new OracleRow(keysDesc); for (int i = 1; i <= cols; i++) { - ColumnDescriptor columnDesc = keysDesc.columnDescriptor().get(i - 1); + ColumnDescriptor columnDesc = keysDesc.columnDescriptors().get(i - 1); Object res; switch (columnDesc.jdbcType()) { case TIMESTAMP: diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java index e23340d1a..26394aa9e 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/commands/OracleResponse.java @@ -13,7 +13,7 @@ import io.vertx.oracleclient.OracleClient; import io.vertx.sqlclient.Row; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.util.ArrayList; import java.util.List; @@ -23,9 +23,9 @@ public class OracleResponse { static class RS { R holder; int size; - RowDescriptor desc; + RowDescriptorBase desc; - RS(R holder, RowDescriptor desc, int size) { + RS(R holder, RowDescriptorBase desc, int size) { this.holder = holder; this.desc = desc; this.size = size; @@ -42,7 +42,7 @@ public OracleResponse(int updateCount) { this.update = updateCount; } - public void push(R decodeResultSet, RowDescriptor desc, int size) { + public void push(R decodeResultSet, RowDescriptorBase desc, int size) { if (rs == null) { rs = new ArrayList<>(); } @@ -57,7 +57,7 @@ public void empty(R apply) { this.empty = apply; } - public void outputs(R decodeResultSet, RowDescriptor desc, int size) { + public void outputs(R decodeResultSet, RowDescriptorBase desc, int size) { if (output == null) { output = new ArrayList<>(); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java index ecb657f54..06633e1a9 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java @@ -23,7 +23,7 @@ import io.vertx.pgclient.data.*; import io.vertx.sqlclient.data.Numeric; import io.vertx.sqlclient.impl.RowBase; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.lang.reflect.Array; import java.math.BigDecimal; @@ -32,7 +32,7 @@ public class PgRow extends RowBase { - public PgRow(RowDescriptor desc) { + public PgRow(RowDescriptorBase desc) { super(desc); } diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java index 62d3616d2..2713cb2d9 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/ExtendedQueryCommandCodec.java @@ -19,7 +19,7 @@ import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.TupleBase; import io.vertx.sqlclient.codec.InvalidCachedStatementEvent; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.codec.CommandResponse; import io.vertx.sqlclient.spi.protocol.ExtendedQueryCommand; @@ -79,7 +79,7 @@ void handleParseComplete() { void handlePortalSuspended() { Throwable failure = rowDecoder.complete(); R result = rowDecoder.result(); - RowDescriptor desc = rowDecoder.desc; + RowDescriptorBase desc = rowDecoder.desc; int size = rowDecoder.size(); rowDecoder.reset(); this.result = true; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java index 0c624517e..fdd08e9a6 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgEncoder.java @@ -26,7 +26,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.pgclient.impl.util.Util; import io.vertx.sqlclient.impl.HexSequence; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.spi.protocol.CloseConnectionCommand; import java.util.*; @@ -577,7 +577,7 @@ void writeScramClientFinalMessage(ScramClientFinalMessage msg) { * This message includes an SQL command (or commands) expressed as a text string. *

* The possible response messages from the backend are - * {@link CommandComplete}, {@link RowDescriptor}, {@link DataRow}, {@link EmptyQueryResponse}, {@link ErrorResponse}, + * {@link CommandComplete}, {@link RowDescriptorBase}, {@link DataRow}, {@link EmptyQueryResponse}, {@link ErrorResponse}, * {@link ReadyForQuery} and {@link NoticeResponse} */ void writeQuery(Query query) { @@ -589,16 +589,16 @@ void writeQuery(Query query) { * The message that using "statement" variant specifies the name of an existing prepared statement. *

* The response is a {@link ParamDesc} message describing the parameters needed by the statement, - * followed by a {@link RowDescriptor} message describing the rows that will be returned when the statement is eventually + * followed by a {@link RowDescriptorBase} message describing the rows that will be returned when the statement is eventually * executed or a {@link NoData} message if the statement will not return rows. * {@link ErrorResponse} is issued if there is no such prepared statement. *

* Note that since {@link Bind} has not yet been issued, the formats to be used for returned columns are not yet known to - * the backend; the format code fields in the {@link RowDescriptor} message will be zeroes in this case. + * the backend; the format code fields in the {@link RowDescriptorBase} message will be zeroes in this case. *

* The message that using "portal" variant specifies the name of an existing portal. *

- * The response is a {@link RowDescriptor} message describing the rows that will be returned by executing the portal; + * The response is a {@link RowDescriptorBase} message describing the rows that will be returned by executing the portal; * or a {@link NoData} message if the portal does not contain a query that will return rows; or {@link ErrorResponse} * if there is no such portal. */ @@ -617,7 +617,7 @@ void writeParse(String sql, byte[] statement, DataType[] parameterTypes) { * in other cases the command is always executed to completion, and the row count of the result is ignored. *

* The possible responses to this message are the same as {@link Query} message, except that - * it doesn't cause {@link ReadyForQuery} or {@link RowDescriptor} to be issued. + * it doesn't cause {@link ReadyForQuery} or {@link RowDescriptorBase} to be issued. *

* If Execute terminates before completing the execution of a portal, it will send a {@link PortalSuspended} message; * the appearance of this message tells the frontend that another Execute should be issued against the same portal to diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDescriptor.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDescriptor.java index a005f1bcf..d70192fd8 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDescriptor.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgRowDescriptor.java @@ -16,9 +16,9 @@ */ package io.vertx.pgclient.impl.codec; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; -class PgRowDescriptor extends RowDescriptor { +class PgRowDescriptor extends RowDescriptorBase { static PgRowDescriptor createBinary(PgColumnDesc[] columns) { // Fix to use binary when possible diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java index 07265d437..e75bbbadd 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/QueryCommandBaseCodec.java @@ -17,7 +17,7 @@ package io.vertx.pgclient.impl.codec; import io.vertx.sqlclient.Row; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.spi.protocol.QueryCommandBase; import java.util.stream.Collector; @@ -36,7 +36,7 @@ public void handleCommandComplete(int updated) { T result; Throwable failure; int size; - RowDescriptor desc; + RowDescriptorBase desc; if (rowDecoder != null) { failure = rowDecoder.complete(); result = rowDecoder.result(); diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlResult.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlResult.java index 90fcafac4..7a975d3bc 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlResult.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/SqlResult.java @@ -19,6 +19,7 @@ import io.vertx.codegen.annotations.VertxGen; import io.vertx.sqlclient.desc.ColumnDescriptor; +import io.vertx.sqlclient.desc.RowDescriptor; import java.util.List; @@ -37,6 +38,8 @@ public interface SqlResult { */ int rowCount(); + RowDescriptor rowDescriptor(); + /** * Get the names of columns in the SqlResult. * diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/desc/RowDescriptor.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/desc/RowDescriptor.java new file mode 100644 index 000000000..e6677f097 --- /dev/null +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/desc/RowDescriptor.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2011-2025 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 + * which is available at https://www.apache.org/licenses/LICENSE-2.0. + * + * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 + */ +package io.vertx.sqlclient.desc; + +import io.vertx.codegen.annotations.VertxGen; + +import java.util.List; + +/** + * Describe a database row. + */ +@VertxGen +public interface RowDescriptor { + + /** + * Get the index of the named column or {@literal -1} when not found + * @param columnName the column to lookup + * @return the index of the column + */ + int columnIndex(String columnName); + + /** + * @return the list of the column names + */ + List columnNames(); + + /** + * @return the list of column descriptors + */ + List columnDescriptors(); + +} diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java index 9c10c6e4d..ab6f2c263 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/QueryResultBuilder.java @@ -23,7 +23,7 @@ import io.vertx.sqlclient.PropertyKind; import io.vertx.sqlclient.SqlResult; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.util.function.Function; @@ -45,15 +45,14 @@ public class QueryResultBuilder, L extends SqlResu } @Override - public void handleResult(int updatedCount, int size, RowDescriptor desc, T result, Throwable failure) { + public void handleResult(int updatedCount, int size, RowDescriptorBase desc, T result, Throwable failure) { if (failure != null) { this.failure = failure; } else { R r = factory.apply(result); r.updated = updatedCount; r.size = size; - r.columnNames = desc != null ? desc.columnNames() : null; - r.columnDescriptors = desc != null ? desc.columnDescriptor() : null; + r.rowDescriptor = desc; handleResult(r); } } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java index bdb916cb6..38fdd3c33 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/RowBase.java @@ -2,7 +2,7 @@ import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.internal.ArrayTuple; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.internal.RowInternal; import java.util.Collection; @@ -14,21 +14,21 @@ public class RowBase extends ArrayTuple implements RowInternal { private boolean released; - protected final RowDescriptor desc; + protected final RowDescriptorBase desc; - public RowBase(RowDescriptor desc) { + public RowBase(RowDescriptorBase desc) { super(desc.columnNames().size()); this.desc = desc; } - public RowBase(RowDescriptor desc, Collection c) { + public RowBase(RowDescriptorBase desc, Collection c) { super(c); this.desc = desc; } - public RowBase(RowDescriptor desc, Tuple tuple) { + public RowBase(RowDescriptorBase desc, Tuple tuple) { super(tuple); this.desc = desc; diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SqlResultBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SqlResultBase.java index 19cf81b76..5a934ff23 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SqlResultBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/SqlResultBase.java @@ -20,26 +20,34 @@ import io.vertx.sqlclient.PropertyKind; import io.vertx.sqlclient.SqlResult; import io.vertx.sqlclient.desc.ColumnDescriptor; +import io.vertx.sqlclient.desc.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.util.List; public abstract class SqlResultBase implements SqlResult { int updated; - List columnNames; - List columnDescriptors; + RowDescriptorBase rowDescriptor; int size; SqlResult next; protected PropertyKindMap properties; @Override public List columnsNames() { - return columnNames; + RowDescriptorBase desc = rowDescriptor; + return desc != null ? desc.columnNames() : null; + } + + @Override + public RowDescriptor rowDescriptor() { + return rowDescriptor; } @Override public List columnDescriptors() { - return columnDescriptors; + RowDescriptorBase desc = rowDescriptor; + return desc != null ? desc.columnDescriptors() : null; } @Override diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java index d4bd98b35..aada5b1e6 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/PreparedStatement.java @@ -22,7 +22,7 @@ public interface PreparedStatement { - RowDescriptor rowDesc(); + RowDescriptorBase rowDesc(); String sql(); diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java index dd2c204ac..ca8335857 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/QueryResultHandler.java @@ -29,12 +29,12 @@ public interface QueryResultHandler { public void addProperty(PropertyKind property, V value) { } @Override - public void handleResult(int updatedCount, int size, RowDescriptor desc, Void result, Throwable failure) { + public void handleResult(int updatedCount, int size, RowDescriptorBase desc, Void result, Throwable failure) { } }; void addProperty(PropertyKind property, V value); - void handleResult(int updatedCount, int size, RowDescriptor desc, T result, Throwable failure); + void handleResult(int updatedCount, int size, RowDescriptorBase desc, T result, Throwable failure); } diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptor.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptorBase.java similarity index 88% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptor.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptorBase.java index 317c2484b..40e58a1c0 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptor.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/internal/RowDescriptorBase.java @@ -18,6 +18,7 @@ package io.vertx.sqlclient.internal; import io.vertx.sqlclient.desc.ColumnDescriptor; +import io.vertx.sqlclient.desc.RowDescriptor; import java.util.AbstractList; import java.util.List; @@ -26,12 +27,12 @@ /** * @author Emad Alblueshi */ -public class RowDescriptor { +public class RowDescriptorBase implements RowDescriptor { private final ColumnNames columnNames; private final ColumnDescriptors columnDescriptors; - public RowDescriptor(ColumnDescriptor[] columnDescriptors) { + public RowDescriptorBase(ColumnDescriptor[] columnDescriptors) { this.columnNames = new ColumnNames(columnDescriptors); this.columnDescriptors = new ColumnDescriptors(columnDescriptors); } @@ -47,7 +48,7 @@ public List columnNames() { return columnNames; } - public List columnDescriptor() { + public List columnDescriptors() { return columnDescriptors; } @@ -59,7 +60,8 @@ public String toString() { } private static class ColumnNames extends AbstractList implements RandomAccess { - final ColumnDescriptor[] elements; + + private final ColumnDescriptor[] elements; ColumnNames(ColumnDescriptor[] elements) { this.elements = elements; @@ -90,7 +92,8 @@ public int indexOf(Object o) { } private static class ColumnDescriptors extends AbstractList implements RandomAccess { - final ColumnDescriptor[] elements; + + private final ColumnDescriptor[] elements; ColumnDescriptors(ColumnDescriptor[] elements) { this.elements = elements; diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDescriptor.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDescriptor.java index 9f13ef411..04a881dc6 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDescriptor.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/TestRowDescriptor.java @@ -12,11 +12,11 @@ package io.vertx.tests.sqlclient; import io.vertx.sqlclient.desc.ColumnDescriptor; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import java.sql.JDBCType; -public class TestRowDescriptor extends RowDescriptor { +public class TestRowDescriptor extends RowDescriptorBase { private TestRowDescriptor(TestColumnDescriptor[] columnDescriptors) { super(columnDescriptors); diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java index 796f0c2b9..c04e4d1c9 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java @@ -18,7 +18,7 @@ import io.vertx.sqlclient.impl.RowBase; import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.QueryResultHandler; -import io.vertx.sqlclient.internal.RowDescriptor; +import io.vertx.sqlclient.internal.RowDescriptorBase; import io.vertx.sqlclient.spi.connection.ConnectionContext; import io.vertx.sqlclient.spi.protocol.CommandBase; import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; @@ -132,7 +132,7 @@ private void scheduleQueryCommand(SimpleQueryCommand simpleQuery, Comp Collector collector = (Collector) simpleQuery.collector(); A container = collector.supplier().get(); BiConsumer accumulator = collector.accumulator(); - RowDescriptor rowDescriptor = new RowDescriptor(new ColumnDescriptor[]{new VarcharColumnDescriptor("value")}); + RowDescriptorBase rowDescriptor = new RowDescriptorBase(new ColumnDescriptor[]{new VarcharColumnDescriptor("value")}); Row row = new RowBase(rowDescriptor); row.addValue("Hello " + simpleQuery.sql()); accumulator.accept(container, row); From 71b6cb7c931c65b7244e4c6cbedf6c0f92c827eb Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 17:18:40 +0200 Subject: [PATCH 23/25] Minor cleanup --- .../sqlclient/impl/codec/CommonCodec.java | 46 ------------------- .../src/main/java/module-info.java | 1 - 2 files changed, 47 deletions(-) delete mode 100644 vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/codec/CommonCodec.java diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/codec/CommonCodec.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/codec/CommonCodec.java deleted file mode 100644 index b325c79e4..000000000 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/codec/CommonCodec.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011-2020 Contributors to the Eclipse Foundation - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 - * which is available at https://www.apache.org/licenses/LICENSE-2.0. - * - * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 - */ - -package io.vertx.sqlclient.impl.codec; - -import io.netty.buffer.ByteBuf; - -public class CommonCodec { - /** - * Decode the specified {@code buff} formatted as a decimal string starting at the readable index - * with the specified {@code length} to a long. - * - * @param index the hex string index - * @param len the hex string length - * @param buff the byte buff to read from - * @return the decoded value as a long - */ - public static long decodeDecStringToLong(int index, int len, ByteBuf buff) { - long value = 0; - if (len > 0) { - int to = index + len; - boolean neg = false; - if (buff.getByte(index) == '-') { - neg = true; - index++; - } - while (index < to) { - byte ch = buff.getByte(index++); - byte nibble = (byte) (ch - '0'); - value = value * 10 + nibble; - } - if (neg) { - value = -value; - } - } - return value; - } -} diff --git a/vertx-sql-client/src/main/java/module-info.java b/vertx-sql-client/src/main/java/module-info.java index aabd52954..53f6bdd11 100644 --- a/vertx-sql-client/src/main/java/module-info.java +++ b/vertx-sql-client/src/main/java/module-info.java @@ -30,7 +30,6 @@ exports io.vertx.sqlclient.impl to io.vertx.tests.sql.client, io.vertx.tests.sql.client.pg, io.vertx.tests.sql.client.mysql, io.vertx.tests.sql.client.templates, io.vertx.sql.client.pg, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2, io.vertx.sql.client.oracle, io.vertx.sql.client.templates; - exports io.vertx.sqlclient.impl.codec to io.vertx.sql.client.pg, io.vertx.tests.sql.client.pg, io.vertx.sql.client.mysql, io.vertx.sql.client.mssql, io.vertx.sql.client.db2; exports io.vertx.sqlclient.impl.tracing to io.vertx.tests.sql.client; exports io.vertx.sqlclient.impl.pool; exports io.vertx.sqlclient.spi.protocol; From 906079a89bcdc690833d817549d40001f0f45f33 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 17:20:45 +0200 Subject: [PATCH 24/25] Move the Notification class that is PG specific to vertx-pg-client --- .../impl/datatype/DataTypeCodec.java | 12 +++---- .../io/vertx/pgclient}/impl/Notification.java | 2 +- .../vertx/pgclient/impl/PgConnectionImpl.java | 1 - .../pgclient/impl/PgSocketConnection.java | 1 - .../pgclient/impl/codec/DataTypeCodec.java | 8 ++--- .../vertx/pgclient/impl/codec/PgDecoder.java | 2 +- .../java/io/vertx/sqlclient/impl/Utils.java | 31 +++++++++++++++++++ 7 files changed, 43 insertions(+), 14 deletions(-) rename {vertx-sql-client/src/main/java/io/vertx/sqlclient => vertx-pg-client/src/main/java/io/vertx/pgclient}/impl/Notification.java (98%) diff --git a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/datatype/DataTypeCodec.java b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/datatype/DataTypeCodec.java index 9789f1a6f..19d73fb86 100644 --- a/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/datatype/DataTypeCodec.java +++ b/vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/datatype/DataTypeCodec.java @@ -24,7 +24,7 @@ import io.vertx.core.buffer.Buffer; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.data.Numeric; -import io.vertx.sqlclient.impl.codec.CommonCodec; +import io.vertx.sqlclient.impl.Utils; import java.math.BigInteger; import java.nio.charset.Charset; @@ -637,23 +637,23 @@ private static Object binaryDecodeJson(int collationId, ByteBuf buffer) { } private static Byte textDecodeInt8(ByteBuf buffer, int index, int length) { - return (byte) CommonCodec.decodeDecStringToLong(index, length, buffer); + return (byte) Utils.decodeDecStringToLong(index, length, buffer); } private static Short textDecodeInt16(ByteBuf buffer, int index, int length) { - return (short) CommonCodec.decodeDecStringToLong(index, length, buffer); + return (short) Utils.decodeDecStringToLong(index, length, buffer); } private static Integer textDecodeInt24(ByteBuf buffer, int index, int length) { - return (int) CommonCodec.decodeDecStringToLong(index, length, buffer); + return (int) Utils.decodeDecStringToLong(index, length, buffer); } private static Integer textDecodeInt32(ByteBuf buffer, int index, int length) { - return (int) CommonCodec.decodeDecStringToLong(index, length, buffer); + return (int) Utils.decodeDecStringToLong(index, length, buffer); } private static Long textDecodeInt64(ByteBuf buffer, int index, int length) { - return CommonCodec.decodeDecStringToLong(index, length, buffer); + return Utils.decodeDecStringToLong(index, length, buffer); } private static Float textDecodeFloat(int collationId, ByteBuf buffer, int index, int length) { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Notification.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/Notification.java similarity index 98% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Notification.java rename to vertx-pg-client/src/main/java/io/vertx/pgclient/impl/Notification.java index 845e6775f..c92bdebf7 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Notification.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/Notification.java @@ -15,7 +15,7 @@ * */ -package io.vertx.sqlclient.impl; +package io.vertx.pgclient.impl; import java.util.Objects; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java index aee4fd481..4ce2cc2e0 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java @@ -29,7 +29,6 @@ import io.vertx.pgclient.impl.codec.TxFailedEvent; import io.vertx.pgclient.spi.PgDriver; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.internal.SqlConnectionBase; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java index 6ab8fb01c..263cdb4dc 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java @@ -35,7 +35,6 @@ import io.vertx.sqlclient.codec.CommandMessage; import io.vertx.sqlclient.codec.SocketConnectionBase; import io.vertx.sqlclient.spi.connection.Connection; -import io.vertx.sqlclient.impl.Notification; import io.vertx.sqlclient.internal.PreparedStatement; import io.vertx.sqlclient.internal.QueryResultHandler; import io.vertx.sqlclient.spi.DatabaseMetadata; diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataTypeCodec.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataTypeCodec.java index 1b0a0aecd..2b065abb3 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataTypeCodec.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/DataTypeCodec.java @@ -32,7 +32,7 @@ import io.vertx.pgclient.impl.util.UTF8StringEndDetector; import io.vertx.sqlclient.Tuple; import io.vertx.sqlclient.data.Numeric; -import io.vertx.sqlclient.impl.codec.CommonCodec; +import io.vertx.sqlclient.impl.Utils; import java.math.BigDecimal; import java.net.Inet4Address; @@ -688,7 +688,7 @@ private static Boolean textDecodeBOOL(int index, int len, ByteBuf buff) { } private static Short textDecodeINT2(int index, int len, ByteBuf buff) { - return (short) CommonCodec.decodeDecStringToLong(index, len, buff); + return (short) Utils.decodeDecStringToLong(index, len, buff); } private static Short binaryDecodeINT2(int index, int len, ByteBuf buff) { @@ -700,7 +700,7 @@ private static void binaryEncodeINT2(Number value, ByteBuf buff) { } private static Integer textDecodeINT4(int index, int len, ByteBuf buff) { - return (int) CommonCodec.decodeDecStringToLong(index, len, buff); + return (int) Utils.decodeDecStringToLong(index, len, buff); } private static Integer binaryDecodeINT4(int index, int len, ByteBuf buff) { @@ -712,7 +712,7 @@ private static void binaryEncodeINT4(Number value, ByteBuf buff) { } private static Long textDecodeINT8(int index, int len, ByteBuf buff) { - return CommonCodec.decodeDecStringToLong(index, len, buff); + return Utils.decodeDecStringToLong(index, len, buff); } private static Long binaryDecodeINT8(int index, int len, ByteBuf buff) { diff --git a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java index 5ca36d811..aca5fcb11 100644 --- a/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java +++ b/vertx-pg-client/src/main/java/io/vertx/pgclient/impl/codec/PgDecoder.java @@ -25,7 +25,7 @@ import io.netty.util.ByteProcessor; import io.vertx.core.Completable; import io.vertx.pgclient.impl.util.Util; -import io.vertx.sqlclient.impl.Notification; +import io.vertx.pgclient.impl.Notification; import io.vertx.sqlclient.codec.CommandResponse; /** diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Utils.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Utils.java index 0d4b28a39..dac3eaf65 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Utils.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Utils.java @@ -1,5 +1,6 @@ package io.vertx.sqlclient.impl; +import io.netty.buffer.ByteBuf; import io.vertx.core.Future; import io.vertx.core.buffer.Buffer; import io.vertx.core.json.JsonArray; @@ -69,4 +70,34 @@ public Future get() { public static Supplier> singletonSupplier(T factory) { return () -> Future.succeededFuture(factory); } + + /** + * Decode the specified {@code buff} formatted as a decimal string starting at the readable index + * with the specified {@code length} to a long. + * + * @param index the hex string index + * @param len the hex string length + * @param buff the byte buff to read from + * @return the decoded value as a long + */ + public static long decodeDecStringToLong(int index, int len, ByteBuf buff) { + long value = 0; + if (len > 0) { + int to = index + len; + boolean neg = false; + if (buff.getByte(index) == '-') { + neg = true; + index++; + } + while (index < to) { + byte ch = buff.getByte(index++); + byte nibble = (byte) (ch - '0'); + value = value * 10 + nibble; + } + if (neg) { + value = -value; + } + } + return value; + } } From ded5767387c883e137c822863d3d3f5780afebe9 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Tue, 1 Jul 2025 17:33:54 +0200 Subject: [PATCH 25/25] Rename GenericDriver to DriverBase --- .../io/vertx/db2client/spi/DB2Driver.java | 9 ++++----- .../io/vertx/mssqlclient/spi/MSSQLDriver.java | 9 ++++----- .../io/vertx/mysqlclient/spi/MySQLDriver.java | 9 ++++----- .../vertx/oracleclient/spi/OracleDriver.java | 11 +++------- .../java/io/vertx/pgclient/spi/PgDriver.java | 9 ++++----- .../{GenericDriver.java => DriverBase.java} | 20 +++++++++++-------- .../spi/connection/package-info.java | 2 +- ...ricDriverTest.java => DriverBaseTest.java} | 10 +++------- 8 files changed, 35 insertions(+), 44 deletions(-) rename vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/{GenericDriver.java => DriverBase.java} (85%) rename vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/{GenericDriverTest.java => DriverBaseTest.java} (95%) 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 74960c898..466b5547d 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 @@ -33,19 +33,18 @@ import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.connection.ConnectionFactory; -import io.vertx.sqlclient.spi.GenericDriver; +import io.vertx.sqlclient.spi.DriverBase; import java.util.function.Supplier; -public class DB2Driver extends GenericDriver { +public class DB2Driver extends DriverBase { private static final String DISCRIMINANT = "db2client"; public static final DB2Driver INSTANCE = new DB2Driver(); - @Override - protected String discriminant() { - return DISCRIMINANT; + public DB2Driver() { + super(DISCRIMINANT); } @Override 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 1fe869b81..9a7bbd70b 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 @@ -28,17 +28,16 @@ import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.connection.ConnectionFactory; -import io.vertx.sqlclient.spi.GenericDriver; +import io.vertx.sqlclient.spi.DriverBase; -public class MSSQLDriver extends GenericDriver { +public class MSSQLDriver extends DriverBase { private static final String DISCRIMINANT = "mssqlclient"; public static final MSSQLDriver INSTANCE = new MSSQLDriver(); - @Override - protected String discriminant() { - return DISCRIMINANT; + public MSSQLDriver() { + super(DISCRIMINANT); } @Override 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 f3f0725bf..391954c3a 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 @@ -33,19 +33,18 @@ import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.connection.ConnectionFactory; -import io.vertx.sqlclient.spi.GenericDriver; +import io.vertx.sqlclient.spi.DriverBase; import java.util.function.Supplier; -public class MySQLDriver extends GenericDriver { +public class MySQLDriver extends DriverBase { private static final String DISCRIMINANT = "mysqlclient"; public static final MySQLDriver INSTANCE = new MySQLDriver(); - @Override - protected String discriminant() { - return DISCRIMINANT; + public MySQLDriver() { + super(DISCRIMINANT); } @Override diff --git a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java index 9cd8760b9..4f3ee4faa 100644 --- a/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java +++ b/vertx-oracle-client/src/main/java/io/vertx/oracleclient/spi/OracleDriver.java @@ -22,11 +22,11 @@ import io.vertx.sqlclient.spi.connection.Connection; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.connection.ConnectionFactory; -import io.vertx.sqlclient.spi.GenericDriver; +import io.vertx.sqlclient.spi.DriverBase; import java.util.function.Function; -public class OracleDriver extends GenericDriver { +public class OracleDriver extends DriverBase { private static final String DISCRIMINANT = "oracleclient"; @@ -36,12 +36,7 @@ public class OracleDriver extends GenericDriver { public static final OracleDriver INSTANCE = new OracleDriver(); public OracleDriver() { - super(AFTER_ACQUIRE, BEFORE_RECYCLE); - } - - @Override - protected String discriminant() { - return DISCRIMINANT; + super(DISCRIMINANT, AFTER_ACQUIRE, BEFORE_RECYCLE); } @Override 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 8cd2d8026..a0343a53b 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 @@ -21,19 +21,18 @@ import io.vertx.sqlclient.impl.pool.PoolImpl; import io.vertx.sqlclient.internal.SqlConnectionInternal; import io.vertx.sqlclient.spi.connection.ConnectionFactory; -import io.vertx.sqlclient.spi.GenericDriver; +import io.vertx.sqlclient.spi.DriverBase; import java.util.function.Supplier; -public class PgDriver extends GenericDriver { +public class PgDriver extends DriverBase { private static final String DISCRIMINANT = "pgclient"; public static final PgDriver INSTANCE = new PgDriver(); - @Override - protected String discriminant() { - return DISCRIMINANT; + public PgDriver() { + super(DISCRIMINANT); } @Override diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/DriverBase.java similarity index 85% rename from vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java rename to vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/DriverBase.java index b38aca92e..09ec1cb36 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/GenericDriver.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/DriverBase.java @@ -21,25 +21,29 @@ import java.util.function.Function; import java.util.function.Supplier; -public abstract class GenericDriver implements Driver { +/** + * A generic driver. + * @param + */ +public abstract class DriverBase implements Driver { private static final String SHARED_CLIENT_KEY_PREFIX = "__vertx.shared."; - private final String sharedClientKey = SHARED_CLIENT_KEY_PREFIX + "." + discriminant(); - - protected abstract String discriminant(); + private final String discriminant; + private final String sharedClientKey; private final Function> afterAcquire; private final Function> beforeRecycle; - public GenericDriver() { - this.afterAcquire = null; - this.beforeRecycle = null; + public DriverBase(String discriminant) { + this(discriminant, null, null); } - public GenericDriver(Function> afterAcquire, Function> beforeRecycle) { + public DriverBase(String discriminant, Function> afterAcquire, Function> beforeRecycle) { this.afterAcquire = afterAcquire; this.beforeRecycle = beforeRecycle; + this.discriminant = discriminant; + this.sharedClientKey = SHARED_CLIENT_KEY_PREFIX + "." + discriminant; } /** diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java index afc3e7509..9a7260438 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/connection/package-info.java @@ -13,6 +13,6 @@ /** *

The Connection Service Provider Interface (SPI).

* - *

This SPI is the contract between a {@link io.vertx.sqlclient.spi.GenericDriver} and a database backend.

+ *

This SPI is the contract between a {@link io.vertx.sqlclient.spi.DriverBase} and a database backend.

*/ package io.vertx.sqlclient.spi.connection; diff --git a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/DriverBaseTest.java similarity index 95% rename from vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java rename to vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/DriverBaseTest.java index c04e4d1c9..efa65d836 100644 --- a/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/GenericDriverTest.java +++ b/vertx-sql-client/src/test/java/io/vertx/tests/sqlclient/spi/backend/DriverBaseTest.java @@ -24,7 +24,7 @@ import io.vertx.sqlclient.spi.protocol.SimpleQueryCommand; import io.vertx.sqlclient.spi.connection.ConnectionFactory; import io.vertx.sqlclient.spi.DatabaseMetadata; -import io.vertx.sqlclient.spi.GenericDriver; +import io.vertx.sqlclient.spi.DriverBase; import org.junit.Test; import java.sql.JDBCType; @@ -33,7 +33,7 @@ import static org.junit.Assert.*; -public class GenericDriverTest { +public class DriverBaseTest { private static class VarcharColumnDescriptor implements ColumnDescriptor { @@ -64,11 +64,7 @@ public JDBCType jdbcType() { @Test public void testSimple() { - GenericDriver driver = new GenericDriver() { - @Override - protected String discriminant() { - return "generic"; - } + DriverBase driver = new DriverBase("generic") { @Override public ConnectionFactory createConnectionFactory(Vertx vertx, NetClientOptions transportOptions) { return new ConnectionFactory<>() {