Expose actual result value for @CacheEvict condition
Closes gh-32960
This commit is contained in:
@@ -630,7 +630,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker
|
||||
if (result instanceof CompletableFuture<?> future) {
|
||||
return future.whenComplete((value, ex) -> {
|
||||
if (ex == null) {
|
||||
performCacheEvicts(applicable, result);
|
||||
performCacheEvicts(applicable, value);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1112,7 +1112,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker
|
||||
ReactiveAdapter adapter = (result != null ? this.registry.getAdapter(result.getClass()) : null);
|
||||
if (adapter != null) {
|
||||
return adapter.fromPublisher(Mono.from(adapter.toPublisher(result))
|
||||
.doOnSuccess(value -> performCacheEvicts(contexts, result)));
|
||||
.doOnSuccess(value -> performCacheEvicts(contexts, value)));
|
||||
}
|
||||
return NOT_HANDLED;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -606,9 +606,9 @@ class CacheReproTests {
|
||||
return CompletableFuture.completedFuture(item);
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = "itemCache", allEntries = true)
|
||||
public CompletableFuture<Void> clear() {
|
||||
return CompletableFuture.completedFuture(null);
|
||||
@CacheEvict(cacheNames = "itemCache", allEntries = true, condition = "#result > 0")
|
||||
public CompletableFuture<Integer> clear() {
|
||||
return CompletableFuture.completedFuture(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -655,9 +655,9 @@ class CacheReproTests {
|
||||
return Mono.just(item);
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = "itemCache", allEntries = true)
|
||||
public Mono<Void> clear() {
|
||||
return Mono.empty();
|
||||
@CacheEvict(cacheNames = "itemCache", allEntries = true, condition = "#result > 0")
|
||||
public Mono<Integer> clear() {
|
||||
return Mono.just(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -706,9 +706,9 @@ class CacheReproTests {
|
||||
return Flux.fromIterable(item);
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = "itemCache", allEntries = true)
|
||||
public Flux<Void> clear() {
|
||||
return Flux.empty();
|
||||
@CacheEvict(cacheNames = "itemCache", allEntries = true, condition = "#result > 0")
|
||||
public Flux<Integer> clear() {
|
||||
return Flux.just(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user