diff --git a/lombok.config b/lombok.config index a8fed54..7513a7a 100644 --- a/lombok.config +++ b/lombok.config @@ -7,3 +7,7 @@ lombok.addNullAnnotations = jspecify # Required for NullAway lombok.addLombokGeneratedAnnotation = true + +# Copy CDI qualifiers and config injection to the generated constructor, so @RequiredArgsConstructor works for them +lombok.copyableAnnotations += org.eclipse.microprofile.config.inject.ConfigProperty +lombok.copyableAnnotations += org.eclipse.microprofile.health.Readiness diff --git a/operator/src/main/java/it/aboutbits/postgresql/core/PasswordFingerprintService.java b/operator/src/main/java/it/aboutbits/postgresql/core/PasswordFingerprintService.java index 24df9e7..7063a59 100644 --- a/operator/src/main/java/it/aboutbits/postgresql/core/PasswordFingerprintService.java +++ b/operator/src/main/java/it/aboutbits/postgresql/core/PasswordFingerprintService.java @@ -47,9 +47,8 @@ public class PasswordFingerprintService { private final KubernetesClient kubernetesClient; - @SuppressWarnings("NullAway.Init") @ConfigProperty(name = "postgresql-operator.password-fingerprint.secret-name") - String secretName; + private final String secretName; private byte @Nullable [] key; diff --git a/operator/src/test/java/it/aboutbits/postgresql/PostgreSQLInstanceReadinessCheckTest.java b/operator/src/test/java/it/aboutbits/postgresql/PostgreSQLInstanceReadinessCheckTest.java index d97d38e..1a1e9f5 100644 --- a/operator/src/test/java/it/aboutbits/postgresql/PostgreSQLInstanceReadinessCheckTest.java +++ b/operator/src/test/java/it/aboutbits/postgresql/PostgreSQLInstanceReadinessCheckTest.java @@ -4,7 +4,7 @@ import io.quarkus.test.junit.QuarkusTest; import it.aboutbits.postgresql._support.testdata.base.TestUtil; import it.aboutbits.postgresql._support.testdata.persisted.Given; -import jakarta.inject.Inject; +import lombok.RequiredArgsConstructor; import org.eclipse.microprofile.health.HealthCheckResponse; import org.eclipse.microprofile.health.Readiness; import org.jspecify.annotations.NullMarked; @@ -17,17 +17,15 @@ import static org.assertj.core.api.Assertions.assertThat; @QuarkusTest +@RequiredArgsConstructor @NullMarked class PostgreSQLInstanceReadinessCheckTest { - @Inject - Given given; + private final Given given; - @Inject @Readiness - PostgreSQLInstanceReadinessCheck readinessCheck; + private final PostgreSQLInstanceReadinessCheck readinessCheck; - @Inject - KubernetesClient kubernetesClient; + private final KubernetesClient kubernetesClient; @BeforeEach void resetEnvironment() { diff --git a/operator/src/test/java/it/aboutbits/postgresql/_support/testdata/persisted/Given.java b/operator/src/test/java/it/aboutbits/postgresql/_support/testdata/persisted/Given.java index 298ee42..e0ce192 100644 --- a/operator/src/test/java/it/aboutbits/postgresql/_support/testdata/persisted/Given.java +++ b/operator/src/test/java/it/aboutbits/postgresql/_support/testdata/persisted/Given.java @@ -22,17 +22,14 @@ public class Given { private final KubernetesClient kubernetesClient; - @SuppressWarnings("NullAway.Init") @ConfigProperty(name = "quarkus.datasource.devservices.username") - String username; + private final String username; - @SuppressWarnings("NullAway.Init") @ConfigProperty(name = "quarkus.datasource.devservices.password") - String password; + private final String password; - @SuppressWarnings("NullAway.Init") @ConfigProperty(name = "quarkus.datasource.jdbc.url") - String jdbcUrl; + private final String jdbcUrl; DBConnectionDetails dbConnectionDetails() { return new DBConnectionDetails( diff --git a/operator/src/test/java/it/aboutbits/postgresql/core/PasswordFingerprintServiceTest.java b/operator/src/test/java/it/aboutbits/postgresql/core/PasswordFingerprintServiceTest.java index 865bb32..162c0b2 100644 --- a/operator/src/test/java/it/aboutbits/postgresql/core/PasswordFingerprintServiceTest.java +++ b/operator/src/test/java/it/aboutbits/postgresql/core/PasswordFingerprintServiceTest.java @@ -34,10 +34,7 @@ void clearSecrets() { /// Each instance has its own key cache, like a fresh operator process. private static PasswordFingerprintService newService() { - var service = new PasswordFingerprintService(client); - service.secretName = SECRET_NAME; - - return service; + return new PasswordFingerprintService(client, SECRET_NAME); } @Nested diff --git a/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerErrorTest.java b/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerErrorTest.java index e45799a..d17949e 100644 --- a/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerErrorTest.java +++ b/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerErrorTest.java @@ -5,7 +5,7 @@ import io.quarkus.test.InjectMock; import io.quarkus.test.junit.QuarkusTest; import it.aboutbits.postgresql.core.PostgreSQLContextFactory; -import jakarta.inject.Inject; +import lombok.RequiredArgsConstructor; import org.jooq.CloseableDSLContext; import org.jooq.exception.DataAccessException; import org.jspecify.annotations.NullMarked; @@ -21,14 +21,14 @@ import static org.mockito.Mockito.when; @QuarkusTest +@RequiredArgsConstructor @NullMarked class ClusterConnectionReconcilerErrorTest { @SuppressWarnings("NullAway.Init") @InjectMock PostgreSQLContextFactory contextFactory; - @Inject - ClusterConnectionReconciler reconciler; + private final ClusterConnectionReconciler reconciler; private ClusterConnection resource; private Context context; diff --git a/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerTest.java b/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerTest.java index 34d4fcf..65b0bb3 100644 --- a/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerTest.java +++ b/operator/src/test/java/it/aboutbits/postgresql/crd/clusterconnection/ClusterConnectionReconcilerTest.java @@ -44,13 +44,11 @@ class ClusterConnectionReconcilerTest { private final KubernetesClient kubernetesClient; - @SuppressWarnings("NullAway.Init") @ConfigProperty(name = "quarkus.datasource.devservices.username") - String dbUsername; + private final String dbUsername; - @SuppressWarnings("NullAway.Init") @ConfigProperty(name = "quarkus.datasource.devservices.password") - String dbPassword; + private final String dbPassword; @BeforeEach void resetEnvironment() {