Skip to content

Commit 69339e6

Browse files
Migrate from legacy config classes (#247)
* Upgrade Quarkus to 3.25.0 * Updates to make the project buildable with JDK 21 * Migrate from legacy config classes to @ConfigMapping interfaces Fixes #246
1 parent 82cc88b commit 69339e6

22 files changed

+247
-215
lines changed

.github/workflows/quarkus-build-native.yaml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,18 @@ jobs:
1111
strategy:
1212
matrix:
1313
java_version:
14-
- '11'
15-
# - '17'
14+
- '17'
15+
- '21'
1616
steps:
1717
- uses: actions/checkout@v3
1818
- uses: graalvm/setup-graalvm@v1
1919
with:
20-
version: '22.3.1'
2120
java-version: ${{ matrix.java_version }}
22-
components: 'native-image'
2321
github-token: ${{ secrets.GB_TOKEN }}
2422
- name: Build & test with native-image
2523
run: |
2624
echo "GRAALVM_HOME: $GRAALVM_HOME"
2725
echo "JAVA_HOME: $JAVA_HOME"
2826
java --version
29-
gu --version
3027
native-image --version
3128
mvn verify -Prelease -Dnative -Dgpg.skip

.github/workflows/quarkus-build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ jobs:
77
strategy:
88
matrix:
99
java_version:
10-
- '11'
1110
- '17'
11+
- '21'
1212
steps:
1313
- uses: actions/checkout@v3
1414
- uses: actions/setup-java@v3

deployment/src/main/java/com/datastax/oss/quarkus/deployment/api/CassandraClientBuildTimeConfig.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import com.datastax.oss.driver.api.core.metadata.NodeStateListener;
1919
import com.datastax.oss.driver.api.core.metadata.schema.SchemaChangeListener;
2020
import com.datastax.oss.driver.api.core.tracker.RequestTracker;
21-
import io.quarkus.runtime.annotations.ConfigItem;
2221
import io.quarkus.runtime.annotations.ConfigPhase;
2322
import io.quarkus.runtime.annotations.ConfigRoot;
23+
import io.smallrye.config.ConfigMapping;
24+
import io.smallrye.config.WithDefault;
25+
import io.smallrye.config.WithName;
2426
import java.util.List;
2527
import java.util.Optional;
2628

@@ -30,14 +32,16 @@
3032
* <p>Settings specified in application.properties under the {@code quarkus.cassandra} prefix will
3133
* be mapped to fields in this class and its child configuration classes.
3234
*/
33-
@ConfigRoot(name = "cassandra", phase = ConfigPhase.BUILD_TIME)
34-
public class CassandraClientBuildTimeConfig {
35+
@ConfigMapping(prefix = "quarkus.cassandra")
36+
@ConfigRoot(phase = ConfigPhase.BUILD_TIME)
37+
public interface CassandraClientBuildTimeConfig {
3538

3639
/**
3740
* Whether or not an health check is published in case the smallrye-health extension is present.
3841
*/
39-
@ConfigItem(name = "health.enabled", defaultValue = "true")
40-
public boolean healthEnabled;
42+
@WithName("health.enabled")
43+
@WithDefault("true")
44+
boolean healthEnabled();
4145

4246
/**
4347
* Whether or not metrics for the Cassandra driver should be published.
@@ -70,8 +74,9 @@ public class CassandraClientBuildTimeConfig {
7074
* href="https://docs.datastax.com/en/developer/java-driver/latest/manual/core/metrics/#configuration">
7175
* Metrics configuration</a> in the Java driver manual.
7276
*/
73-
@ConfigItem(name = "metrics.enabled", defaultValue = "false")
74-
public boolean metricsEnabled;
77+
@WithName("metrics.enabled")
78+
@WithDefault("false")
79+
boolean metricsEnabled();
7580

7681
/**
7782
* The name of the algorithm used to compress protocol frames.
@@ -87,18 +92,16 @@ public class CassandraClientBuildTimeConfig {
8792
* mode.</em>
8893
* </ul>
8994
*/
90-
@ConfigItem(name = "protocol.compression", defaultValue = "none")
91-
public String protocolCompression;
95+
@WithName("protocol.compression")
96+
@WithDefault("none")
97+
String protocolCompression();
9298

9399
/** The classes of {@link RequestTracker} implementations to register. */
94-
@ConfigItem(name = "request-trackers")
95-
public Optional<List<String>> requestTrackers;
100+
Optional<List<String>> requestTrackers();
96101

97102
/** The classes of {@link NodeStateListener} implementations to register. */
98-
@ConfigItem(name = "node-state-listeners")
99-
public Optional<List<String>> nodeStateListeners;
103+
Optional<List<String>> nodeStateListeners();
100104

101105
/** The classes of {@link SchemaChangeListener} implementations to register. */
102-
@ConfigItem(name = "schema-change-listeners")
103-
public Optional<List<String>> schemaChangeListeners;
106+
Optional<List<String>> schemaChangeListeners();
104107
}

deployment/src/main/java/com/datastax/oss/quarkus/deployment/internal/CassandraClientProcessor.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ List<ReflectiveClassBuildItem> registerReactiveForReflection() {
109109
@BuildStep
110110
List<ReflectiveClassBuildItem> registerLz4ForReflection(
111111
CassandraClientBuildTimeConfig buildTimeConfig) {
112-
if (buildTimeConfig.protocolCompression.equalsIgnoreCase("lz4")) {
112+
if (buildTimeConfig.protocolCompression().equalsIgnoreCase("lz4")) {
113113
return Collections.singletonList(
114114
ReflectiveClassBuildItem.builder(
115115
"net.jpountz.lz4.LZ4Compressor",
@@ -135,7 +135,7 @@ List<ReflectiveClassBuildItem> registerRequestTrackersForReflection(
135135
CassandraClientRecorder recorder,
136136
BeanContainerBuildItem beanContainer) {
137137
return buildTimeConfig
138-
.requestTrackers
138+
.requestTrackers()
139139
.map(
140140
classes ->
141141
classes.stream()
@@ -155,7 +155,7 @@ List<ReflectiveClassBuildItem> registerNodeStateListenersForReflection(
155155
CassandraClientRecorder recorder,
156156
BeanContainerBuildItem beanContainer) {
157157
return buildTimeConfig
158-
.nodeStateListeners
158+
.nodeStateListeners()
159159
.map(
160160
classes ->
161161
classes.stream()
@@ -175,7 +175,7 @@ List<ReflectiveClassBuildItem> registerSchemaChangeListenersForReflection(
175175
CassandraClientRecorder recorder,
176176
BeanContainerBuildItem beanContainer) {
177177
return buildTimeConfig
178-
.schemaChangeListeners
178+
.schemaChangeListeners()
179179
.map(
180180
classes ->
181181
classes.stream()
@@ -199,7 +199,7 @@ List<ReflectiveClassBuildItem> registerMetricsFactoriesForReflection(
199199
CassandraClientBuildTimeConfig buildTimeConfig,
200200
Optional<MetricsCapabilityBuildItem> metricsCapability) {
201201

202-
if (buildTimeConfig.metricsEnabled && metricsCapability.isPresent()) {
202+
if (buildTimeConfig.metricsEnabled() && metricsCapability.isPresent()) {
203203

204204
Stream<String> clzStream = Stream.empty();
205205
MetricsCapabilityBuildItem metricsCapabilityItem = metricsCapability.get();
@@ -249,7 +249,7 @@ void configureMetrics(
249249
CassandraClientBuildTimeConfig buildTimeConfig,
250250
Optional<MetricsCapabilityBuildItem> metricsCapability,
251251
BeanContainerBuildItem beanContainer) {
252-
if (buildTimeConfig.metricsEnabled) {
252+
if (buildTimeConfig.metricsEnabled()) {
253253
if (metricsCapability.isPresent()) {
254254
MetricsCapabilityBuildItem metricsCapabilityItem = metricsCapability.get();
255255
if (metricsCapabilityItem.metricsSupported(MetricsFactory.MICROMETER)) {
@@ -312,7 +312,7 @@ void configureCompression(
312312
CassandraClientRecorder recorder,
313313
CassandraClientBuildTimeConfig buildTimeConfig,
314314
BeanContainerBuildItem beanContainer) {
315-
recorder.configureCompression(buildTimeConfig.protocolCompression);
315+
recorder.configureCompression(buildTimeConfig.protocolCompression());
316316
}
317317

318318
@BuildStep
@@ -339,7 +339,7 @@ CassandraClientBuildItem cassandraClient(
339339
HealthBuildItem addHealthCheck(CassandraClientBuildTimeConfig buildTimeConfig) {
340340
return new HealthBuildItem(
341341
"com.datastax.oss.quarkus.runtime.internal.health.CassandraAsyncHealthCheck",
342-
buildTimeConfig.healthEnabled);
342+
buildTimeConfig.healthEnabled());
343343
}
344344

345345
/**

deployment/src/test/java/com/datastax/oss/quarkus/deployment/internal/metrics/CassandraMetricsDisabledTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import com.datastax.oss.quarkus.test.CassandraTestResource;
2525
import io.micrometer.core.instrument.Meter.Id;
2626
import io.micrometer.core.instrument.MeterRegistry;
27-
import io.quarkus.bootstrap.model.AppArtifact;
2827
import io.quarkus.builder.Version;
28+
import io.quarkus.maven.dependency.Dependency;
2929
import io.quarkus.test.QuarkusUnitTest;
3030
import io.quarkus.test.common.QuarkusTestResource;
3131
import jakarta.inject.Inject;
@@ -53,8 +53,8 @@ public class CassandraMetricsDisabledTest {
5353
// Micrometer is present...
5454
.setForcedDependencies(
5555
Arrays.asList(
56-
new AppArtifact("io.quarkus", "quarkus-micrometer", Version.getVersion()),
57-
new AppArtifact("io.quarkus", "quarkus-resteasy", Version.getVersion())))
56+
Dependency.of("io.quarkus", "quarkus-micrometer", Version.getVersion()),
57+
Dependency.of("io.quarkus", "quarkus-resteasy", Version.getVersion())))
5858
// but Cassandra metrics are disabled
5959
.overrideConfigKey("quarkus.cassandra.metrics.enabled", "false");
6060

@@ -78,6 +78,6 @@ public void should_not_enable_metrics_when_metrics_disabled_by_configuration() {
7878
}
7979

8080
private boolean filterAllCassandraMetrics(Id id) {
81-
return id.getName().startsWith(config.cassandraClientMetricsConfig.prefix);
81+
return id.getName().startsWith(config.cassandraClientMetricsConfig().prefix());
8282
}
8383
}

deployment/src/test/java/com/datastax/oss/quarkus/deployment/internal/metrics/CassandraMetricsMicroProfileTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import com.datastax.oss.quarkus.runtime.api.config.CassandraClientConfig;
2222
import com.datastax.oss.quarkus.runtime.api.session.QuarkusCqlSession;
2323
import com.datastax.oss.quarkus.test.CassandraTestResource;
24-
import io.quarkus.bootstrap.model.AppArtifact;
2524
import io.quarkus.builder.Version;
25+
import io.quarkus.maven.dependency.Dependency;
2626
import io.quarkus.test.QuarkusUnitTest;
2727
import io.quarkus.test.common.QuarkusTestResource;
2828
import jakarta.inject.Inject;
@@ -58,7 +58,7 @@ public class CassandraMetricsMicroProfileTest {
5858
() -> ShrinkWrap.create(JavaArchive.class).addClasses(CassandraTestResource.class))
5959
.setForcedDependencies(
6060
Collections.singletonList(
61-
new AppArtifact("io.quarkus", "quarkus-smallrye-metrics", Version.getVersion())))
61+
Dependency.of("io.quarkus", "quarkus-smallrye-metrics", Version.getVersion())))
6262
.overrideConfigKey("quarkus.cassandra.metrics.enabled", "true");
6363

6464
@Test
@@ -102,6 +102,6 @@ public void should_expose_correct_number_of_metrics() {
102102
}
103103

104104
private boolean filterAllCassandraMetrics(MetricID id) {
105-
return id.getName().startsWith(config.cassandraClientMetricsConfig.prefix);
105+
return id.getName().startsWith(config.cassandraClientMetricsConfig().prefix());
106106
}
107107
}

deployment/src/test/java/com/datastax/oss/quarkus/deployment/internal/metrics/CassandraMetricsMicrometerTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import io.micrometer.core.instrument.Meter.Id;
2727
import io.micrometer.core.instrument.MeterRegistry;
2828
import io.micrometer.core.instrument.Timer;
29-
import io.quarkus.bootstrap.model.AppArtifact;
3029
import io.quarkus.builder.Version;
30+
import io.quarkus.maven.dependency.Dependency;
3131
import io.quarkus.test.QuarkusUnitTest;
3232
import io.quarkus.test.common.QuarkusTestResource;
3333
import jakarta.inject.Inject;
@@ -53,8 +53,8 @@ public class CassandraMetricsMicrometerTest {
5353
() -> ShrinkWrap.create(JavaArchive.class).addClasses(CassandraTestResource.class))
5454
.setForcedDependencies(
5555
Arrays.asList(
56-
new AppArtifact("io.quarkus", "quarkus-micrometer", Version.getVersion()),
57-
new AppArtifact("io.quarkus", "quarkus-resteasy", Version.getVersion())))
56+
Dependency.of("io.quarkus", "quarkus-micrometer", Version.getVersion()),
57+
Dependency.of("io.quarkus", "quarkus-resteasy", Version.getVersion())))
5858
.overrideConfigKey("quarkus.cassandra.metrics.enabled", "true")
5959
// test a different prefix
6060
.overrideConfigKey("quarkus.cassandra.metrics.prefix", "custom.prefix");
@@ -97,7 +97,7 @@ public void should_expose_correct_number_of_metrics() {
9797
}
9898

9999
private boolean filterAllCassandraMetrics(Id id) {
100-
assertThat(config.cassandraClientMetricsConfig.prefix).isEqualTo("custom.prefix");
101-
return id.getName().startsWith(config.cassandraClientMetricsConfig.prefix);
100+
assertThat(config.cassandraClientMetricsConfig().prefix()).isEqualTo("custom.prefix");
101+
return id.getName().startsWith(config.cassandraClientMetricsConfig().prefix());
102102
}
103103
}

integration-tests/dse/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@
141141
</property>
142142
</activation>
143143
<properties>
144-
<!-- This module cannot run in native mode so force the package type to jar and skip tests -->
145-
<quarkus.package.type>jar</quarkus.package.type>
144+
<!-- This module cannot run in native mode so skip tests -->
145+
<quarkus.native.enabled>false</quarkus.native.enabled>
146146
<skipITs>true</skipITs>
147147
</properties>
148148
</profile>

integration-tests/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@
116116
</property>
117117
</activation>
118118
<properties>
119-
<quarkus.package.type>native</quarkus.package.type>
119+
<quarkus.native.enabled>true</quarkus.native.enabled>
120120
<quarkus.native.enable-http-url-handler>true</quarkus.native.enable-http-url-handler>
121121
<failsafe.testGroups>native</failsafe.testGroups>
122122
</properties>

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
Note: when upgrading the Quarkus version or the DataStax Java driver version, make sure that you
3434
upgrade them in the quickstart module too.
3535
-->
36-
<quarkus.version>3.1.0.Final</quarkus.version>
36+
<quarkus.version>3.25.0</quarkus.version>
3737
<datastax-java-driver.version>4.15.0</datastax-java-driver.version>
3838
<assertj.version>3.23.1</assertj.version>
3939
<maven.compiler.target>11</maven.compiler.target>
@@ -56,7 +56,7 @@
5656
<plugin>
5757
<groupId>com.spotify.fmt</groupId>
5858
<artifactId>fmt-maven-plugin</artifactId>
59-
<version>2.19</version>
59+
<version>2.27</version>
6060
</plugin>
6161
<plugin>
6262
<groupId>au.com.acegi</groupId>
@@ -76,7 +76,7 @@
7676
<plugin>
7777
<groupId>org.jacoco</groupId>
7878
<artifactId>jacoco-maven-plugin</artifactId>
79-
<version>0.8.8</version>
79+
<version>0.8.13</version>
8080
</plugin>
8181
<plugin>
8282
<groupId>org.apache.maven.plugins</groupId>

0 commit comments

Comments
 (0)