Skip to content

Commit b321615

Browse files
committed
Get rid of LinkedCompletion class and replace it in terms of Promise.onCancel
1 parent d434260 commit b321615

File tree

5 files changed

+24
-93
lines changed

5 files changed

+24
-93
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>net.tascalate</groupId>
88
<artifactId>net.tascalate.concurrent</artifactId>
9-
<version>0.8.3</version>
9+
<version>0.8.4</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Tascalate Concurrent</name>

src/main/java/net/tascalate/concurrent/ConfigurableDependentPromise.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package net.tascalate.concurrent;
1717

18-
import static net.tascalate.concurrent.LinkedCompletion.FutureCompletion;
1918
import static net.tascalate.concurrent.SharedFunctions.cancelPromise;
2019
import static net.tascalate.concurrent.SharedFunctions.selectFirst;
2120
import static net.tascalate.concurrent.SharedFunctions.updateReference;
@@ -779,15 +778,24 @@ public CompletableFuture<T> toCompletableFuture(boolean enlistOrigin) {
779778
if (!enlistOrigin) {
780779
return delegate.toCompletableFuture();
781780
} else {
782-
FutureCompletion<T> result = new FutureCompletion<T>().dependsOn(this);
781+
CompletablePromise<T> result = new CompletablePromise<T>() {
782+
@Override
783+
public boolean cancel(boolean mayInterruptIfRunning) {
784+
if (ConfigurableDependentPromise.this.cancel(mayInterruptIfRunning)) {
785+
return super.cancel(mayInterruptIfRunning);
786+
} else {
787+
return false;
788+
}
789+
}
790+
};
783791
whenComplete((r, e) -> {
784792
if (null != e) {
785-
result.completeExceptionally(e);
793+
result.onFailure(e);
786794
} else {
787-
result.complete(r);
795+
result.onSuccess(r);
788796
}
789797
});
790-
return result;
798+
return result.toCompletableFuture();
791799
}
792800
}
793801

src/main/java/net/tascalate/concurrent/LinkedCompletion.java

Lines changed: 0 additions & 74 deletions
This file was deleted.

src/main/java/net/tascalate/concurrent/Promises.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package net.tascalate.concurrent;
1717

18-
import static net.tascalate.concurrent.LinkedCompletion.StageCompletion;
1918
import static net.tascalate.concurrent.SharedFunctions.cancelPromise;
2019
import static net.tascalate.concurrent.SharedFunctions.selectFirst;
2120
import static net.tascalate.concurrent.SharedFunctions.unwrapCompletionException;
@@ -694,15 +693,15 @@ private static <T> Promise<T> applyExecutionTimeout(Promise<T> singleInvocationP
694693
private static <T, U> Promise<T> transform(CompletionStage<U> original,
695694
Function<? super U, ? extends T> resultMapper,
696695
Function<? super Throwable, ? extends Throwable> errorMapper) {
697-
StageCompletion<T> result = new StageCompletion<T>().dependsOn(original);
696+
CompletablePromise<T> result = new CompletablePromise<>();
698697
original.whenComplete((r, e) -> {
699698
if (null == e) {
700-
result.complete( resultMapper.apply(r) );
699+
result.onSuccess( resultMapper.apply(r) );
701700
} else {
702-
result.completeExceptionally( errorMapper.apply(e) );
701+
result.onFailure( errorMapper.apply(e) );
703702
}
704703
});
705-
return result.toPromise();
704+
return result.onCancel(() -> cancelPromise(original, true));
706705
}
707706

708707
private static <T> T extractFirstNonNull(Collection<? extends T> collection) {

src/main/java/net/tascalate/concurrent/Timeouts.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616
package net.tascalate.concurrent;
1717

18-
import static net.tascalate.concurrent.LinkedCompletion.FutureCompletion;
19-
2018
import java.time.Duration;
2119
import java.time.temporal.ChronoUnit;
2220
import java.util.Objects;
@@ -44,11 +42,11 @@ private Timeouts() {}
4442
*/
4543
static Promise<Duration> delay(Duration duration) {
4644
TimeMeasurment tm = new TimeMeasurment(duration);
47-
FutureCompletion<Duration> result = new FutureCompletion<>();
45+
CompletablePromise<Duration> result = new CompletablePromise<>();
4846
Future<?> timeout = scheduler.schedule(
49-
() -> result.complete(duration), tm.amount, tm.unit
47+
() -> result.onSuccess(duration), tm.amount, tm.unit
5048
);
51-
return result.dependsOn(timeout).toPromise();
49+
return result.onCancel(() -> timeout.cancel(true));
5250
}
5351

5452
/**
@@ -81,12 +79,12 @@ static <T> Promise<T> delayed(T value, Duration duration) {
8179
*/
8280
static <T> Promise<T> failAfter(Duration duration) {
8381
TimeMeasurment tm = new TimeMeasurment(duration);
84-
FutureCompletion<T> result = new FutureCompletion<>();
82+
CompletablePromise<T> result = new CompletablePromise<>();
8583
Future<?> timeout = scheduler.schedule(
86-
() -> result.completeExceptionally(new TimeoutException("Timeout after " + duration)),
84+
() -> result.onFailure(new TimeoutException("Timeout after " + duration)),
8785
tm.amount, tm.unit
8886
);
89-
return result.dependsOn(timeout).toPromise();
87+
return result.onCancel(() -> timeout.cancel(true));
9088
}
9189

9290
/**

0 commit comments

Comments
 (0)