aboutsummaryrefslogtreecommitdiff
path: root/guava/src/com/google/common/util/concurrent/SettableFuture.java
diff options
context:
space:
mode:
Diffstat (limited to 'guava/src/com/google/common/util/concurrent/SettableFuture.java')
-rw-r--r--guava/src/com/google/common/util/concurrent/SettableFuture.java71
1 files changed, 38 insertions, 33 deletions
diff --git a/guava/src/com/google/common/util/concurrent/SettableFuture.java b/guava/src/com/google/common/util/concurrent/SettableFuture.java
index b8e9491b4..23e14f9e6 100644
--- a/guava/src/com/google/common/util/concurrent/SettableFuture.java
+++ b/guava/src/com/google/common/util/concurrent/SettableFuture.java
@@ -1,65 +1,70 @@
/*
* Copyright (C) 2009 The Guava Authors
*
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package com.google.common.util.concurrent;
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import javax.annotation.Nullable;
/**
- * A {@link ListenableFuture} whose result can be set by a {@link #set(Object)}, {@link
- * #setException(Throwable)} or {@link #setFuture(ListenableFuture)} call. It can also, like any
- * other {@code Future}, be {@linkplain #cancel cancelled}.
- *
- * <p>{@code SettableFuture} is the recommended {@code ListenableFuture} implementation when your
- * task cannot be implemented with {@link ListeningExecutorService}, the various {@link Futures}
- * utility methods, or {@link ListenableFutureTask}. Those APIs have less opportunity for developer
- * error. If your needs are more complex than {@code SettableFuture} supports, use {@link
- * AbstractFuture}, which offers an extensible version of the API.
+ * A {@link ListenableFuture} whose result may be set by a {@link #set(Object)}
+ * or {@link #setException(Throwable)} call. It may also be cancelled.
*
* @author Sven Mawson
* @since 9.0 (in 1.0 as {@code ValueFuture})
*/
-@GwtCompatible
-public final class SettableFuture<V> extends AbstractFuture.TrustedFuture<V> {
+public final class SettableFuture<V> extends AbstractFuture<V> {
+
/**
- * Creates a new {@code SettableFuture} that can be completed or cancelled by a later method call.
+ * Creates a new {@code SettableFuture} in the default state.
*/
public static <V> SettableFuture<V> create() {
return new SettableFuture<V>();
}
- @CanIgnoreReturnValue
+ /**
+ * Explicit private constructor, use the {@link #create} factory method to
+ * create instances of {@code SettableFuture}.
+ */
+ private SettableFuture() {}
+
+ /**
+ * Sets the value of this future. This method will return {@code true} if
+ * the value was successfully set, or {@code false} if the future has already
+ * been set or cancelled.
+ *
+ * @param value the value the future should hold.
+ * @return true if the value was successfully set.
+ */
@Override
public boolean set(@Nullable V value) {
return super.set(value);
}
- @CanIgnoreReturnValue
+ /**
+ * Sets the future to having failed with the given exception. This exception
+ * will be wrapped in an {@code ExecutionException} and thrown from the {@code
+ * get} methods. This method will return {@code true} if the exception was
+ * successfully set, or {@code false} if the future has already been set or
+ * cancelled.
+ *
+ * @param throwable the exception the future should hold.
+ * @return true if the exception was successfully set.
+ */
@Override
public boolean setException(Throwable throwable) {
return super.setException(throwable);
}
-
- @Beta
- @CanIgnoreReturnValue
- @Override
- public boolean setFuture(ListenableFuture<? extends V> future) {
- return super.setFuture(future);
- }
-
- private SettableFuture() {}
}