11package dev .openfeature .sdk .providers .memory ;
22
3+ import dev .openfeature .sdk .ErrorCode ;
34import dev .openfeature .sdk .EvaluationContext ;
45import dev .openfeature .sdk .EventProvider ;
56import dev .openfeature .sdk .Metadata ;
@@ -97,36 +98,36 @@ public void updateFlag(String flagKey, Flag<?> newFlag) {
9798 @ Override
9899 public ProviderEvaluation <Boolean > getBooleanEvaluation (
99100 String key , Boolean defaultValue , EvaluationContext evaluationContext ) {
100- return getEvaluation (key , evaluationContext , Boolean .class );
101+ return getEvaluation (key , defaultValue , evaluationContext , Boolean .class );
101102 }
102103
103104 @ Override
104105 public ProviderEvaluation <String > getStringEvaluation (
105106 String key , String defaultValue , EvaluationContext evaluationContext ) {
106- return getEvaluation (key , evaluationContext , String .class );
107+ return getEvaluation (key , defaultValue , evaluationContext , String .class );
107108 }
108109
109110 @ Override
110111 public ProviderEvaluation <Integer > getIntegerEvaluation (
111112 String key , Integer defaultValue , EvaluationContext evaluationContext ) {
112- return getEvaluation (key , evaluationContext , Integer .class );
113+ return getEvaluation (key , defaultValue , evaluationContext , Integer .class );
113114 }
114115
115116 @ Override
116117 public ProviderEvaluation <Double > getDoubleEvaluation (
117118 String key , Double defaultValue , EvaluationContext evaluationContext ) {
118- return getEvaluation (key , evaluationContext , Double .class );
119+ return getEvaluation (key , defaultValue , evaluationContext , Double .class );
119120 }
120121
121122 @ SneakyThrows
122123 @ Override
123124 public ProviderEvaluation <Value > getObjectEvaluation (
124125 String key , Value defaultValue , EvaluationContext evaluationContext ) {
125- return getEvaluation (key , evaluationContext , Value .class );
126+ return getEvaluation (key , defaultValue , evaluationContext , Value .class );
126127 }
127128
128129 private <T > ProviderEvaluation <T > getEvaluation (
129- String key , EvaluationContext evaluationContext , Class <?> expectedType ) throws OpenFeatureError {
130+ String key , T defaultValue , EvaluationContext evaluationContext , Class <?> expectedType ) throws OpenFeatureError {
130131 if (!ProviderState .READY .equals (state )) {
131132 if (ProviderState .NOT_READY .equals (state )) {
132133 throw new ProviderNotReadyError ("provider not yet initialized" );
@@ -140,6 +141,13 @@ private <T> ProviderEvaluation<T> getEvaluation(
140141 if (flag == null ) {
141142 throw new FlagNotFoundError ("flag " + key + " not found" );
142143 }
144+ if (flag .isDisabled ()) {
145+ return ProviderEvaluation .<T >builder ()
146+ .reason (Reason .DISABLED .name ())
147+ .value (defaultValue )
148+ .flagMetadata (flag .getFlagMetadata ())
149+ .build ();
150+ }
143151 T value ;
144152 Reason reason = Reason .STATIC ;
145153 if (flag .getContextEvaluator () != null ) {
0 commit comments