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