Skip to content

Commit aa0a310

Browse files
committed
fix: make it easier to support new field when overriding configuration
1 parent ba9529a commit aa0a310

File tree

3 files changed

+30
-34
lines changed

3 files changed

+30
-34
lines changed

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

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,19 @@ public class ConfigurationServiceOverrider {
1515
private final ConfigurationService original;
1616
private Metrics metrics;
1717
private Config clientConfig;
18-
private boolean checkCR;
19-
private int threadNumber;
18+
private Boolean checkCR;
19+
private Integer threadNumber;
2020
private Cloner cloner;
21-
private int timeoutSeconds;
22-
private boolean closeClientOnStop;
21+
private Integer timeoutSeconds;
22+
private Boolean closeClientOnStop;
2323
private ObjectMapper objectMapper;
24-
private ExecutorService executorService = null;
24+
private ExecutorService executorService;
2525
private LeaderElectionConfiguration leaderElectionConfiguration;
2626

2727
ConfigurationServiceOverrider(ConfigurationService original) {
2828
this.original = original;
29-
this.clientConfig = original.getClientConfiguration();
30-
this.checkCR = original.checkCRDAndValidateLocalModel();
31-
this.threadNumber = original.concurrentReconciliationThreads();
32-
this.cloner = original.getResourceCloner();
33-
this.timeoutSeconds = original.getTerminationTimeoutSeconds();
34-
this.metrics = original.getMetrics();
35-
this.closeClientOnStop = original.closeClientOnStop();
36-
this.objectMapper = original.getObjectMapper();
3729
}
3830

39-
4031
public ConfigurationServiceOverrider withClientConfiguration(Config configuration) {
4132
this.clientConfig = configuration;
4233
return this;
@@ -97,51 +88,48 @@ public Set<String> getKnownReconcilerNames() {
9788

9889
@Override
9990
public Config getClientConfiguration() {
100-
return clientConfig;
91+
return clientConfig != null ? clientConfig : original.getClientConfiguration();
10192
}
10293

10394
@Override
10495
public boolean checkCRDAndValidateLocalModel() {
105-
return checkCR;
96+
return checkCR != null ? checkCR : original.checkCRDAndValidateLocalModel();
10697
}
10798

10899
@Override
109100
public int concurrentReconciliationThreads() {
110-
return threadNumber;
101+
return threadNumber != null ? threadNumber : original.concurrentReconciliationThreads();
111102
}
112103

113104
@Override
114105
public int getTerminationTimeoutSeconds() {
115-
return timeoutSeconds;
106+
return timeoutSeconds != null ? timeoutSeconds : original.getTerminationTimeoutSeconds();
116107
}
117108

118109
@Override
119110
public Metrics getMetrics() {
120-
return metrics;
111+
return metrics != null ? metrics : original.getMetrics();
121112
}
122113

123114
@Override
124115
public boolean closeClientOnStop() {
125-
return closeClientOnStop;
116+
return closeClientOnStop != null ? closeClientOnStop : original.closeClientOnStop();
126117
}
127118

128119
@Override
129120
public ExecutorService getExecutorService() {
130-
if (executorService != null) {
131-
return executorService;
132-
} else {
133-
return super.getExecutorService();
134-
}
121+
return executorService != null ? executorService : original.getExecutorService();
135122
}
136123

137124
@Override
138125
public ObjectMapper getObjectMapper() {
139-
return objectMapper;
126+
return objectMapper != null ? objectMapper : original.getObjectMapper();
140127
}
141128

142129
@Override
143130
public Optional<LeaderElectionConfiguration> getLeaderElectionConfiguration() {
144-
return Optional.ofNullable(leaderElectionConfiguration);
131+
return leaderElectionConfiguration != null ? Optional.of(leaderElectionConfiguration)
132+
: original.getLeaderElectionConfiguration();
145133
}
146134
};
147135
}

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,14 @@ private static void set(ConfigurationService instance, boolean overriding) {
4545
ConfigurationServiceProvider.instance = instance;
4646
}
4747

48-
public synchronized static void overrideCurrent(
48+
public synchronized static ConfigurationService overrideCurrent(
4949
Consumer<ConfigurationServiceOverrider> overrider) {
50-
final var toOverride =
51-
new ConfigurationServiceOverrider(ConfigurationServiceProvider.instance());
52-
overrider.accept(toOverride);
53-
ConfigurationServiceProvider.set(toOverride.build(), true);
50+
if (overrider != null) {
51+
final var toOverride = new ConfigurationServiceOverrider(instance());
52+
overrider.accept(toOverride);
53+
set(toOverride.build(), true);
54+
}
55+
return instance();
5456
}
5557

5658
public synchronized static void setDefault(ConfigurationService defaultConfigurationService) {

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceProviderTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,23 @@ void shouldProvideTheSetInstanceIfProvided() {
3434

3535
@Test
3636
void shouldBePossibleToOverrideConfigOnce() {
37-
final var config = new AbstractConfigurationService(null);
37+
final var config = new ConfigurationServiceOverrider(new AbstractConfigurationService(null))
38+
.withLeaderElectionConfiguration(new LeaderElectionConfiguration("bar", "barNS"))
39+
.build();
3840
assertFalse(config.checkCRDAndValidateLocalModel());
41+
assertEquals("bar", config.getLeaderElectionConfiguration().orElseThrow().getLeaseName());
3942

4043
ConfigurationServiceProvider.set(config);
4144
var instance = ConfigurationServiceProvider.instance();
4245
assertEquals(config, instance);
4346

44-
ConfigurationServiceProvider.overrideCurrent(o -> o.checkingCRDAndValidateLocalModel(true));
47+
final ConfigurationService overridden = ConfigurationServiceProvider.overrideCurrent(
48+
o -> o.checkingCRDAndValidateLocalModel(true));
4549
instance = ConfigurationServiceProvider.instance();
50+
assertEquals(overridden, instance);
4651
assertNotEquals(config, instance);
4752
assertTrue(instance.checkCRDAndValidateLocalModel());
53+
assertEquals("bar", instance.getLeaderElectionConfiguration().orElseThrow().getLeaseName());
4854

4955
assertThrows(IllegalStateException.class,
5056
() -> ConfigurationServiceProvider.overrideCurrent(o -> o.withCloseClientOnStop(false)));

0 commit comments

Comments
 (0)