From b82e7d2502340cd334d9da2d7cea99ae5d77bdec Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Mon, 22 Mar 2021 17:58:08 +0100 Subject: [PATCH 1/3] refactor: make AbstractConfigurationService easier to use by sub-classes --- .../api/config/AbstractConfigurationService.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java index 6d4e36f067..0a471b6675 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java @@ -39,7 +39,15 @@ protected void throwExceptionOnNameCollision( @Override public ControllerConfiguration getConfigurationFor( ResourceController controller) { - return configurations.get(ControllerUtils.getNameFor(controller)); + return configurations.get(keyFor(controller)); + } + + protected String keyFor(ResourceController controller) { + return ControllerUtils.getNameFor(controller); + } + + protected ControllerConfiguration getFor(String controllerName) { + return configurations.get(controllerName); } @Override From 83da1c1abc441f0700c82e6875a58669c8a517e0 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Mon, 22 Mar 2021 18:20:22 +0100 Subject: [PATCH 2/3] feat: make it possible to replace existing configuration --- .../config/AbstractConfigurationService.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java index 0a471b6675..c83e751a3d 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java @@ -17,10 +17,21 @@ public AbstractConfigurationService(Version version) { } protected void register(ControllerConfiguration config) { + put(config, true); + } + + protected void replace(ControllerConfiguration config) { + put(config, false); + } + + private void put(ControllerConfiguration config, + boolean failIfExisting) { final var name = config.getName(); - final var existing = configurations.get(name); - if (existing != null) { - throwExceptionOnNameCollision(config.getAssociatedControllerClassName(), existing); + if (failIfExisting) { + final var existing = configurations.get(name); + if (existing != null) { + throwExceptionOnNameCollision(config.getAssociatedControllerClassName(), existing); + } } configurations.put(name, config); } From 72003b0359f47ec4d827c435f4d74db1d8114d78 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Tue, 23 Mar 2021 14:16:44 +0100 Subject: [PATCH 3/3] feat: make it possible to stream existing configurations --- .../api/config/AbstractConfigurationService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java index c83e751a3d..de83fd9b36 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Stream; public abstract class AbstractConfigurationService implements ConfigurationService { @@ -24,8 +25,8 @@ protected void replace(ControllerConfiguration con put(config, false); } - private void put(ControllerConfiguration config, - boolean failIfExisting) { + private void put( + ControllerConfiguration config, boolean failIfExisting) { final var name = config.getName(); if (failIfExisting) { final var existing = configurations.get(name); @@ -61,6 +62,10 @@ protected ControllerConfiguration getFor(String controllerName) { return configurations.get(controllerName); } + protected Stream controllerConfigurations() { + return configurations.values().stream(); + } + @Override public Set getKnownControllerNames() { return configurations.keySet();