Skip to content

Commit 736da3c

Browse files
committed
fix: make QuarkusControllerConfiguration RecordableConstructor-enabled
This requires: - each constructor parameter needs to have an associated getter with the exact same name and type - for constructor params to be discovered by Quarkus, Maven compiler parameters support needs to be activated See https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#parameters For some reason, just setting the property wasn't enough, had to configure the compiler plugin directly - a recent Maven compiler plugin, by default, you get 3.1 which doesn't support this option
1 parent 4601f94 commit 736da3c

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

quarkus-extension/deployment/src/main/java/io/javaoperatorsdk/quarkus/extension/deployment/QuarkusExtensionProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ private ControllerConfigurationBuildItem createControllerConfiguration(ClassInfo
135135
valueOrDefault(controllerAnnotation, "finalizerName", AnnotationValue::asString, () -> ControllerUtils.getDefaultFinalizerName(crdName)),
136136
valueOrDefault(controllerAnnotation, "generationAwareEventProcessing", AnnotationValue::asBoolean, () -> true),
137137
valueOrDefault(controllerAnnotation, "isClusterScoped", AnnotationValue::asBoolean, () -> false),
138-
valueOrDefault(controllerAnnotation, "namespaces", AnnotationValue::asStringArray, () -> new String[]{}),
138+
QuarkusControllerConfiguration.asSet(valueOrDefault(controllerAnnotation, "namespaces", AnnotationValue::asStringArray, () -> new String[]{})),
139139
crType,
140140
doneableClassName,
141141
null // todo: fix-me

quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusControllerConfiguration.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,40 @@ public class QuarkusControllerConfiguration<R extends CustomResource> implements
1717
private final boolean clusterScoped;
1818
private final Set<String> namespaces;
1919
private final String crClass;
20-
private final String doneableClass;
20+
private final String doneableClassName;
2121
private final boolean watchAllNamespaces;
2222
private final RetryConfiguration retryConfiguration;
2323

2424
@RecordableConstructor
25-
public QuarkusControllerConfiguration(String name, String crdName, String finalizer, boolean generationAware, boolean clusterScoped, String[] namespaces, String crClass, String doneableClass, RetryConfiguration retryConfiguration) {
25+
public QuarkusControllerConfiguration(String name, String crdName, String finalizer, boolean generationAware, boolean clusterScoped, Set<String> namespaces, String crClass, String doneableClassName, RetryConfiguration retryConfiguration) {
2626
this.name = name;
2727
this.crdName = crdName;
2828
this.finalizer = finalizer;
2929
this.generationAware = generationAware;
3030
this.clusterScoped = clusterScoped;
31-
this.namespaces = namespaces == null || namespaces.length == 0 ? Collections.emptySet() : Set.of(namespaces);
31+
this.namespaces = namespaces;
3232
this.crClass = crClass;
33-
this.doneableClass = doneableClass;
33+
this.doneableClassName = doneableClassName;
3434
this.watchAllNamespaces = this.namespaces.contains(WATCH_ALL_NAMESPACES_MARKER);
3535
this.retryConfiguration = retryConfiguration == null ? ControllerConfiguration.super.getRetryConfiguration() : retryConfiguration;
3636
}
3737

38+
public static Set<String> asSet(String[] namespaces) {
39+
return namespaces == null || namespaces.length == 0 ? Collections.emptySet() : Set.of(namespaces);
40+
}
41+
42+
public String getCrdName() {
43+
return getCRDName();
44+
}
45+
46+
public String getCrClass() {
47+
return crClass;
48+
}
49+
50+
public String getDoneableClassName() {
51+
return doneableClassName;
52+
}
53+
3854
@Override
3955
public String getName() {
4056
return name;
@@ -67,9 +83,9 @@ public Class<R> getCustomResourceClass() {
6783
@Override
6884
public Class<? extends CustomResourceDoneable<R>> getDoneableClass() {
6985
try {
70-
return (Class<CustomResourceDoneable<R>>) Thread.currentThread().getContextClassLoader().loadClass(doneableClass);
86+
return (Class<CustomResourceDoneable<R>>) Thread.currentThread().getContextClassLoader().loadClass(doneableClassName);
7187
} catch (ClassNotFoundException e) {
72-
throw new IllegalArgumentException("Couldn't find class " + doneableClass);
88+
throw new IllegalArgumentException("Couldn't find class " + doneableClassName);
7389
}
7490
}
7591

samples/quarkus/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
<maven.compiler.source>11</maven.compiler.source>
1919
<maven.compiler.target>11</maven.compiler.target>
2020
<quarkus.version>1.10.3.Final</quarkus.version>
21+
<compiler-plugin.version>3.8.1</compiler-plugin.version>
22+
<maven.compiler.parameters>true</maven.compiler.parameters>
2123
</properties>
2224

2325
<dependencyManagement>
@@ -57,6 +59,14 @@
5759

5860
<build>
5961
<plugins>
62+
<plugin>
63+
<groupId>org.apache.maven.plugins</groupId>
64+
<artifactId>maven-compiler-plugin</artifactId>
65+
<version>${compiler-plugin.version}</version>
66+
<configuration>
67+
<parameters>true</parameters>
68+
</configuration>
69+
</plugin>
6070
<plugin>
6171
<groupId>io.quarkus</groupId>
6272
<artifactId>quarkus-maven-plugin</artifactId>

0 commit comments

Comments
 (0)