Skip to content

Commit 821dee5

Browse files
committed
java: Add CompletableFuture.completedFuture()
Matches java.util.concurrent.CompletableFuture's method.
1 parent 417db64 commit 821dee5

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

RELEASE_NOTES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
v0.76.5
22

33
- Added HPKE operations to (EC)PublicKey---`seal`---and PrivateKey---`open`.
4+
5+
- Java: CompletableFuture now has a convencience factory method `completedFuture`, matching its namesake in `java.util.concurrent`.

java/shared/java/org/signal/libsignal/internal/CompletableFuture.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ public CompletableFuture() {
3838
this.consumers = new ArrayList<>();
3939
}
4040

41+
public static <U> CompletableFuture<U> completedFuture(U value) {
42+
final var result = new CompletableFuture<U>();
43+
result.complete(value);
44+
return result;
45+
}
46+
4147
@CalledFromNative
4248
void setCancellationId(long cancellationId) {
4349
this.cancellationId = Optional.of(cancellationId);

java/shared/test/java/org/signal/libsignal/internal/CompletableFutureTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@ public void testSuccess() throws Exception {
5858
assertEquals(42, (int) future.get(1, TimeUnit.MILLISECONDS));
5959
}
6060

61+
@Test
62+
public void testCompletedFutureFactoryMethod() throws Exception {
63+
CompletableFuture<Integer> future = CompletableFuture.completedFuture(42);
64+
assertTrue(future.isDone());
65+
assertFalse(future.isCancelled());
66+
assertEquals(42, (int) future.get());
67+
assertEquals(42, (int) future.get(1, TimeUnit.MILLISECONDS));
68+
}
69+
6170
@Test
6271
public void testFailure() throws Exception {
6372
CompletableFuture<Integer> future = new CompletableFuture<>();

0 commit comments

Comments
 (0)