diff options
Diffstat (limited to 'platform/core-api/src/com/intellij/concurrency/AsyncUtil.java')
-rw-r--r-- | platform/core-api/src/com/intellij/concurrency/AsyncUtil.java | 46 |
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; + } } |