5
5
import java .util .Set ;
6
6
import java .util .concurrent .ExecutorService ;
7
7
import java .util .function .Consumer ;
8
+ import java .util .function .Function ;
8
9
9
10
import org .slf4j .Logger ;
10
11
import org .slf4j .LoggerFactory ;
@@ -40,6 +41,7 @@ public class ConfigurationServiceOverrider {
40
41
private Boolean previousAnnotationForDependentResources ;
41
42
private Boolean parseResourceVersions ;
42
43
private Boolean useSSAToPatchPrimaryResource ;
44
+ private Boolean cloneSecondaryResourcesWhenGettingFromCache ;
43
45
private DependentResourceFactory dependentResourceFactory ;
44
46
45
47
ConfigurationServiceOverrider (ConfigurationService original ) {
@@ -180,29 +182,42 @@ public ConfigurationServiceOverrider withUseSSAToPatchPrimaryResource(boolean va
180
182
return this ;
181
183
}
182
184
185
+ public ConfigurationServiceOverrider withCloneSecondaryResourcesWhenGettingFromCache (
186
+ boolean value ) {
187
+ this .cloneSecondaryResourcesWhenGettingFromCache = value ;
188
+ return this ;
189
+ }
190
+
183
191
public ConfigurationService build () {
184
192
return new BaseConfigurationService (original .getVersion (), cloner , client ) {
185
193
@ Override
186
194
public Set <String > getKnownReconcilerNames () {
187
195
return original .getKnownReconcilerNames ();
188
196
}
189
197
198
+ private <T > T overriddenValueOrDefault (T value ,
199
+ Function <ConfigurationService , T > defaultValue ) {
200
+ return value != null ? value : defaultValue .apply (original );
201
+ }
202
+
190
203
@ Override
191
204
public boolean checkCRDAndValidateLocalModel () {
192
- return checkCR != null ? checkCR : original .checkCRDAndValidateLocalModel ();
205
+ return overriddenValueOrDefault (checkCR ,
206
+ ConfigurationService ::checkCRDAndValidateLocalModel );
193
207
}
194
208
195
209
@ Override
210
+ @ SuppressWarnings ("rawtypes" )
196
211
public DependentResourceFactory dependentResourceFactory () {
197
- return dependentResourceFactory != null ? dependentResourceFactory
198
- : DependentResourceFactory . DEFAULT ;
212
+ return overriddenValueOrDefault ( dependentResourceFactory ,
213
+ ConfigurationService :: dependentResourceFactory ) ;
199
214
}
200
215
201
216
@ Override
202
217
public int concurrentReconciliationThreads () {
203
218
return Utils .ensureValid (
204
- concurrentReconciliationThreads != null ? concurrentReconciliationThreads
205
- : original . concurrentReconciliationThreads ( ),
219
+ overriddenValueOrDefault ( concurrentReconciliationThreads ,
220
+ ConfigurationService :: concurrentReconciliationThreads ),
206
221
"maximum reconciliation threads" ,
207
222
minimumMaxValueFor (minConcurrentReconciliationThreads ),
208
223
original .concurrentReconciliationThreads ());
@@ -211,8 +226,8 @@ public int concurrentReconciliationThreads() {
211
226
@ Override
212
227
public int concurrentWorkflowExecutorThreads () {
213
228
return Utils .ensureValid (
214
- concurrentWorkflowExecutorThreads != null ? concurrentWorkflowExecutorThreads
215
- : original . concurrentWorkflowExecutorThreads ( ),
229
+ overriddenValueOrDefault ( concurrentWorkflowExecutorThreads ,
230
+ ConfigurationService :: concurrentWorkflowExecutorThreads ),
216
231
"maximum workflow execution threads" ,
217
232
minimumMaxValueFor (minConcurrentWorkflowExecutorThreads ),
218
233
original .concurrentWorkflowExecutorThreads ());
@@ -224,8 +239,8 @@ public int concurrentWorkflowExecutorThreads() {
224
239
@ Deprecated (forRemoval = true )
225
240
@ Override
226
241
public int minConcurrentReconciliationThreads () {
227
- return minConcurrentReconciliationThreads != null ? minConcurrentReconciliationThreads
228
- : original . minConcurrentReconciliationThreads ( );
242
+ return overriddenValueOrDefault ( minConcurrentReconciliationThreads ,
243
+ ConfigurationService :: minConcurrentReconciliationThreads );
229
244
}
230
245
231
246
/**
@@ -234,30 +249,29 @@ public int minConcurrentReconciliationThreads() {
234
249
@ Override
235
250
@ Deprecated (forRemoval = true )
236
251
public int minConcurrentWorkflowExecutorThreads () {
237
- return minConcurrentWorkflowExecutorThreads != null ? minConcurrentWorkflowExecutorThreads
238
- : original . minConcurrentWorkflowExecutorThreads ( );
252
+ return overriddenValueOrDefault ( minConcurrentWorkflowExecutorThreads ,
253
+ ConfigurationService :: minConcurrentWorkflowExecutorThreads );
239
254
}
240
255
241
256
@ Override
242
257
public Metrics getMetrics () {
243
- return metrics != null ? metrics : original . getMetrics ( );
258
+ return overriddenValueOrDefault ( metrics , ConfigurationService :: getMetrics );
244
259
}
245
260
246
261
@ Override
247
262
public boolean closeClientOnStop () {
248
- return closeClientOnStop != null ? closeClientOnStop : original . closeClientOnStop ( );
263
+ return overriddenValueOrDefault ( closeClientOnStop , ConfigurationService :: closeClientOnStop );
249
264
}
250
265
251
266
@ Override
252
267
public ExecutorService getExecutorService () {
253
- return executorService != null ? executorService
254
- : super .getExecutorService ();
268
+ return overriddenValueOrDefault (executorService , ConfigurationService ::getExecutorService );
255
269
}
256
270
257
271
@ Override
258
272
public ExecutorService getWorkflowExecutorService () {
259
- return workflowExecutorService != null ? workflowExecutorService
260
- : super . getWorkflowExecutorService ( );
273
+ return overriddenValueOrDefault ( workflowExecutorService ,
274
+ ConfigurationService :: getWorkflowExecutorService );
261
275
}
262
276
263
277
@ Override
@@ -274,54 +288,55 @@ public Optional<InformerStoppedHandler> getInformerStoppedHandler() {
274
288
275
289
@ Override
276
290
public boolean stopOnInformerErrorDuringStartup () {
277
- return stopOnInformerErrorDuringStartup != null ? stopOnInformerErrorDuringStartup
278
- : super . stopOnInformerErrorDuringStartup ( );
291
+ return overriddenValueOrDefault ( stopOnInformerErrorDuringStartup ,
292
+ ConfigurationService :: stopOnInformerErrorDuringStartup );
279
293
}
280
294
281
295
@ Override
282
296
public Duration cacheSyncTimeout () {
283
- return cacheSyncTimeout != null ? cacheSyncTimeout : super . cacheSyncTimeout ( );
297
+ return overriddenValueOrDefault ( cacheSyncTimeout , ConfigurationService :: cacheSyncTimeout );
284
298
}
285
299
286
300
@ Override
287
301
public ResourceClassResolver getResourceClassResolver () {
288
- return resourceClassResolver != null ? resourceClassResolver
289
- : super . getResourceClassResolver ( );
302
+ return overriddenValueOrDefault ( resourceClassResolver ,
303
+ ConfigurationService :: getResourceClassResolver );
290
304
}
291
305
292
306
@ Override
293
307
public boolean ssaBasedCreateUpdateMatchForDependentResources () {
294
- return ssaBasedCreateUpdateMatchForDependentResources != null
295
- ? ssaBasedCreateUpdateMatchForDependentResources
296
- : super .ssaBasedCreateUpdateMatchForDependentResources ();
308
+ return overriddenValueOrDefault (ssaBasedCreateUpdateMatchForDependentResources ,
309
+ ConfigurationService ::ssaBasedCreateUpdateMatchForDependentResources );
297
310
}
298
311
299
312
@ Override
300
313
public Set <Class <? extends HasMetadata >> defaultNonSSAResource () {
301
- return defaultNonSSAResource != null ? defaultNonSSAResource
302
- : super . defaultNonSSAResource ( );
314
+ return overriddenValueOrDefault ( defaultNonSSAResource ,
315
+ ConfigurationService :: defaultNonSSAResource );
303
316
}
304
317
305
318
@ Override
306
319
public boolean previousAnnotationForDependentResourcesEventFiltering () {
307
- return previousAnnotationForDependentResources != null
308
- ? previousAnnotationForDependentResources
309
- : super .previousAnnotationForDependentResourcesEventFiltering ();
320
+ return overriddenValueOrDefault (previousAnnotationForDependentResources ,
321
+ ConfigurationService ::previousAnnotationForDependentResourcesEventFiltering );
310
322
}
311
323
312
324
@ Override
313
325
public boolean parseResourceVersionsForEventFilteringAndCaching () {
314
- return parseResourceVersions != null
315
- ? parseResourceVersions
316
- : super .parseResourceVersionsForEventFilteringAndCaching ();
326
+ return overriddenValueOrDefault (parseResourceVersions ,
327
+ ConfigurationService ::parseResourceVersionsForEventFilteringAndCaching );
317
328
}
318
329
319
330
@ Override
320
331
public boolean useSSAToPatchPrimaryResource () {
321
- return useSSAToPatchPrimaryResource != null
322
- ? useSSAToPatchPrimaryResource
323
- : super . useSSAToPatchPrimaryResource ();
332
+ return overriddenValueOrDefault ( useSSAToPatchPrimaryResource ,
333
+ ConfigurationService :: useSSAToPatchPrimaryResource );
334
+ }
324
335
336
+ @ Override
337
+ public boolean cloneSecondaryResourcesWhenGettingFromCache () {
338
+ return overriddenValueOrDefault (cloneSecondaryResourcesWhenGettingFromCache ,
339
+ ConfigurationService ::cloneSecondaryResourcesWhenGettingFromCache );
325
340
}
326
341
};
327
342
}
0 commit comments