Skip to content

Commit d692fdb

Browse files
committed
Migrate Reactive MSSQL Client extension
Apply changes from previous commits to the Reactive MSSQL Client extension
1 parent df55923 commit d692fdb

File tree

20 files changed

+109
-76
lines changed

20 files changed

+109
-76
lines changed

docs/src/main/asciidoc/reactive-sql-clients.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ Navigate to http://localhost:8080/fruits.html and read/create/delete some fruits
540540

541541
|Microsoft SQL Server
542542
|`quarkus-reactive-mssql-client`
543-
|`io.vertx.mutiny.mssqlclient.MSSQLPool`
543+
|`io.vertx.mutiny.sqlclient.Pool`
544544
|`@p1`, `@p2`, etc.
545545

546546
|Oracle

extensions/reactive-mssql-client/deployment/src/main/java/io/quarkus/reactive/mssql/client/deployment/MSSQLPoolBuildItem.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import io.quarkus.datasource.common.runtime.DataSourceUtil;
88
import io.vertx.mssqlclient.MSSQLPool;
99

10+
@Deprecated(forRemoval = true)
1011
public final class MSSQLPoolBuildItem extends MultiBuildItem {
1112

1213
private final String dataSourceName;

extensions/reactive-mssql-client/deployment/src/main/java/io/quarkus/reactive/mssql/client/deployment/ReactiveMSSQLClientProcessor.java

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static io.quarkus.reactive.datasource.deployment.ReactiveDataSourceBuildUtil.qualifier;
44
import static io.quarkus.reactive.datasource.deployment.ReactiveDataSourceBuildUtil.qualifiers;
5+
import static io.quarkus.reactive.datasource.deployment.ReactiveDataSourceDotNames.INJECT_INSTANCE;
6+
import static java.util.stream.Collectors.toSet;
57

68
import java.util.HashMap;
79
import java.util.List;
@@ -12,9 +14,10 @@
1214
import java.util.function.Function;
1315
import java.util.function.Predicate;
1416
import java.util.stream.Collectors;
17+
import java.util.stream.Stream;
1518

1619
import jakarta.enterprise.context.ApplicationScoped;
17-
import jakarta.enterprise.inject.Instance;
20+
import jakarta.inject.Singleton;
1821

1922
import org.jboss.jandex.AnnotationInstance;
2023
import org.jboss.jandex.ClassType;
@@ -56,6 +59,7 @@
5659
import io.quarkus.reactive.mssql.client.MSSQLPoolCreator;
5760
import io.quarkus.reactive.mssql.client.runtime.DataSourcesReactiveMSSQLConfig;
5861
import io.quarkus.reactive.mssql.client.runtime.MSSQLPoolRecorder;
62+
import io.quarkus.reactive.mssql.client.runtime.MSSQLPoolSupport;
5963
import io.quarkus.reactive.mssql.client.runtime.MsSQLServiceBindingConverter;
6064
import io.quarkus.smallrye.health.deployment.spi.HealthBuildItem;
6165
import io.quarkus.vertx.core.deployment.EventLoopCountBuildItem;
@@ -65,11 +69,12 @@
6569

6670
class ReactiveMSSQLClientProcessor {
6771

68-
private static final ParameterizedType POOL_CREATOR_INJECTION_TYPE = ParameterizedType.create(
69-
DotName.createSimple(Instance.class),
70-
new Type[] { ClassType.create(DotName.createSimple(MSSQLPoolCreator.class.getName())) }, null);
72+
private static final Type MSSQL_POOL_CREATOR = ClassType.create(DotName.createSimple(MSSQLPoolCreator.class.getName()));
73+
private static final ParameterizedType POOL_CREATOR_INJECTION_TYPE = ParameterizedType.create(INJECT_INSTANCE,
74+
new Type[] { MSSQL_POOL_CREATOR }, null);
75+
7176
private static final DotName VERTX_MSSQL_POOL = DotName.createSimple(MSSQLPool.class);
72-
private static final Type VERTX_MSSQL_POOL_TYPE = Type.create(VERTX_MSSQL_POOL, Type.Kind.CLASS);
77+
private static final Type VERTX_MSSQL_POOL_TYPE = ClassType.create(VERTX_MSSQL_POOL);
7378

7479
@BuildStep
7580
@Record(ExecutionTime.RUNTIME_INIT)
@@ -91,11 +96,28 @@ ServiceStartBuildItem build(BuildProducer<FeatureBuildItem> feature,
9196

9297
feature.produce(new FeatureBuildItem(Feature.REACTIVE_MSSQL_CLIENT));
9398

99+
Stream.Builder<String> msSQLPoolNamesBuilder = Stream.builder();
94100
for (String dataSourceName : dataSourcesBuildTimeConfig.dataSources().keySet()) {
95-
createPoolIfDefined(recorder, vertx, eventLoopCount, shutdown, msSQLPool, syntheticBeans, dataSourceName,
96-
dataSourcesBuildTimeConfig, dataSourcesRuntimeConfig, dataSourcesReactiveBuildTimeConfig,
97-
dataSourcesReactiveRuntimeConfig, dataSourcesReactiveMSSQLConfig, defaultDataSourceDbKindBuildItems,
98-
curateOutcomeBuildItem);
101+
102+
if (!isReactiveMSSQLPoolDefined(dataSourcesBuildTimeConfig, dataSourcesReactiveBuildTimeConfig, dataSourceName,
103+
defaultDataSourceDbKindBuildItems, curateOutcomeBuildItem)) {
104+
continue;
105+
}
106+
107+
createPool(recorder, vertx, eventLoopCount, shutdown, msSQLPool, syntheticBeans, dataSourceName,
108+
dataSourcesRuntimeConfig, dataSourcesReactiveRuntimeConfig, dataSourcesReactiveMSSQLConfig);
109+
110+
msSQLPoolNamesBuilder.add(dataSourceName);
111+
}
112+
113+
Set<String> msSQLPoolNames = msSQLPoolNamesBuilder.build().collect(toSet());
114+
if (!msSQLPoolNames.isEmpty()) {
115+
syntheticBeans.produce(SyntheticBeanBuildItem.configure(MSSQLPoolSupport.class)
116+
.scope(Singleton.class)
117+
.unremovable()
118+
.runtimeValue(recorder.createMSSQLPoolSupport(msSQLPoolNames))
119+
.setRuntimeInit()
120+
.done());
99121
}
100122

101123
// Enable SSL support by default
@@ -175,25 +197,16 @@ void addHealthCheck(
175197
dataSourcesBuildTimeConfig.healthEnabled()));
176198
}
177199

178-
private void createPoolIfDefined(MSSQLPoolRecorder recorder,
200+
private void createPool(MSSQLPoolRecorder recorder,
179201
VertxBuildItem vertx,
180202
EventLoopCountBuildItem eventLoopCount,
181203
ShutdownContextBuildItem shutdown,
182204
BuildProducer<MSSQLPoolBuildItem> msSQLPool,
183205
BuildProducer<SyntheticBeanBuildItem> syntheticBeans,
184206
String dataSourceName,
185-
DataSourcesBuildTimeConfig dataSourcesBuildTimeConfig,
186207
DataSourcesRuntimeConfig dataSourcesRuntimeConfig,
187-
DataSourcesReactiveBuildTimeConfig dataSourcesReactiveBuildTimeConfig,
188208
DataSourcesReactiveRuntimeConfig dataSourcesReactiveRuntimeConfig,
189-
DataSourcesReactiveMSSQLConfig dataSourcesReactiveMSSQLConfig,
190-
List<DefaultDataSourceDbKindBuildItem> defaultDataSourceDbKindBuildItems,
191-
CurateOutcomeBuildItem curateOutcomeBuildItem) {
192-
193-
if (!isReactiveMSSQLPoolDefined(dataSourcesBuildTimeConfig, dataSourcesReactiveBuildTimeConfig, dataSourceName,
194-
defaultDataSourceDbKindBuildItems, curateOutcomeBuildItem)) {
195-
return;
196-
}
209+
DataSourcesReactiveMSSQLConfig dataSourcesReactiveMSSQLConfig) {
197210

198211
Function<SyntheticCreationalContext<MSSQLPool>, MSSQLPool> poolFunction = recorder.configureMSSQLPool(vertx.getVertx(),
199212
eventLoopCount.getEventLoopCount(),
@@ -280,8 +293,6 @@ private boolean hasPools(DataSourcesBuildTimeConfig dataSourcesBuildTimeConfig,
280293
}
281294

282295
private static class MSSQLPoolCreatorBeanClassPredicate implements Predicate<Set<Type>> {
283-
private static final Type MSSQL_POOL_CREATOR = Type.create(DotName.createSimple(MSSQLPoolCreator.class.getName()),
284-
Type.Kind.CLASS);
285296

286297
@Override
287298
public boolean test(Set<Type> types) {

extensions/reactive-mssql-client/deployment/src/test/java/io/quarkus/reactive/mssql/client/ChangingCredentialsTestResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212

1313
import io.quarkus.runtime.StartupEvent;
1414
import io.smallrye.mutiny.Uni;
15-
import io.vertx.mutiny.mssqlclient.MSSQLPool;
15+
import io.vertx.mutiny.sqlclient.Pool;
1616

1717
@Path("/test")
1818
public class ChangingCredentialsTestResource {
1919

2020
@Inject
21-
MSSQLPool client;
21+
Pool client;
2222

2323
@Inject
2424
ChangingCredentialsProvider credentialsProvider;

extensions/reactive-mssql-client/deployment/src/test/java/io/quarkus/reactive/mssql/client/CredentialsTestResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
import jakarta.ws.rs.Produces;
1111
import jakarta.ws.rs.core.MediaType;
1212

13-
import io.vertx.mutiny.mssqlclient.MSSQLPool;
13+
import io.vertx.mutiny.sqlclient.Pool;
1414

1515
@Path("/test")
1616
public class CredentialsTestResource {
1717

1818
@Inject
19-
MSSQLPool client;
19+
Pool client;
2020

2121
@GET
2222
@Produces(MediaType.TEXT_PLAIN)

extensions/reactive-mssql-client/deployment/src/test/java/io/quarkus/reactive/mssql/client/DevModeResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
import jakarta.ws.rs.core.MediaType;
1313
import jakarta.ws.rs.core.Response;
1414

15-
import io.vertx.mssqlclient.MSSQLPool;
15+
import io.vertx.sqlclient.Pool;
1616

1717
@Path("/dev")
1818
public class DevModeResource {
1919

2020
@Inject
21-
MSSQLPool client;
21+
Pool client;
2222

2323
@GET
2424
@Path("/error")

extensions/reactive-mssql-client/deployment/src/test/java/io/quarkus/reactive/mssql/client/DevServicesMsSQLDatasourceTestCase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import org.junit.jupiter.api.extension.RegisterExtension;
1414

1515
import io.quarkus.test.QuarkusUnitTest;
16-
import io.vertx.mutiny.mssqlclient.MSSQLPool;
16+
import io.vertx.mutiny.sqlclient.Pool;
1717

1818
public class DevServicesMsSQLDatasourceTestCase {
1919

@@ -30,7 +30,7 @@ public class DevServicesMsSQLDatasourceTestCase {
3030
.isEmpty());
3131

3232
@Inject
33-
MSSQLPool pool;
33+
Pool pool;
3434

3535
@Test
3636
public void testDatasource() throws Exception {

extensions/reactive-mssql-client/deployment/src/test/java/io/quarkus/reactive/mssql/client/LocalhostMSSQLPoolCreator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
import jakarta.inject.Singleton;
44

5-
import io.vertx.mssqlclient.MSSQLPool;
5+
import io.vertx.sqlclient.Pool;
66

77
@Singleton
88
public class LocalhostMSSQLPoolCreator implements MSSQLPoolCreator {
99

1010
@Override
11-
public MSSQLPool create(Input input) {
12-
return MSSQLPool.pool(input.vertx(), input.msSQLConnectOptions().setHost("localhost").setPort(1435),
11+
public Pool create(Input input) {
12+
return Pool.pool(input.vertx(), input.msSQLConnectOptions().setHost("localhost").setPort(1435),
1313
input.poolOptions());
1414
}
1515
}

extensions/reactive-mssql-client/deployment/src/test/java/io/quarkus/reactive/mssql/client/MSSQLPoolProducerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.junit.jupiter.api.extension.RegisterExtension;
1010

1111
import io.quarkus.test.QuarkusUnitTest;
12-
import io.vertx.mssqlclient.MSSQLPool;
12+
import io.vertx.sqlclient.Pool;
1313

1414
public class MSSQLPoolProducerTest {
1515

@@ -38,7 +38,7 @@ public void testVertxInjection() {
3838
static class BeanUsingBareMSSQLClient {
3939

4040
@Inject
41-
MSSQLPool mssqlClient;
41+
Pool mssqlClient;
4242

4343
public CompletionStage<?> verify() {
4444
return mssqlClient.query("SELECT 1").execute().toCompletionStage();
@@ -49,7 +49,7 @@ public CompletionStage<?> verify() {
4949
static class BeanUsingMutinyMSSQLClient {
5050

5151
@Inject
52-
io.vertx.mutiny.mssqlclient.MSSQLPool mssqlClient;
52+
io.vertx.mutiny.sqlclient.Pool mssqlClient;
5353

5454
public CompletionStage<Void> verify() {
5555
return mssqlClient.query("SELECT 1").execute()

extensions/reactive-mssql-client/deployment/src/test/java/io/quarkus/reactive/mssql/client/MultipleDataSourcesAndMSSQLPoolCreatorsTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import io.quarkus.reactive.datasource.ReactiveDataSource;
1616
import io.quarkus.test.QuarkusUnitTest;
17-
import io.vertx.mssqlclient.MSSQLPool;
17+
import io.vertx.sqlclient.Pool;
1818

1919
public class MultipleDataSourcesAndMSSQLPoolCreatorsTest {
2020

@@ -45,7 +45,7 @@ public void testMultipleDataSources() {
4545
static class BeanUsingDefaultDataSource {
4646

4747
@Inject
48-
MSSQLPool mSSQLClient;
48+
Pool mSSQLClient;
4949

5050
public CompletionStage<Void> verify() {
5151
CompletableFuture<Void> cf = new CompletableFuture<>();
@@ -65,7 +65,7 @@ static class BeanUsingHibernateDataSource {
6565

6666
@Inject
6767
@ReactiveDataSource("hibernate")
68-
MSSQLPool mSSQLClient;
68+
Pool mSSQLClient;
6969

7070
public CompletionStage<Void> verify() {
7171
CompletableFuture<Void> cf = new CompletableFuture<>();
@@ -84,9 +84,9 @@ public CompletionStage<Void> verify() {
8484
public static class DefaultMSSQLPoolCreator implements MSSQLPoolCreator {
8585

8686
@Override
87-
public MSSQLPool create(Input input) {
87+
public Pool create(Input input) {
8888
assertEquals(12345, input.msSQLConnectOptions().getPort()); // validate that the bean has been called for the proper datasource
89-
return MSSQLPool.pool(input.vertx(), input.msSQLConnectOptions().setHost("localhost").setPort(1435),
89+
return Pool.pool(input.vertx(), input.msSQLConnectOptions().setHost("localhost").setPort(1435),
9090
input.poolOptions());
9191
}
9292
}
@@ -96,9 +96,9 @@ public MSSQLPool create(Input input) {
9696
public static class HibernateMSSQLPoolCreator implements MSSQLPoolCreator {
9797

9898
@Override
99-
public MSSQLPool create(Input input) {
99+
public Pool create(Input input) {
100100
assertEquals(55555, input.msSQLConnectOptions().getPort()); // validate that the bean has been called for the proper datasource
101-
return MSSQLPool.pool(input.vertx(), input.msSQLConnectOptions().setHost("localhost").setPort(1435),
101+
return Pool.pool(input.vertx(), input.msSQLConnectOptions().setHost("localhost").setPort(1435),
102102
input.poolOptions());
103103
}
104104
}

0 commit comments

Comments
 (0)