From 6772f6c677090551b0b17ba45e8555cb5d0279b8 Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Sun, 13 Oct 2024 21:10:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20convert=20executor=20for=20`async`=20ope?= =?UTF-8?q?rations=20by=20`screenExecutor`=20for=20`timeout*`=20methods,?= =?UTF-8?q?=20consistent=20with=20`CF`=20=F0=9F=A7=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/foldright/cffu/CffuFactoryBuilder.java | 7 ++++--- .../java/io/foldright/cffu/CompletableFutureUtils.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cffu-core/src/main/java/io/foldright/cffu/CffuFactoryBuilder.java b/cffu-core/src/main/java/io/foldright/cffu/CffuFactoryBuilder.java index 5c68449f..88a726ad 100644 --- a/cffu-core/src/main/java/io/foldright/cffu/CffuFactoryBuilder.java +++ b/cffu-core/src/main/java/io/foldright/cffu/CffuFactoryBuilder.java @@ -87,11 +87,12 @@ static CffuFactory resetDefaultExecutor(CffuFactory fac, Executor defaultExecuto return new CffuFactory(makeExecutor(defaultExecutor), fac.forbidObtrudeMethods()); } - private static Executor makeExecutor(Executor executor) { + private static Executor makeExecutor(Executor defaultExecutor) { // check CffuMadeExecutor interface to avoid re-wrapping. - if (executor instanceof CffuMadeExecutor) return executor; + if (defaultExecutor instanceof CffuMadeExecutor) return defaultExecutor; - Executor wrapByProviders = wrapExecutorByProviders(CompletableFutureUtils.screenExecutor(executor)); + requireNonNull(defaultExecutor, "defaultExecutor is null"); + Executor wrapByProviders = wrapExecutorByProviders(CompletableFutureUtils.screenExecutor(defaultExecutor)); return wrapMadeInterface(wrapByProviders); } diff --git a/cffu-core/src/main/java/io/foldright/cffu/CompletableFutureUtils.java b/cffu-core/src/main/java/io/foldright/cffu/CompletableFutureUtils.java index ad0750fa..535fcfd9 100644 --- a/cffu-core/src/main/java/io/foldright/cffu/CompletableFutureUtils.java +++ b/cffu-core/src/main/java/io/foldright/cffu/CompletableFutureUtils.java @@ -3198,7 +3198,7 @@ public static > C cffuOrTimeout(C cfThis, long ti public static > C cffuOrTimeout( C cfThis, Executor executorWhenTimeout, long timeout, TimeUnit unit) { requireNonNull(cfThis, "cfThis is null"); - requireNonNull(executorWhenTimeout, "executorWhenTimeout is null"); + executorWhenTimeout = screenExecutor(requireNonNull(executorWhenTimeout, "executorWhenTimeout is null")); requireNonNull(unit, "unit is null"); return hopExecutorIfAtCfDelayerThread(orTimeout(cfThis, timeout, unit), executorWhenTimeout); @@ -3294,7 +3294,7 @@ C cffuCompleteOnTimeout(C cfThis, @Nullable T value, long timeout, TimeUnit unit public static > C cffuCompleteOnTimeout(C cfThis, @Nullable T value, Executor executorWhenTimeout, long timeout, TimeUnit unit) { requireNonNull(cfThis, "cfThis is null"); - requireNonNull(executorWhenTimeout, "executorWhenTimeout is null"); + executorWhenTimeout = screenExecutor(requireNonNull(executorWhenTimeout, "executorWhenTimeout is null")); requireNonNull(unit, "unit is null"); return hopExecutorIfAtCfDelayerThread(completeOnTimeout(cfThis, value, timeout, unit), executorWhenTimeout);