 
                        
        
                        
        org.zalando.riptide.CancelableCompletableFuture Maven / Gradle / Ivy
package org.zalando.riptide;
import org.apiguardian.api.API;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
import java.util.function.BiConsumer;
import static java.util.Objects.nonNull;
import static org.apiguardian.api.API.Status.EXPERIMENTAL;
@API(status = EXPERIMENTAL)
public final class CancelableCompletableFuture extends AbstractCancelableCompletableFuture {
    private final Future> cause;
    private CancelableCompletableFuture(final Future> cause) {
        this.cause = cause;
    }
    @Override
    public boolean cancel(final boolean mayInterruptIfRunning) {
        cause.cancel(mayInterruptIfRunning);
        super.cancel(mayInterruptIfRunning);
        return isCancelled();
    }
    public static  CompletableFuture preserveCancelability(final Future> future) {
        return new CancelableCompletableFuture<>(future);
    }
    public static  BiConsumer forwardTo(final CompletableFuture future) {
        return (response, throwable) -> {
            if (nonNull(response)) {
                future.complete(response);
            }
            if (nonNull(throwable)) {
                future.completeExceptionally(throwable);
            }
        };
    }
}
       © 2015 - 2025 Weber Informatics LLC | Privacy Policy