@@ -216,25 +216,25 @@ public void close() {
216216 Preconditions .notNull (defaultCreator , "defaultCreator must not be null" );
217217 CompositeKey <N > compositeKey = new CompositeKey <>(namespace , key );
218218 StoredValue storedValue = getStoredValue (compositeKey );
219- if (storedValue == null ) {
220- var newStoredValue = this .storedValues .compute (compositeKey , //
221- (__ , oldStoredValue ) -> {
222- if (isPresent (oldStoredValue )) {
223- return oldStoredValue ;
224- }
219+ if (storedValue != null ) {
220+ return storedValue .evaluate ();
221+ }
222+ var newStoredValue = this .storedValues .compute (compositeKey , //
223+ (__ , oldStoredValue ) -> {
224+ if (isPresent (oldStoredValue )) {
225+ return oldStoredValue ;
226+ }
227+ rejectIfClosed ();
228+ return newStoredSuppliedNullableValue (new DeferredSupplier (() -> {
225229 rejectIfClosed ();
226- return newStoredSuppliedNullableValue (new DeferredSupplier (() -> {
227- rejectIfClosed ();
228- return defaultCreator .apply (key );
229- }));
230- });
231-
232- if (newStoredValue instanceof StoredValue .DeferredValue value ) {
233- value .delegate ().run ();
234- }
235- return requireNonNull (newStoredValue .evaluate ());
230+ return defaultCreator .apply (key );
231+ }));
232+ });
233+
234+ if (newStoredValue instanceof StoredValue .DeferredValue value ) {
235+ value .delegate ().run ();
236236 }
237- return storedValue .evaluate ();
237+ return requireNonNull ( newStoredValue .evaluate () );
238238 }
239239
240240 /**
@@ -258,27 +258,27 @@ public <K, V> Object computeIfAbsent(N namespace, K key, Function<? super K, ? e
258258 CompositeKey <N > compositeKey = new CompositeKey <>(namespace , key );
259259 StoredValue storedValue = getStoredValue (compositeKey );
260260 var result = StoredValue .evaluateIfNotNull (storedValue );
261- if (result == null ) {
262- StoredValue newStoredValue = this .storedValues .compute (compositeKey , (__ , oldStoredValue ) -> {
263- if (StoredValue .evaluateIfNotNull (oldStoredValue ) == null ) {
264- rejectIfClosed ();
265- return newStoredSuppliedValue (new DeferredSupplier (() -> {
266- rejectIfClosed ();
267- return Preconditions .notNull (defaultCreator .apply (key ), "defaultCreator must not return null" );
268- }));
269- }
261+ if (result != null ) {
262+ return result ;
263+ }
264+ StoredValue newStoredValue = this .storedValues .compute (compositeKey , (__ , oldStoredValue ) -> {
265+ if (StoredValue .evaluateIfNotNull (oldStoredValue ) != null ) {
270266 return oldStoredValue ;
271- });
272-
273- if (newStoredValue instanceof StoredValue .DeferredOptionalValue value ) {
274- var delegate = value .delegate ();
275- delegate .run ();
276- return requireNonNull (delegate .getOrThrow ());
277267 }
278- // put or getOrComputeIfAbsent won the race
279- return requireNonNull (newStoredValue .evaluate ());
268+ rejectIfClosed ();
269+ return newStoredSuppliedValue (new DeferredSupplier (() -> {
270+ rejectIfClosed ();
271+ return Preconditions .notNull (defaultCreator .apply (key ), "defaultCreator must not return null" );
272+ }));
273+ });
274+
275+ if (newStoredValue instanceof StoredValue .DeferredOptionalValue value ) {
276+ var delegate = value .delegate ();
277+ delegate .run ();
278+ return requireNonNull (delegate .getOrThrow ());
280279 }
281- return result ;
280+ // put or getOrComputeIfAbsent won the race
281+ return requireNonNull (newStoredValue .evaluate ());
282282 }
283283
284284 /**
0 commit comments