From c5f73e675d74c7a40d68957ca56be35d4d2c8ea3 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Sun, 21 Jan 2024 17:56:53 +0100 Subject: [PATCH] GH-483 - Let CompletionRegisteringAdvisor forward EventExternalized event. --- .../events/support/CompletionRegisteringAdvisor.java | 5 ++++- .../support/CompletionRegisteringAdvisorUnitTests.java | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java index 376dd476..66357631 100644 --- a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java +++ b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java @@ -175,7 +175,10 @@ public class CompletionRegisteringAdvisor extends AbstractPointcutAdvisor { if (result instanceof CompletableFuture future) { return future - .thenAccept(it -> markCompleted(method, argument)) + .thenApply(it -> { + markCompleted(method, argument); + return it; + }) .exceptionallyCompose(it -> { handleFailure(method, it); return CompletableFuture.failedFuture(it); diff --git a/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisorUnitTests.java b/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisorUnitTests.java index 43ccad7e..397d31a6 100644 --- a/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisorUnitTests.java +++ b/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisorUnitTests.java @@ -89,6 +89,14 @@ class CompletionRegisteringAdvisorUnitTests { verify(registry).markCompleted(any(), any()); } + @Test // GH-483 + void exposesResultForCompletableFuture() throws Exception { + + CompletableFuture future = createProxyFor(bean).asyncWithResult(false); + + assertThat(future.get()).isNotNull(); + } + private void assertCompletion(BiConsumer consumer) { assertCompletion(consumer, true); }