From 37fd2be673e1316ae05e5f36b49613cb61209fbc Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Fri, 4 Aug 2023 15:45:25 -0400 Subject: [PATCH] fix: getState now mandatory on EventProvider (#531) * fix: getState mandatory on EventProvider Signed-off-by: Todd Baert * fixup: update test class Signed-off-by: Todd Baert * Update src/test/java/dev/openfeature/sdk/EventProviderTest.java Co-authored-by: Giovanni Liva Signed-off-by: Todd Baert --------- Signed-off-by: Todd Baert Co-authored-by: Giovanni Liva --- src/main/java/dev/openfeature/sdk/EventProvider.java | 6 ++++++ src/main/java/dev/openfeature/sdk/FeatureProvider.java | 10 +++++++--- .../java/dev/openfeature/sdk/EventProviderTest.java | 5 +++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/openfeature/sdk/EventProvider.java b/src/main/java/dev/openfeature/sdk/EventProvider.java index de12b0777..928b96f41 100644 --- a/src/main/java/dev/openfeature/sdk/EventProvider.java +++ b/src/main/java/dev/openfeature/sdk/EventProvider.java @@ -16,6 +16,12 @@ */ public abstract class EventProvider implements FeatureProvider { + /** + * {@inheritDoc} + */ + @Override + public abstract ProviderState getState(); + private TriConsumer onEmit = null; /** diff --git a/src/main/java/dev/openfeature/sdk/FeatureProvider.java b/src/main/java/dev/openfeature/sdk/FeatureProvider.java index 933166fac..e1e06d0ab 100644 --- a/src/main/java/dev/openfeature/sdk/FeatureProvider.java +++ b/src/main/java/dev/openfeature/sdk/FeatureProvider.java @@ -31,7 +31,7 @@ default List getProviderHooks() { * if they have special initialization needed prior being called for flag * evaluation. *

- * It is ok, if the method is expensive as it is executed in the background. All + * It is ok if the method is expensive as it is executed in the background. All * runtime exceptions will be * caught and logged. *

@@ -46,7 +46,7 @@ default void initialize(EvaluationContext evaluationContext) throws Exception { * Providers can overwrite this method, if they have special shutdown actions * needed. *

- * It is ok, if the method is expensive as it is executed in the background. All + * It is ok if the method is expensive as it is executed in the background. All * runtime exceptions will be * caught and logged. *

@@ -57,7 +57,11 @@ default void shutdown() { /** * Returns a representation of the current readiness of the provider. - * Providers which do not implement this method are assumed to be ready immediately. + * If the provider needs to be initialized, it should return {@link ProviderState#NOT_READY}. + * If the provider is in an error state, it should return {@link ProviderState#ERROR}. + * If the provider is functioning normally, it should return {@link ProviderState#READY}. + * + *

Providers which do not implement this method are assumed to be ready immediately.

* * @return ProviderState */ diff --git a/src/test/java/dev/openfeature/sdk/EventProviderTest.java b/src/test/java/dev/openfeature/sdk/EventProviderTest.java index cb73b5292..3744682b9 100644 --- a/src/test/java/dev/openfeature/sdk/EventProviderTest.java +++ b/src/test/java/dev/openfeature/sdk/EventProviderTest.java @@ -121,6 +121,11 @@ public ProviderEvaluation getObjectEvaluation(String key, Value defaultVa // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'getObjectEvaluation'"); } + + @Override + public ProviderState getState() { + return ProviderState.READY; + } } @SuppressWarnings("unchecked")