From 82a1f43f1543f7bc7a94e6fe83fd8f84793fe647 Mon Sep 17 00:00:00 2001 From: Matthew Davidson Date: Thu, 30 May 2019 04:05:53 -0400 Subject: [PATCH] Added a Registry.find() (#478) Add find() method that will only return an existing object in a Registry but will not create a new one. --- .../java/io/github/resilience4j/core/Registry.java | 7 +++++++ .../resilience4j/core/registry/AbstractRegistry.java | 5 +++++ .../core/registry/AbstractRegistryTest.java | 12 +++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/resilience4j-core/src/main/java/io/github/resilience4j/core/Registry.java b/resilience4j-core/src/main/java/io/github/resilience4j/core/Registry.java index e47ca5223d..f597906ab7 100644 --- a/resilience4j-core/src/main/java/io/github/resilience4j/core/Registry.java +++ b/resilience4j-core/src/main/java/io/github/resilience4j/core/Registry.java @@ -38,6 +38,13 @@ public interface Registry { */ void addConfiguration(String configName, C configuration); + /** + * Find a named entry in the Registry + * + * @param name the name + */ + Optional find(String name); + /** * Remove an entry from the Registry * diff --git a/resilience4j-core/src/main/java/io/github/resilience4j/core/registry/AbstractRegistry.java b/resilience4j-core/src/main/java/io/github/resilience4j/core/registry/AbstractRegistry.java index e20c15475e..7584dd878c 100644 --- a/resilience4j-core/src/main/java/io/github/resilience4j/core/registry/AbstractRegistry.java +++ b/resilience4j-core/src/main/java/io/github/resilience4j/core/registry/AbstractRegistry.java @@ -58,6 +58,11 @@ protected E computeIfAbsent(String name, Supplier supplier){ }); } + @Override + public Optional find(String name){ + return Optional.ofNullable(entryMap.get(name)); + } + @Override public Optional remove(String name){ Optional removedEntry = Optional.ofNullable(entryMap.remove(name)); diff --git a/resilience4j-core/src/test/java/io/github/resilience4j/core/registry/AbstractRegistryTest.java b/resilience4j-core/src/test/java/io/github/resilience4j/core/registry/AbstractRegistryTest.java index 1907a649a5..2d6e26e416 100644 --- a/resilience4j-core/src/test/java/io/github/resilience4j/core/registry/AbstractRegistryTest.java +++ b/resilience4j-core/src/test/java/io/github/resilience4j/core/registry/AbstractRegistryTest.java @@ -76,6 +76,16 @@ public void shouldConsumeRegistryEvents() { } + @Test + public void shouldOnlyFindRegisteredObjects() { + TestRegistry testRegistry = new TestRegistry(); + + assertThat(testRegistry.find("test")).isEmpty(); + testRegistry.entryMap.put("test", "value"); + assertThat(testRegistry.find("test")).contains("value"); + } + + class TestRegistry extends AbstractRegistry { public TestRegistry() { @@ -85,4 +95,4 @@ public TestRegistry() { } } -} \ No newline at end of file +}