Skip to content

Migrate from legacy config classes #247

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions .github/workflows/quarkus-build-native.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,18 @@ jobs:
strategy:
matrix:
java_version:
- '11'
# - '17'
- '17'
- '21'
steps:
- uses: actions/checkout@v3
- uses: graalvm/setup-graalvm@v1
with:
version: '22.3.1'
java-version: ${{ matrix.java_version }}
components: 'native-image'
github-token: ${{ secrets.GB_TOKEN }}
- name: Build & test with native-image
run: |
echo "GRAALVM_HOME: $GRAALVM_HOME"
echo "JAVA_HOME: $JAVA_HOME"
java --version
gu --version
native-image --version
mvn verify -Prelease -Dnative -Dgpg.skip
2 changes: 1 addition & 1 deletion .github/workflows/quarkus-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ jobs:
strategy:
matrix:
java_version:
- '11'
- '17'
- '21'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
import com.datastax.oss.driver.api.core.metadata.NodeStateListener;
import com.datastax.oss.driver.api.core.metadata.schema.SchemaChangeListener;
import com.datastax.oss.driver.api.core.tracker.RequestTracker;
import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigPhase;
import io.quarkus.runtime.annotations.ConfigRoot;
import io.smallrye.config.ConfigMapping;
import io.smallrye.config.WithDefault;
import io.smallrye.config.WithName;
import java.util.List;
import java.util.Optional;

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

/**
* Whether or not an health check is published in case the smallrye-health extension is present.
*/
@ConfigItem(name = "health.enabled", defaultValue = "true")
public boolean healthEnabled;
@WithName("health.enabled")
@WithDefault("true")
boolean healthEnabled();

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

/**
* The name of the algorithm used to compress protocol frames.
Expand All @@ -87,18 +92,16 @@ public class CassandraClientBuildTimeConfig {
* mode.</em>
* </ul>
*/
@ConfigItem(name = "protocol.compression", defaultValue = "none")
public String protocolCompression;
@WithName("protocol.compression")
@WithDefault("none")
String protocolCompression();

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

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

