diff --git a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java index 120ebad5a..a576443af 100644 --- a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java +++ b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java @@ -12,13 +12,13 @@ import dev.openfeature.contrib.providers.flagd.resolver.process.storage.connector.grpc.GrpcStreamConnector; import dev.openfeature.contrib.providers.flagd.resolver.process.targeting.Operator; import dev.openfeature.contrib.providers.flagd.resolver.process.targeting.TargetingRuleException; +import dev.openfeature.sdk.ErrorCode; import dev.openfeature.sdk.EvaluationContext; import dev.openfeature.sdk.ImmutableMetadata; import dev.openfeature.sdk.ProviderEvaluation; import dev.openfeature.sdk.ProviderState; import dev.openfeature.sdk.Reason; import dev.openfeature.sdk.Value; -import dev.openfeature.sdk.exceptions.FlagNotFoundError; import dev.openfeature.sdk.exceptions.ParseError; import dev.openfeature.sdk.exceptions.TypeMismatchError; import lombok.extern.slf4j.Slf4j; @@ -164,12 +164,18 @@ private ProviderEvaluation resolve(Class type, String key, EvaluationC // missing flag if (flag == null) { - throw new FlagNotFoundError("flag: " + key + " not found"); + return ProviderEvaluation.builder() + .errorMessage("flag: " + key + " not found") + .errorCode(ErrorCode.FLAG_NOT_FOUND) + .build(); } // state check if ("DISABLED".equals(flag.getState())) { - throw new FlagNotFoundError("flag: " + key + " is disabled"); + return ProviderEvaluation.builder() + .errorMessage("flag: " + key + " is disabled") + .errorCode(ErrorCode.FLAG_NOT_FOUND) + .build(); } final String resolvedVariant; diff --git a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolverTest.java b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolverTest.java index 9953b337f..7452cba6a 100644 --- a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolverTest.java +++ b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolverTest.java @@ -8,6 +8,7 @@ import dev.openfeature.contrib.providers.flagd.resolver.process.storage.StorageStateChange; import dev.openfeature.contrib.providers.flagd.resolver.process.storage.connector.file.FileConnector; import dev.openfeature.contrib.providers.flagd.resolver.process.storage.connector.grpc.GrpcStreamConnector; +import dev.openfeature.sdk.ErrorCode; import dev.openfeature.sdk.ImmutableContext; import dev.openfeature.sdk.ImmutableMetadata; import dev.openfeature.sdk.MutableContext; @@ -239,10 +240,8 @@ public void missingFlag() throws Exception { }); // when/then - assertThrows(FlagNotFoundError.class, () -> { - inProcessResolver.booleanEvaluation("missingFlag", false, new ImmutableContext()); - - }); + ProviderEvaluation missingFlag = inProcessResolver.booleanEvaluation("missingFlag", false, new ImmutableContext()); + assertEquals(ErrorCode.FLAG_NOT_FOUND, missingFlag.getErrorCode()); } @Test @@ -256,9 +255,8 @@ public void disabledFlag() throws Exception { }); // when/then - assertThrows(FlagNotFoundError.class, () -> { - inProcessResolver.booleanEvaluation("disabledFlag", false, new ImmutableContext()); - }); + ProviderEvaluation disabledFlag = inProcessResolver.booleanEvaluation("disabledFlag", false, new ImmutableContext()); + assertEquals(ErrorCode.FLAG_NOT_FOUND, disabledFlag.getErrorCode()); } @Test