88import dev .openfeature .sdk .internal .AutoCloseableLock ;
99import dev .openfeature .sdk .internal .AutoCloseableReentrantReadWriteLock ;
1010import dev .openfeature .sdk .internal .ObjectUtils ;
11+ import edu .umd .cs .findbugs .annotations .SuppressFBWarnings ;
1112import java .util .ArrayList ;
1213import java .util .Arrays ;
1314import java .util .Collections ;
@@ -162,29 +163,32 @@ public EvaluationContext getEvaluationContext() {
162163 return this .evaluationContext .get ();
163164 }
164165
166+ @ SuppressFBWarnings (
167+ value = {"REC_CATCH_EXCEPTION" },
168+ justification =
169+ "We don't want to allow any exception to reach the user. Instead, we return an evaluation result with the appropriate error code." )
165170 private <T > FlagEvaluationDetails <T > evaluateFlag (
166171 FlagValueType type , String key , T defaultValue , EvaluationContext ctx , FlagEvaluationOptions options ) {
167- FlagEvaluationOptions flagOptions = ObjectUtils .defaultIfNull (
172+ var flagOptions = ObjectUtils .defaultIfNull (
168173 options , () -> FlagEvaluationOptions .builder ().build ());
169- Map < String , Object > hints = Collections .unmodifiableMap (flagOptions .getHookHints ());
174+ var hints = Collections .unmodifiableMap (flagOptions .getHookHints ());
170175
171176 FlagEvaluationDetails <T > details = null ;
172177 List <Hook > mergedHooks = null ;
173178 HookContext <T > afterHookContext = null ;
174- FeatureProvider provider ;
175179
176180 try {
177- FeatureProviderStateManager stateManager = openfeatureApi .getFeatureProviderStateManager (this .domain );
181+ var stateManager = openfeatureApi .getFeatureProviderStateManager (this .domain );
178182 // provider must be accessed once to maintain a consistent reference
179- provider = stateManager .getProvider ();
180- ProviderState state = stateManager .getState ();
183+ var provider = stateManager .getProvider ();
184+ var state = stateManager .getState ();
181185
182186 try (AutoCloseableLock ignored = this .hooksLock .readLockAutoCloseable ()) {
183187 mergedHooks = ObjectUtils .merge (
184188 provider .getProviderHooks (), flagOptions .getHooks (), clientHooks , openfeatureApi .getHooks ());
185189 }
186190
187- EvaluationContext mergedCtx = hookSupport .beforeHooks (
191+ var mergedCtx = hookSupport .beforeHooks (
188192 type ,
189193 HookContext .from (
190194 key ,
@@ -207,12 +211,12 @@ private <T> FlagEvaluationDetails<T> evaluateFlag(
207211 throw new FatalError ("Provider is in an irrecoverable error state" );
208212 }
209213
210- ProviderEvaluation < T > providerEval =
214+ var providerEval =
211215 (ProviderEvaluation <T >) createProviderEvaluation (type , key , defaultValue , provider , mergedCtx );
212216
213217 details = FlagEvaluationDetails .from (providerEval , key );
214218 if (details .getErrorCode () != null ) {
215- OpenFeatureError error =
219+ var error =
216220 ExceptionUtils .instantiateErrorByErrorCode (details .getErrorCode (), details .getErrorMessage ());
217221 enrichDetailsWithErrorDefaults (defaultValue , details );
218222 hookSupport .errorHooks (type , afterHookContext , error , mergedHooks , hints );
0 commit comments