diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java index b704e89783..128320db43 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java @@ -10,6 +10,7 @@ import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.ReconcilerUtils; import io.javaoperatorsdk.operator.api.reconciler.Constants; +import io.javaoperatorsdk.operator.processing.event.source.cache.BoundedItemStore; import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter; @@ -125,19 +126,21 @@ default Set getEffectiveNamespaces() { } /** - * Replaces the item store in informer. See underling - * method in fabric8 client informer implementation. + * Replaces the item store in informer. See underlying method + * in fabric8 client informer implementation. * - * The main goal, is to be able to use limited caches. + *

+ * The main goal, is to be able to use limited caches or provide any custom implementation. + *

* - * See {@link io.javaoperatorsdk.operator.processing.event.source.cache.BoundedItemStore} and - * - * CaffeinBoundedCache + *

+ * See {@link BoundedItemStore} and CaffeineBoundedCache + *

* - * @return Optional ItemStore implementation. If present this item store will be used inside the - * informers. + * @return Optional {@link ItemStore} implementation. If present this item store will be used by + * the informers. */ default Optional> getItemStore() { return Optional.empty(); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java index e2c0de896b..49f97a31a6 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java @@ -10,6 +10,7 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.processing.event.rate.LinearRateLimiter; import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter; +import io.javaoperatorsdk.operator.processing.event.source.cache.BoundedItemStore; import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter; @@ -128,5 +129,22 @@ MaxReconciliationInterval maxReconciliationInterval() default @MaxReconciliation */ Class rateLimiter() default LinearRateLimiter.class; + /** + * Replaces the item store used by the informer for the associated primary resource controller. + * See underlying + * method in fabric8 client informer implementation. + * + *

+ * The main goal, is to be able to use limited caches or provide any custom implementation. + *

+ * + *

+ * See {@link BoundedItemStore} and CaffeinBoundedCache + *

+ * + * @return the class of the {@link ItemStore} implementation to use + */ Class itemStore() default ItemStore.class; }