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 ;
@@ -41,6 +42,7 @@ public class ConfigurationServiceOverrider {
41
42
private Boolean previousAnnotationForDependentResources ;
42
43
private Boolean parseResourceVersions ;
43
44
private Boolean useSSAToPatchPrimaryResource ;
45
+ private Boolean cloneSecondaryResourcesWhenGettingFromCache ;
44
46
@ SuppressWarnings ("rawtypes" )
45
47
private DependentResourceFactory dependentResourceFactory ;
46
48
@@ -203,30 +205,43 @@ public ConfigurationServiceOverrider withUseSSAToPatchPrimaryResource(boolean va
203
205
return this ;
204
206
}
205
207
208
+ public ConfigurationServiceOverrider withCloneSecondaryResourcesWhenGettingFromCache (
209
+ boolean value ) {
210
+ this .cloneSecondaryResourcesWhenGettingFromCache = value ;
211
+ return this ;
212
+ }
213
+
206
214
public ConfigurationService build () {
207
215
return new BaseConfigurationService (original .getVersion (), cloner , client ) {
208
216
@ Override
209
217
public Set <String > getKnownReconcilerNames () {
210
218
return original .getKnownReconcilerNames ();
211
219
}
212
220
221
+ private <T > T overriddenValueOrDefault (T value ,
222
+ Function <ConfigurationService , T > defaultValue ) {
223
+ return value != null ? value : defaultValue .apply (original );
224
+ }
225
+
213
226
@ Override
214
227
public boolean checkCRDAndValidateLocalModel () {
215
- return checkCR != null ? checkCR : original .checkCRDAndValidateLocalModel ();
228
+ return overriddenValueOrDefault (checkCR ,
229
+ ConfigurationService ::checkCRDAndValidateLocalModel );
216
230
}
217
231
218
232
@ SuppressWarnings ("rawtypes" )
219
233
@ Override
234
+ @ SuppressWarnings ("rawtypes" )
220
235
public DependentResourceFactory dependentResourceFactory () {
221
- return dependentResourceFactory != null ? dependentResourceFactory
222
- : DependentResourceFactory . DEFAULT ;
236
+ return overriddenValueOrDefault ( dependentResourceFactory ,
237
+ ConfigurationService :: dependentResourceFactory ) ;
223
238
}
224
239
225
240
@ Override
226
241
public int concurrentReconciliationThreads () {
227
242
return Utils .ensureValid (
228
- concurrentReconciliationThreads != null ? concurrentReconciliationThreads
229
- : original . concurrentReconciliationThreads ( ),
243
+ overriddenValueOrDefault ( concurrentReconciliationThreads ,
244
+ ConfigurationService :: concurrentReconciliationThreads ),
230
245
"maximum reconciliation threads" ,
231
246
minimumMaxValueFor (minConcurrentReconciliationThreads ),
232
247
original .concurrentReconciliationThreads ());
@@ -235,8 +250,8 @@ public int concurrentReconciliationThreads() {
235
250
@ Override
236
251
public int concurrentWorkflowExecutorThreads () {
237
252
return Utils .ensureValid (
238
- concurrentWorkflowExecutorThreads != null ? concurrentWorkflowExecutorThreads
239
- : original . concurrentWorkflowExecutorThreads ( ),
253
+ overriddenValueOrDefault ( concurrentWorkflowExecutorThreads ,
254
+ ConfigurationService :: concurrentWorkflowExecutorThreads ),
240
255
"maximum workflow execution threads" ,
241
256
minimumMaxValueFor (minConcurrentWorkflowExecutorThreads ),
242
257
original .concurrentWorkflowExecutorThreads ());
@@ -248,8 +263,8 @@ public int concurrentWorkflowExecutorThreads() {
248
263
@ Deprecated (forRemoval = true )
249
264
@ Override
250
265
public int minConcurrentReconciliationThreads () {
251
- return minConcurrentReconciliationThreads != null ? minConcurrentReconciliationThreads
252
- : original . minConcurrentReconciliationThreads ( );
266
+ return overriddenValueOrDefault ( minConcurrentReconciliationThreads ,
267
+ ConfigurationService :: minConcurrentReconciliationThreads );
253
268
}
254
269
255
270
/**
@@ -258,30 +273,29 @@ public int minConcurrentReconciliationThreads() {
258
273
@ Override
259
274
@ Deprecated (forRemoval = true )
260
275
public int minConcurrentWorkflowExecutorThreads () {
261
- return minConcurrentWorkflowExecutorThreads != null ? minConcurrentWorkflowExecutorThreads
262
- : original . minConcurrentWorkflowExecutorThreads ( );
276
+ return overriddenValueOrDefault ( minConcurrentWorkflowExecutorThreads ,
277
+ ConfigurationService :: minConcurrentWorkflowExecutorThreads );
263
278
}
264
279
265
280
@ Override
266
281
public Metrics getMetrics () {
267
- return metrics != null ? metrics : original . getMetrics ( );
282
+ return overriddenValueOrDefault ( metrics , ConfigurationService :: getMetrics );
268
283
}
269
284
270
285
@ Override
271
286
public boolean closeClientOnStop () {
272
- return closeClientOnStop != null ? closeClientOnStop : original . closeClientOnStop ( );
287
+ return overriddenValueOrDefault ( closeClientOnStop , ConfigurationService :: closeClientOnStop );
273
288
}
274
289
275
290
@ Override
276
291
public ExecutorService getExecutorService () {
277
- return executorService != null ? executorService
278
- : super .getExecutorService ();
292
+ return overriddenValueOrDefault (executorService , ConfigurationService ::getExecutorService );
279
293
}
280
294
281
295
@ Override
282
296
public ExecutorService getWorkflowExecutorService () {
283
- return workflowExecutorService != null ? workflowExecutorService
284
- : super . getWorkflowExecutorService ( );
297
+ return overriddenValueOrDefault ( workflowExecutorService ,
298
+ ConfigurationService :: getWorkflowExecutorService );
285
299
}
286
300
287
301
@ Override
@@ -298,54 +312,55 @@ public Optional<InformerStoppedHandler> getInformerStoppedHandler() {
298
312
299
313
@ Override
300
314
public boolean stopOnInformerErrorDuringStartup () {
301
- return stopOnInformerErrorDuringStartup != null ? stopOnInformerErrorDuringStartup
302
- : super . stopOnInformerErrorDuringStartup ( );
315
+ return overriddenValueOrDefault ( stopOnInformerErrorDuringStartup ,
316
+ ConfigurationService :: stopOnInformerErrorDuringStartup );
303
317
}
304
318
305
319
@ Override
306
320
public Duration cacheSyncTimeout () {
307
- return cacheSyncTimeout != null ? cacheSyncTimeout : super . cacheSyncTimeout ( );
321
+ return overriddenValueOrDefault ( cacheSyncTimeout , ConfigurationService :: cacheSyncTimeout );
308
322
}
309
323
310
324
@ Override
311
325
public ResourceClassResolver getResourceClassResolver () {
312
- return resourceClassResolver != null ? resourceClassResolver
313
- : super . getResourceClassResolver ( );
326
+ return overriddenValueOrDefault ( resourceClassResolver ,
327
+ ConfigurationService :: getResourceClassResolver );
314
328
}
315
329
316
330
@ Override
317
331
public boolean ssaBasedCreateUpdateMatchForDependentResources () {
318
- return ssaBasedCreateUpdateMatchForDependentResources != null
319
- ? ssaBasedCreateUpdateMatchForDependentResources
320
- : super .ssaBasedCreateUpdateMatchForDependentResources ();
332
+ return overriddenValueOrDefault (ssaBasedCreateUpdateMatchForDependentResources ,
333
+ ConfigurationService ::ssaBasedCreateUpdateMatchForDependentResources );
321
334
}
322
335
323
336
@ Override
324
337
public Set <Class <? extends HasMetadata >> defaultNonSSAResources () {
325
- return defaultNonSSAResource != null ? defaultNonSSAResource
326
- : super . defaultNonSSAResources ( );
338
+ return overriddenValueOrDefault ( defaultNonSSAResource ,
339
+ ConfigurationService :: defaultNonSSAResources );
327
340
}
328
341
329
342
@ Override
330
343
public boolean previousAnnotationForDependentResourcesEventFiltering () {
331
- return previousAnnotationForDependentResources != null
332
- ? previousAnnotationForDependentResources
333
- : super .previousAnnotationForDependentResourcesEventFiltering ();
344
+ return overriddenValueOrDefault (previousAnnotationForDependentResources ,
345
+ ConfigurationService ::previousAnnotationForDependentResourcesEventFiltering );
334
346
}
335
347
336
348
@ Override
337
349
public boolean parseResourceVersionsForEventFilteringAndCaching () {
338
- return parseResourceVersions != null
339
- ? parseResourceVersions
340
- : super .parseResourceVersionsForEventFilteringAndCaching ();
350
+ return overriddenValueOrDefault (parseResourceVersions ,
351
+ ConfigurationService ::parseResourceVersionsForEventFilteringAndCaching );
341
352
}
342
353
343
354
@ Override
344
355
public boolean useSSAToPatchPrimaryResource () {
345
- return useSSAToPatchPrimaryResource != null
346
- ? useSSAToPatchPrimaryResource
347
- : super . useSSAToPatchPrimaryResource ();
356
+ return overriddenValueOrDefault ( useSSAToPatchPrimaryResource ,
357
+ ConfigurationService :: useSSAToPatchPrimaryResource );
358
+ }
348
359
360
+ @ Override
361
+ public boolean cloneSecondaryResourcesWhenGettingFromCache () {
362
+ return overriddenValueOrDefault (cloneSecondaryResourcesWhenGettingFromCache ,
363
+ ConfigurationService ::cloneSecondaryResourcesWhenGettingFromCache );
349
364
}
350
365
};
351
366
}
0 commit comments