From 0c8eba1cb9bea063341545dc9218387405f0727b Mon Sep 17 00:00:00 2001 From: rca Date: Sun, 30 Jun 2024 16:11:20 +0900 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/kidshift/data/impl/TaskDataImpl.java | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java index 05bedaf..bb26463 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java @@ -5,6 +5,7 @@ import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import javax.inject.Inject; +import javax.security.auth.callback.Callback; import one.nem.kidshift.data.KSActions; import one.nem.kidshift.data.TaskData; @@ -31,30 +32,23 @@ public class TaskDataImpl implements TaskData { @Override public CompletableFuture> getTasks(TaskItemModelCallback callback) { return CompletableFuture.supplyAsync(() -> { + logger.debug("タスク取得開始"); Thread thread = new Thread(() -> { - ksActions.syncTasks().thenAccept(taskList -> { - if (taskList != null) { - callback.onUpdated(taskList); - } else { - callback.onFailed("タスクの更新に失敗しました"); - } - }); + // TODO-rca: ちゃんと比較して呼ぶ + ksActions.syncTasks().thenAccept(callback::onUpdated); }); thread.start(); - return cacheWrapper.getTaskList().thenApply((taskList) -> { - if (taskList == null) { - logger.debug("キャッシュなし"); - try { // キャッシュされた結果が存在しない場合はスレッドがサーバーから取得してくるまで待機して再取得 - logger.debug("Threadが終了して更新するまで待機中"); + return cacheWrapper.getTaskList().thenApply(taskList -> { + if (taskList == null || taskList.isEmpty()) { + try { thread.join(); - logger.debug("Threadが終了しました"); return cacheWrapper.getTaskList().join(); } catch (InterruptedException e) { throw new RuntimeException(e); } + } else { + return taskList; } - logger.debug("キャッシュあり: " + taskList.size() + "件"); - return taskList; }).join(); }); }