summaryrefslogtreecommitdiff
path: root/platform/core-api/src/com/intellij/concurrency/AsyncUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/core-api/src/com/intellij/concurrency/AsyncUtil.java')
-rw-r--r--platform/core-api/src/com/intellij/concurrency/AsyncUtil.java46
1 files changed, 45 insertions, 1 deletions
diff --git a/platform/core-api/src/com/intellij/concurrency/AsyncUtil.java b/platform/core-api/src/com/intellij/concurrency/AsyncUtil.java
index 93c7573c0381..72c0a85aac72 100644
--- a/platform/core-api/src/com/intellij/concurrency/AsyncUtil.java
+++ b/platform/core-api/src/com/intellij/concurrency/AsyncUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,17 @@ package com.intellij.concurrency;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
/**
* Author: dmitrylomov
*/
public class AsyncUtil {
+ private static final AsyncFuture<Boolean> TRUE = createConst(true);
+ private static final AsyncFuture<Boolean> FALSE = createConst(false);
+
public static <V> V get(@NotNull Future<V> result) {
try {
return result.get();
@@ -41,4 +46,43 @@ public class AsyncUtil {
}
}
}
+
+ private static AsyncFuture<Boolean> createConst(final boolean result) {
+ return new AsyncFuture<Boolean>() {
+ @Override
+ public void addConsumer(@NotNull Executor executor, @NotNull ResultConsumer<Boolean> consumer) {
+ consumer.onSuccess(result);
+ }
+
+ @Override
+ public boolean cancel(boolean mayInterruptIfRunning) {
+ return false;
+ }
+
+ @Override
+ public boolean isCancelled() {
+ return false;
+ }
+
+ @Override
+ public boolean isDone() {
+ return true;
+ }
+
+ @Override
+ public Boolean get() {
+ return result;
+ }
+
+ @Override
+ public Boolean get(long timeout, @NotNull TimeUnit unit) {
+ return result;
+ }
+ };
+ }
+
+ @NotNull
+ public static AsyncFuture<Boolean> wrapBoolean(boolean result) {
+ return result ? TRUE : FALSE;
+ }
}