Skip to content

Commit a9ee453

Browse files
committed
refactor: avoid recording default matcher
Signed-off-by: Chris Laprun <[email protected]>
1 parent 88b92ac commit a9ee453

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java

+12-7
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,13 @@ public abstract class KubernetesDependentResource<R extends HasMetadata, P exten
3838

3939
private static final Logger log = LoggerFactory.getLogger(KubernetesDependentResource.class);
4040

41-
@SuppressWarnings("rawtypes")
42-
private static final SSABasedGenericKubernetesResourceMatcher defaultMatcher =
43-
SSABasedGenericKubernetesResourceMatcher.getInstance();
44-
4541
private final boolean garbageCollected = this instanceof GarbageCollected;
4642
private KubernetesDependentResourceConfig<R> kubernetesDependentResourceConfig;
4743
private volatile Boolean useSSA;
4844

49-
@SuppressWarnings("unchecked")
50-
private SSABasedGenericKubernetesResourceMatcher<R> matcher = defaultMatcher;
45+
private SSABasedGenericKubernetesResourceMatcher<R> matcher =
46+
SSABasedGenericKubernetesResourceMatcher.getInstance();
47+
private volatile boolean matcherSet = false;
5148

5249
public KubernetesDependentResource(Class<R> resourceType) {
5350
this(resourceType, null);
@@ -57,16 +54,24 @@ public KubernetesDependentResource(Class<R> resourceType, String name) {
5754
super(resourceType, name);
5855
}
5956

57+
public KubernetesDependentResource(
58+
Class<R> resourceType, String name, SSABasedGenericKubernetesResourceMatcher<R> matcher) {
59+
this(resourceType, name);
60+
this.matcher = matcher;
61+
matcherSet = true;
62+
}
63+
6064
@Override
6165
public void configureWith(KubernetesDependentResourceConfig<R> config) {
6266
this.kubernetesDependentResourceConfig = config;
6367
}
6468

6569
public void setMatcher(SSABasedGenericKubernetesResourceMatcher<R> matcher) {
66-
if (this.matcher != defaultMatcher) {
70+
if (matcherSet) {
6771
throw new IllegalStateException("Can only set a matcher once.");
6872
}
6973
this.matcher = matcher;
74+
matcherSet = true;
7075
}
7176

7277
@SuppressWarnings("unused")

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcherTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,7 @@ void testCustomMatcher_returnsExpectedMatchBasedOnReadOnlyLabel(boolean readOnly
261261

262262
private static class ConfigMapDR extends KubernetesDependentResource<ConfigMap, ConfigMap> {
263263
public ConfigMapDR() {
264-
super(ConfigMap.class);
265-
setMatcher(new ReadOnlyAwareMatcher<>());
264+
super(ConfigMap.class, "foo", new ReadOnlyAwareMatcher<>());
266265
}
267266
}
268267

0 commit comments

Comments
 (0)