1616package io .vertx .db2client .impl ;
1717
1818import io .netty .channel .ChannelPipeline ;
19- import io .vertx .core .AsyncResult ;
2019import io .vertx .core .Completable ;
2120import io .vertx .core .Handler ;
2221import io .vertx .core .Promise ;
2322import io .vertx .core .internal .ContextInternal ;
2423import io .vertx .core .internal .net .NetSocketInternal ;
2524import io .vertx .core .spi .metrics .ClientMetrics ;
2625import io .vertx .db2client .DB2ConnectOptions ;
26+ import io .vertx .db2client .impl .codec .CommandCodec ;
2727import io .vertx .db2client .impl .codec .DB2Codec ;
28+ import io .vertx .db2client .impl .codec .DB2PreparedStatement ;
29+ import io .vertx .db2client .impl .codec .ExtendedBatchQueryCommandCodec ;
30+ import io .vertx .db2client .impl .codec .ExtendedQueryCommandCodec ;
2831import io .vertx .db2client .impl .command .InitialHandshakeCommand ;
2932import io .vertx .db2client .impl .drda .ConnectionMetaData ;
3033import io .vertx .sqlclient .SqlConnectOptions ;
31- import io .vertx .sqlclient .internal .Connection ;
34+ import io .vertx .sqlclient .codec .CommandMessage ;
35+ import io .vertx .sqlclient .spi .connection .Connection ;
36+ import io .vertx .sqlclient .internal .PreparedStatement ;
3237import io .vertx .sqlclient .internal .QueryResultHandler ;
33- import io .vertx .sqlclient .impl .SocketConnectionBase ;
34- import io .vertx .sqlclient .internal .command .*;
38+ import io .vertx .sqlclient .codec .SocketConnectionBase ;
3539import io .vertx .sqlclient .spi .DatabaseMetadata ;
40+ import io .vertx .sqlclient .spi .protocol .CommandBase ;
41+ import io .vertx .sqlclient .spi .protocol .ExtendedQueryCommand ;
42+ import io .vertx .sqlclient .spi .protocol .SimpleQueryCommand ;
43+ import io .vertx .sqlclient .spi .protocol .TxCommand ;
3644
3745import java .util .Map ;
3846import java .util .function .Predicate ;
@@ -79,19 +87,32 @@ public void init() {
7987 super .init ();
8088 }
8189
90+ @ Override
91+ protected CommandMessage <?, ?> toMessage (ExtendedQueryCommand <?> command , PreparedStatement preparedStatement ) {
92+ if (command .isBatch ()) {
93+ return new ExtendedBatchQueryCommandCodec <>(command , (DB2PreparedStatement ) preparedStatement );
94+ } else {
95+ return new ExtendedQueryCommandCodec (command , (DB2PreparedStatement ) preparedStatement );
96+ }
97+ }
98+
99+ @ Override
100+ protected CommandMessage <?, ?> toMessage (CommandBase <?> command ) {
101+ return CommandCodec .wrap (command );
102+ }
103+
82104 @ Override
83105 protected <R > void doSchedule (CommandBase <R > cmd , Completable <R > handler ) {
84106 if (cmd instanceof TxCommand ) {
85107 TxCommand <R > txCmd = (TxCommand <R >) cmd ;
86- if (txCmd .kind == TxCommand .Kind .BEGIN ) {
108+ if (txCmd .kind () == TxCommand .Kind .BEGIN ) {
87109 // DB2 always implicitly starts a transaction with each query, and does
88110 // not support the 'BEGIN' keyword. Instead we can no-op BEGIN commands
89- cmd .handler = handler ;
90- cmd .complete (CommandResponse .success (txCmd .result ).toAsyncResult ());
111+ handler .succeed (txCmd .result ());
91112 } else {
92- SimpleQueryCommand <Void > cmd2 = new SimpleQueryCommand <>(txCmd .kind .sql , false , false ,
93- QueryCommandBase .NULL_COLLECTOR , QueryResultHandler .NOOP_HANDLER );
94- super .doSchedule (cmd2 , (res , err ) -> handler .complete (txCmd .result , err ));
113+ SimpleQueryCommand <Void > cmd2 = new SimpleQueryCommand <>(txCmd .kind () .sql () , false , false ,
114+ SocketConnectionBase .NULL_COLLECTOR , QueryResultHandler .NOOP_HANDLER );
115+ super .doSchedule (cmd2 , (res , err ) -> handler .complete (txCmd .result () , err ));
95116
96117 }
97118 } else {
@@ -111,7 +132,7 @@ public String system() {
111132 }
112133
113134 @ Override
114- public DatabaseMetadata getDatabaseMetaData () {
135+ public DatabaseMetadata databaseMetadata () {
115136 return connMetadata .getDbMetadata ();
116137 }
117138
0 commit comments