修正
This commit is contained in:
parent
3d8a37ea2d
commit
0c8eba1cb9
|
@ -5,6 +5,7 @@ import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.security.auth.callback.Callback;
|
||||||
|
|
||||||
import one.nem.kidshift.data.KSActions;
|
import one.nem.kidshift.data.KSActions;
|
||||||
import one.nem.kidshift.data.TaskData;
|
import one.nem.kidshift.data.TaskData;
|
||||||
|
@ -31,30 +32,23 @@ public class TaskDataImpl implements TaskData {
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<List<TaskItemModel>> getTasks(TaskItemModelCallback callback) {
|
public CompletableFuture<List<TaskItemModel>> getTasks(TaskItemModelCallback callback) {
|
||||||
return CompletableFuture.supplyAsync(() -> {
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
logger.debug("タスク取得開始");
|
||||||
Thread thread = new Thread(() -> {
|
Thread thread = new Thread(() -> {
|
||||||
ksActions.syncTasks().thenAccept(taskList -> {
|
// TODO-rca: ちゃんと比較して呼ぶ
|
||||||
if (taskList != null) {
|
ksActions.syncTasks().thenAccept(callback::onUpdated);
|
||||||
callback.onUpdated(taskList);
|
|
||||||
} else {
|
|
||||||
callback.onFailed("タスクの更新に失敗しました");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
thread.start();
|
thread.start();
|
||||||
return cacheWrapper.getTaskList().thenApply((taskList) -> {
|
return cacheWrapper.getTaskList().thenApply(taskList -> {
|
||||||
if (taskList == null) {
|
if (taskList == null || taskList.isEmpty()) {
|
||||||
logger.debug("キャッシュなし");
|
try {
|
||||||
try { // キャッシュされた結果が存在しない場合はスレッドがサーバーから取得してくるまで待機して再取得
|
|
||||||
logger.debug("Threadが終了して更新するまで待機中");
|
|
||||||
thread.join();
|
thread.join();
|
||||||
logger.debug("Threadが終了しました");
|
|
||||||
return cacheWrapper.getTaskList().join();
|
return cacheWrapper.getTaskList().join();
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
logger.debug("キャッシュあり: " + taskList.size() + "件");
|
|
||||||
return taskList;
|
return taskList;
|
||||||
|
}
|
||||||
}).join();
|
}).join();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user