Skip to content

Commit b0d8146

Browse files
committed
refactor: avoid unneeded initializations in injection contexts
Signed-off-by: Chris Laprun <claprun@redhat.com>
1 parent 86603d9 commit b0d8146

File tree

1 file changed

+26
-11
lines changed
  • operator-framework-core/src/main/java/io/javaoperatorsdk/operator

1 file changed

+26
-11
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@
2424
public class Operator implements LifecycleAware {
2525
private static final Logger log = LoggerFactory.getLogger(Operator.class);
2626

27-
private final ControllerManager controllerManager;
28-
private final LeaderElectionManager leaderElectionManager;
29-
private final ConfigurationService configurationService;
27+
private ControllerManager controllerManager;
28+
private LeaderElectionManager leaderElectionManager;
29+
private ConfigurationService configurationService;
3030
private volatile boolean started = false;
3131

3232
public Operator() {
33-
this((KubernetesClient) null);
33+
init(initConfigurationService(null, null), true);
3434
}
3535

3636
Operator(KubernetesClient kubernetesClient) {
37-
this(initConfigurationService(kubernetesClient, null));
37+
init(initConfigurationService(kubernetesClient, null), false);
3838
}
3939

4040
/**
@@ -46,12 +46,23 @@ public Operator() {
4646
* operator
4747
*/
4848
public Operator(ConfigurationService configurationService) {
49-
this.configurationService = configurationService;
49+
init(configurationService, false);
50+
}
51+
52+
private void init(ConfigurationService configurationService, boolean allowDeferredInit) {
53+
if (configurationService == null) {
54+
if (!allowDeferredInit) {
55+
throw new IllegalStateException(
56+
"Deferred initialization of ConfigurationService is not allowed");
57+
}
58+
} else {
59+
this.configurationService = configurationService;
5060

51-
final var executorServiceManager = configurationService.getExecutorServiceManager();
52-
controllerManager = new ControllerManager(executorServiceManager);
61+
final var executorServiceManager = configurationService.getExecutorServiceManager();
62+
controllerManager = new ControllerManager(executorServiceManager);
5363

54-
leaderElectionManager = new LeaderElectionManager(controllerManager, configurationService);
64+
leaderElectionManager = new LeaderElectionManager(controllerManager, configurationService);
65+
}
5566
}
5667

5768
/**
@@ -62,10 +73,14 @@ public Operator(ConfigurationService configurationService) {
6273
* {@link ConfigurationService} values
6374
*/
6475
public Operator(Consumer<ConfigurationServiceOverrider> overrider) {
65-
this(initConfigurationService(null, overrider));
76+
init(initConfigurationService(null, overrider), false);
6677
}
6778

68-
private static ConfigurationService initConfigurationService(
79+
/**
80+
* Overridable by subclasses to enable deferred configuration, useful to avoid unneeded processing
81+
* in injection scenarios
82+
*/
83+
protected ConfigurationService initConfigurationService(
6984
KubernetesClient client, Consumer<ConfigurationServiceOverrider> overrider) {
7085
// initialize the client if the user didn't provide one
7186
if (client == null) {

0 commit comments

Comments
 (0)