/** The classes of {@link SchemaChangeListener} implementations to register. */
@ConfigItem(name = "schema-change-listeners")
public Optional<List<String>> schemaChangeListeners;
Optional<List<String>> schemaChangeListeners();
}
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ List<ReflectiveClassBuildItem> registerReactiveForReflection() {
@BuildStep
List<ReflectiveClassBuildItem> registerLz4ForReflection(
CassandraClientBuildTimeConfig buildTimeConfig) {
if (buildTimeConfig.protocolCompression.equalsIgnoreCase("lz4")) {
if (buildTimeConfig.protocolCompression().equalsIgnoreCase("lz4")) {
return Collections.singletonList(
ReflectiveClassBuildItem.builder(
"net.jpountz.lz4.LZ4Compressor",
Expand All @@ -135,7 +135,7 @@ List<ReflectiveClassBuildItem> registerRequestTrackersForReflection(
CassandraClientRecorder recorder,
BeanContainerBuildItem beanContainer) {
return buildTimeConfig
.requestTrackers
.requestTrackers()
.map(
classes ->
classes.stream()
Expand All @@ -155,7 +155,7 @@ List<ReflectiveClassBuildItem> registerNodeStateListenersForReflection(
CassandraClientRecorder recorder,
BeanContainerBuildItem beanContainer) {
return buildTimeConfig
.nodeStateListeners
.nodeStateListeners()
.map(
classes ->
classes.stream()
Expand All @@ -175,7 +175,7 @@ List<ReflectiveClassBuildItem> registerSchemaChangeListenersForReflection(
CassandraClientRecorder recorder,
BeanContainerBuildItem beanContainer) {
return buildTimeConfig
.schemaChangeListeners
.schemaChangeListeners()
.map(
classes ->
classes.stream()
Expand All @@ -199,7 +199,7 @@ List<ReflectiveClassBuildItem> registerMetricsFactoriesForReflection(
CassandraClientBuildTimeConfig buildTimeConfig,
Optional<MetricsCapabilityBuildItem> metricsCapability) {

if (buildTimeConfig.metricsEnabled && metricsCapability.isPresent()) {
if (buildTimeConfig.metricsEnabled() && metricsCapability.isPresent()) {

Stream<String> clzStream = Stream.empty();
MetricsCapabilityBuildItem metricsCapabilityItem = metricsCapability.get();
Expand Down Expand Up @@ -249,7 +249,7 @@ void configureMetrics(
CassandraClientBuildTimeConfig buildTimeConfig,
Optional<MetricsCapabilityBuildItem> metricsCapability,
BeanContainerBuildItem beanContainer) {
if (buildTimeConfig.metricsEnabled) {
if (buildTimeConfig.metricsEnabled()) {
if (metricsCapability.isPresent()) {
MetricsCapabilityBuildItem metricsCapabilityItem = metricsCapability.get();
if (metricsCapabilityItem.metricsSupported(MetricsFactory.MICROMETER)) {
Expand Down Expand Up @@ -312,7 +312,7 @@ void configureCompression(
CassandraClientRecorder recorder,
CassandraClientBuildTimeConfig buildTimeConfig,
BeanContainerBuildItem beanContainer) {
recorder.configureCompression(buildTimeConfig.protocolCompression);
recorder.configureCompression(buildTimeConfig.protocolCompression());
}

@BuildStep
Expand All @@ -339,7 +339,7 @@ CassandraClientBuildItem cassandraClient(
HealthBuildItem addHealthCheck(CassandraClientBuildTimeConfig buildTimeConfig) {
return new HealthBuildItem(
"com.datastax.oss.quarkus.runtime.internal.health.CassandraAsyncHealthCheck",
buildTimeConfig.healthEnabled);
buildTimeConfig.healthEnabled());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
import com.datastax.oss.quarkus.test.CassandraTestResource;
import io.micrometer.core.instrument.Meter.Id;
import io.micrometer.core.instrument.MeterRegistry;
import io.quarkus.bootstrap.model.AppArtifact;
import io.quarkus.builder.Version;
import io.quarkus.maven.dependency.Dependency;
import io.quarkus.test.QuarkusUnitTest;
import io.quarkus.test.common.QuarkusTestResource;
import jakarta.inject.Inject;
Expand Down Expand Up @@ -53,8 +53,8 @@ public class CassandraMetricsDisabledTest {
// Micrometer is present...
.setForcedDependencies(
Arrays.asList(
new AppArtifact("io.quarkus", "quarkus-micrometer", Version.getVersion()),
new AppArtifact("io.quarkus", "quarkus-resteasy", Version.getVersion())))
Dependency.of("io.quarkus", "quarkus-micrometer", Version.getVersion()),
Dependency.of("io.quarkus", "quarkus-resteasy", Version.getVersion())))
// but Cassandra metrics are disabled
.overrideConfigKey("quarkus.cassandra.metrics.enabled", "false");

Expand All @@ -78,6 +78,6 @@ public void should_not_enable_metrics_when_metrics_disabled_by_configuration() {
}

private boolean filterAllCassandraMetrics(Id id) {
return id.getName().startsWith(config.cassandraClientMetricsConfig.prefix);
return id.getName().startsWith(config.cassandraClientMetricsConfig().prefix());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import com.datastax.oss.quarkus.runtime.api.config.CassandraClientConfig;
import com.datastax.oss.quarkus.runtime.api.session.QuarkusCqlSession;
import com.datastax.oss.quarkus.test.CassandraTestResource;
import io.quarkus.bootstrap.model.AppArtifact;
import io.quarkus.builder.Version;
import io.quarkus.maven.dependency.Dependency;
import io.quarkus.test.QuarkusUnitTest;
import io.quarkus.test.common.QuarkusTestResource;
import jakarta.inject.Inject;
Expand Down Expand Up @@ -58,7 +58,7 @@ public class CassandraMetricsMicroProfileTest {
() -> ShrinkWrap.create(JavaArchive.class).addClasses(CassandraTestResource.class))
.setForcedDependencies(
Collections.singletonList(
new AppArtifact("io.quarkus", "quarkus-smallrye-metrics", Version.getVersion())))
Dependency.of("io.quarkus", "quarkus-smallrye-metrics", Version.getVersion())))
.overrideConfigKey("quarkus.cassandra.metrics.enabled", "true");

@Test
Expand Down Expand Up @@ -102,6 +102,6 @@ public void should_expose_correct_number_of_metrics() {
}

private boolean filterAllCassandraMetrics(MetricID id) {
return id.getName().startsWith(config.cassandraClientMetricsConfig.prefix);
return id.getName().startsWith(config.cassandraClientMetricsConfig().prefix());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
import io.micrometer.core.instrument.Meter.Id;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
import io.quarkus.bootstrap.model.AppArtifact;
import io.quarkus.builder.Version;
import io.quarkus.maven.dependency.Dependency;
import io.quarkus.test.QuarkusUnitTest;
import io.quarkus.test.common.QuarkusTestResource;
import jakarta.inject.Inject;
Expand All @@ -53,8 +53,8 @@ public class CassandraMetricsMicrometerTest {
() -> ShrinkWrap.create(JavaArchive.class).addClasses(CassandraTestResource.class))
.setForcedDependencies(
Arrays.asList(
new AppArtifact("io.quarkus", "quarkus-micrometer", Version.getVersion()),
new AppArtifact("io.quarkus", "quarkus-resteasy", Version.getVersion())))
Dependency.of("io.quarkus", "quarkus-micrometer", Version.getVersion()),
Dependency.of("io.quarkus", "quarkus-resteasy", Version.getVersion())))
.overrideConfigKey("quarkus.cassandra.metrics.enabled", "true")
// test a different prefix
.overrideConfigKey("quarkus.cassandra.metrics.prefix", "custom.prefix");
Expand Down Expand Up @@ -97,7 +97,7 @@ public void should_expose_correct_number_of_metrics() {
}

private boolean filterAllCassandraMetrics(Id id) {
assertThat(config.cassandraClientMetricsConfig.prefix).isEqualTo("custom.prefix");
return id.getName().startsWith(config.cassandraClientMetricsConfig.prefix);
assertThat(config.cassandraClientMetricsConfig().prefix()).isEqualTo("custom.prefix");
return id.getName().startsWith(config.cassandraClientMetricsConfig().prefix());
}
}
4 changes: 2 additions & 2 deletions integration-tests/dse/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@
</property>
</activation>
<properties>
<!-- This module cannot run in native mode so force the package type to jar and skip tests -->
<quarkus.package.type>jar</quarkus.package.type>
<!-- This module cannot run in native mode so skip tests -->
<quarkus.native.enabled>false</quarkus.native.enabled>
<skipITs>true</skipITs>
</properties>
</profile>
Expand Down
2 changes: 1 addition & 1 deletion integration-tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
</property>
</activation>
<properties>
<quarkus.package.type>native</quarkus.package.type>
<quarkus.native.enabled>true</quarkus.native.enabled>
<quarkus.native.enable-http-url-handler>true</quarkus.native.enable-http-url-handler>
<failsafe.testGroups>native</failsafe.testGroups>
</properties>
Expand Down
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
Note: when upgrading the Quarkus version or the DataStax Java driver version, make sure that you
upgrade them in the quickstart module too.
-->
<quarkus.version>3.1.0.Final</quarkus.version>
<quarkus.version>3.25.0</quarkus.version>
<datastax-java-driver.version>4.15.0</datastax-java-driver.version>
<assertj.version>3.23.1</assertj.version>
<maven.compiler.target>11</maven.compiler.target>
Expand All @@ -56,7 +56,7 @@
<plugin>
<groupId>com.spotify.fmt</groupId>
<artifactId>fmt-maven-plugin</artifactId>
<version>2.19</version>
<version>2.27</version>
</plugin>
<plugin>
<groupId>au.com.acegi</groupId>
Expand All @@ -76,7 +76,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
<version>0.8.13</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
10 changes: 5 additions & 5 deletions quickstart/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<inceptionYear>2020</inceptionYear>
<properties>
<java.version>11</java.version>
<quarkus.version>3.1.0.Final</quarkus.version>
<quarkus.version>3.25.0</quarkus.version>
<datastax-java-driver.version>4.15.0</datastax-java-driver.version>
<assertj.version>3.23.1</assertj.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down Expand Up @@ -76,11 +76,11 @@
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
<artifactId>quarkus-rest</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson</artifactId>
<artifactId>quarkus-rest-jackson</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
Expand Down Expand Up @@ -116,7 +116,7 @@
<plugin>
<groupId>com.spotify.fmt</groupId>
<artifactId>fmt-maven-plugin</artifactId>
<version>2.19</version>
<version>2.27</version>
<executions>
<execution>
<goals>
Expand Down Expand Up @@ -211,7 +211,7 @@
</property>
</activation>
<properties>
<quarkus.package.type>native</quarkus.package.type>
<quarkus.native.enabled>true</quarkus.native.enabled>
<quarkus.native.enable-http-url-handler>true</quarkus.native.enable-http-url-handler>
<failsafe.testGroups>native</failsafe.testGroups>
</properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,21 @@
package com.datastax.oss.quarkus.runtime.api.config;

import io.quarkus.runtime.annotations.ConfigGroup;
import io.quarkus.runtime.annotations.ConfigItem;
import java.util.Optional;

/** This class holds runtime configuration items related to authentication. */
@ConfigGroup
public class CassandraClientAuthConfig {
public interface CassandraClientAuthConfig {

/**
* The username used to connect to Apache Cassandra(R). If a username and a password are both
* provided, plain text authentication will be automatically enabled.
*/
@ConfigItem(name = "username")
public Optional<String> username;
Optional<String> username();

/**
* The auth_provider password used to connect to Apache Cassandra(R). If a username and a password
* are both provided, plain text authentication will be automatically enabled.
*/
@ConfigItem(name = "password")
public Optional<String> password;
Optional<String> password();
}
Loading
Loading