2424public 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