Skip to content

Commit fe6822b

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

File tree

20 files changed

+109
-77
lines changed

20 files changed

+109
-77
lines changed

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

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

546546
|Oracle
547547
|`quarkus-reactive-oracle-client`
548-
|`io.vertx.mutiny.oracleclient.OraclePool`
548+
|`io.vertx.mutiny.sqlclient.Pool`
549549
|`?`
550550

551551
|PostgreSQL

extensions/reactive-oracle-client/deployment/src/main/java/io/quarkus/reactive/oracle/client/deployment/OraclePoolBuildItem.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.oracleclient.OraclePool;
99

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

1213
private final String dataSourceName;

extensions/reactive-oracle-client/deployment/src/main/java/io/quarkus/reactive/oracle/client/deployment/ReactiveOracleClientProcessor.java

Lines changed: 33 additions & 23 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.oracle.client.OraclePoolCreator;
5760
import io.quarkus.reactive.oracle.client.runtime.DataSourcesReactiveOracleConfig;
5861
import io.quarkus.reactive.oracle.client.runtime.OraclePoolRecorder;
62+
import io.quarkus.reactive.oracle.client.runtime.OraclePoolSupport;
5963
import io.quarkus.reactive.oracle.client.runtime.OracleServiceBindingConverter;
6064
import io.quarkus.smallrye.health.deployment.spi.HealthBuildItem;
6165
import io.quarkus.vertx.core.deployment.EventLoopCountBuildItem;
@@ -65,11 +69,12 @@
6569

6670
class ReactiveOracleClientProcessor {
6771

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

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

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

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

102123
// Enable SSL support by default
@@ -176,25 +197,16 @@ void addHealthCheck(
176197
dataSourcesBuildTimeConfig.healthEnabled()));
177198
}
178199

179-
private void createPoolIfDefined(OraclePoolRecorder recorder,
200+
private void createPool(OraclePoolRecorder recorder,
180201
VertxBuildItem vertx,
181202
EventLoopCountBuildItem eventLoopCount,
182203
ShutdownContextBuildItem shutdown,
183204
BuildProducer<OraclePoolBuildItem> oraclePool,
184205
BuildProducer<SyntheticBeanBuildItem> syntheticBeans,
185206
String dataSourceName,
186-
DataSourcesBuildTimeConfig dataSourcesBuildTimeConfig,
187207
DataSourcesRuntimeConfig dataSourcesRuntimeConfig,
188-
DataSourcesReactiveBuildTimeConfig dataSourcesReactiveBuildTimeConfig,
189208
DataSourcesReactiveRuntimeConfig dataSourcesReactiveRuntimeConfig,
190-
DataSourcesReactiveOracleConfig dataSourcesReactiveOracleConfig,
191-
List<DefaultDataSourceDbKindBuildItem> defaultDataSourceDbKindBuildItems,
192-
CurateOutcomeBuildItem curateOutcomeBuildItem) {
193-
194-
if (!isReactiveOraclePoolDefined(dataSourcesBuildTimeConfig, dataSourcesReactiveBuildTimeConfig, dataSourceName,
195-
defaultDataSourceDbKindBuildItems, curateOutcomeBuildItem)) {
196-
return;
197-
}
209+
DataSourcesReactiveOracleConfig dataSourcesReactiveOracleConfig) {
198210

199211
Function<SyntheticCreationalContext<OraclePool>, OraclePool> poolFunction = recorder.configureOraclePool(
200212
vertx.getVertx(),
@@ -282,8 +294,6 @@ private boolean hasPools(DataSourcesBuildTimeConfig dataSourcesBuildTimeConfig,
282294
}
283295

284296
private static class OraclePoolCreatorBeanClassPredicate implements Predicate<Set<Type>> {
285-
private static final Type ORACLE_POOL_CREATOR = Type.create(DotName.createSimple(OraclePoolCreator.class.getName()),
286-
Type.Kind.CLASS);
287297

288298
@Override
289299
public boolean test(Set<Type> types) {

extensions/reactive-oracle-client/deployment/src/test/java/io/quarkus/reactive/oracle/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.oracleclient.OraclePool;
15+
import io.vertx.mutiny.sqlclient.Pool;
1616

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

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

2323
@Inject
2424
ChangingCredentialsProvider credentialsProvider;

extensions/reactive-oracle-client/deployment/src/test/java/io/quarkus/reactive/oracle/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.oracleclient.OraclePool;
13+
import io.vertx.mutiny.sqlclient.Pool;
1414

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

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

2121
@GET
2222
@Produces(MediaType.TEXT_PLAIN)

extensions/reactive-oracle-client/deployment/src/test/java/io/quarkus/reactive/oracle/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.Response;
1313

1414
import io.vertx.oracleclient.OracleException;
15-
import io.vertx.oracleclient.OraclePool;
15+
import io.vertx.sqlclient.Pool;
1616

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

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

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

extensions/reactive-oracle-client/deployment/src/test/java/io/quarkus/reactive/oracle/client/DevServicesOracleDatasourceTestCase.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.oracleclient.OraclePool;
16+
import io.vertx.mutiny.sqlclient.Pool;
1717

1818
public class DevServicesOracleDatasourceTestCase {
1919

@@ -29,7 +29,7 @@ public class DevServicesOracleDatasourceTestCase {
2929
.isEmpty());
3030

3131
@Inject
32-
OraclePool pool;
32+
Pool pool;
3333

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

extensions/reactive-oracle-client/deployment/src/test/java/io/quarkus/reactive/oracle/client/LocalhostOraclePoolCreator.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.oracleclient.OraclePool;
5+
import io.vertx.sqlclient.Pool;
66

77
@Singleton
88
public class LocalhostOraclePoolCreator implements OraclePoolCreator {
99

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

extensions/reactive-oracle-client/deployment/src/test/java/io/quarkus/reactive/oracle/client/MultipleDataSourcesAndOraclePoolCreatorsTest.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.oracleclient.OraclePool;
17+
import io.vertx.sqlclient.Pool;
1818

1919
public class MultipleDataSourcesAndOraclePoolCreatorsTest {
2020

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

4747
@Inject
48-
OraclePool oracleClient;
48+
Pool oracleClient;
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-
OraclePool oracleClient;
68+
Pool oracleClient;
6969

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

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

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

extensions/reactive-oracle-client/deployment/src/test/java/io/quarkus/reactive/oracle/client/MultipleDataSourcesTest.java

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

1212
import io.quarkus.reactive.datasource.ReactiveDataSource;
1313
import io.quarkus.test.QuarkusUnitTest;
14-
import io.vertx.oracleclient.OraclePool;
14+
import io.vertx.sqlclient.Pool;
1515

1616
public class MultipleDataSourcesTest {
1717

@@ -40,7 +40,7 @@ public void testMultipleDataSources() {
4040
static class BeanUsingDefaultDataSource {
4141

4242
@Inject
43-
OraclePool oracleClient;
43+
Pool oracleClient;
4444

4545
public CompletionStage<Void> verify() {
4646
CompletableFuture<Void> cf = new CompletableFuture<>();
@@ -60,7 +60,7 @@ static class BeanUsingHibernateDataSource {
6060

6161
@Inject
6262
@ReactiveDataSource("hibernate")
63-
OraclePool oracleClient;
63+
Pool oracleClient;
6464

6565
public CompletionStage<Void> verify() {
6666
CompletableFuture<Void> cf = new CompletableFuture<>();

0 commit comments

Comments
 (0)