Skip to content

Commit 8ffddfc

Browse files
committed
feat: make AbstractControllerConfiguration directly usable
Obviously, it should be renamed to something else since it's not abstract anymore but doing so would break backwards compatibility so best left for some later time.
1 parent 174472e commit 8ffddfc

File tree

3 files changed

+28
-20
lines changed

3 files changed

+28
-20
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractControllerConfiguration.java

+20-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import io.fabric8.kubernetes.client.CustomResource;
77

8-
public abstract class AbstractControllerConfiguration<R extends CustomResource<?, ?>>
8+
public class AbstractControllerConfiguration<R extends CustomResource<?, ?>>
99
implements ControllerConfiguration<R> {
1010

1111
private final String associatedControllerClassName;
@@ -17,6 +17,7 @@ public abstract class AbstractControllerConfiguration<R extends CustomResource<?
1717
private final boolean watchAllNamespaces;
1818
private final RetryConfiguration retryConfiguration;
1919
private final String labelSelector;
20+
private Class<R> customResourceClass;
2021
private ConfigurationService service;
2122

2223
public AbstractControllerConfiguration(
@@ -27,7 +28,9 @@ public AbstractControllerConfiguration(
2728
boolean generationAware,
2829
Set<String> namespaces,
2930
RetryConfiguration retryConfiguration,
30-
String labelSelector) {
31+
String labelSelector,
32+
Class<R> customResourceClass,
33+
ConfigurationService service) {
3134
this.associatedControllerClassName = associatedControllerClassName;
3235
this.name = name;
3336
this.crdName = crdName;
@@ -41,11 +44,15 @@ public AbstractControllerConfiguration(
4144
? ControllerConfiguration.super.getRetryConfiguration()
4245
: retryConfiguration;
4346
this.labelSelector = labelSelector;
47+
this.customResourceClass =
48+
customResourceClass == null ? ControllerConfiguration.super.getCustomResourceClass()
49+
: customResourceClass;
50+
setConfigurationService(service);
4451
}
4552

4653
/**
4754
* @deprecated use
48-
* {@link #AbstractControllerConfiguration(String, String, String, String, boolean, Set, RetryConfiguration, String)}
55+
* {@link #AbstractControllerConfiguration(String, String, String, String, boolean, Set, RetryConfiguration, String, Class, ConfigurationService)}
4956
* instead
5057
*/
5158
@Deprecated
@@ -58,7 +65,7 @@ public AbstractControllerConfiguration(
5865
Set<String> namespaces,
5966
RetryConfiguration retryConfiguration) {
6067
this(associatedControllerClassName, name, crdName, finalizer, generationAware, namespaces,
61-
retryConfiguration, null);
68+
retryConfiguration, null, null, null);
6269
}
6370

6471
@Override
@@ -108,11 +115,20 @@ public ConfigurationService getConfigurationService() {
108115

109116
@Override
110117
public void setConfigurationService(ConfigurationService service) {
118+
if (this.service != null) {
119+
throw new RuntimeException("A ConfigurationService is already associated with '" + name
120+
+ "' ControllerConfiguration. Cannot change it once set!");
121+
}
111122
this.service = service;
112123
}
113124

114125
@Override
115126
public String getLabelSelector() {
116127
return labelSelector;
117128
}
129+
130+
@Override
131+
public Class<R> getCustomResourceClass() {
132+
return customResourceClass;
133+
}
118134
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java

+3-11
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,9 @@ public ControllerConfiguration<R> build() {
7474
generationAware,
7575
namespaces,
7676
retry,
77-
labelSelector) {
78-
@Override
79-
public Class<R> getCustomResourceClass() {
80-
return original.getCustomResourceClass();
81-
}
82-
83-
@Override
84-
public ConfigurationService getConfigurationService() {
85-
return original.getConfigurationService();
86-
}
87-
};
77+
labelSelector,
78+
original.getCustomResourceClass(),
79+
original.getConfigurationService());
8880
}
8981

9082
public static <R extends CustomResource<?, ?>> ControllerConfigurationOverrider<R> override(

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSourceTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,12 @@ public MixedOperation<TestCustomResource, KubernetesResourceList<TestCustomResou
115115
private static class TestConfiguration extends
116116
AbstractControllerConfiguration<TestCustomResource> {
117117

118-
final ConfigurationService service = mock(ConfigurationService.class);
119-
120118
public TestConfiguration(boolean generationAware) {
121-
super(null, null, null, FINALIZER, generationAware, null, null, null);
122-
when(service.getObjectMapper()).thenReturn(ConfigurationService.OBJECT_MAPPER);
123-
setConfigurationService(service);
119+
super(null, null, null, FINALIZER, generationAware, null, null, null,
120+
TestCustomResource.class,
121+
mock(ConfigurationService.class));
122+
when(getConfigurationService().getObjectMapper())
123+
.thenReturn(ConfigurationService.OBJECT_MAPPER);
124124
}
125125
}
126126
}

0 commit comments

Comments
 (0)