make other modules compatible with 1.2.0

This commit is contained in:
tommyskeff
2023-12-22 17:59:04 +00:00
parent 173e34810c
commit 6fc6c9f236
9 changed files with 55 additions and 58 deletions

View File

@@ -1,6 +1,9 @@
package dev.tommyjs.futur.reactor;
import dev.tommyjs.futur.promise.AbstractPromise;
import dev.tommyjs.futur.promise.PromiseFactory;
import dev.tommyjs.futur.promise.Promise;
import dev.tommyjs.futur.promise.UnpooledPromiseFactory;
import org.jetbrains.annotations.NotNull;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -11,14 +14,18 @@ import java.util.concurrent.atomic.AtomicReference;
public class ReactorTransformer {
public static <T> @NotNull AbstractPromise<T> wrapMono(@NotNull Mono<T> mono) {
AbstractPromise<T> promise = new AbstractPromise<>();
public static <T> @NotNull Promise<T> wrapMono(@NotNull Mono<T> mono, PromiseFactory factory) {
Promise<T> promise = factory.unresolved();
mono.doOnSuccess(promise::complete).doOnError(promise::completeExceptionally).subscribe();
return promise;
}
public static <T> @NotNull AbstractPromise<@NotNull List<T>> wrapFlux(@NotNull Flux<T> flux) {
AbstractPromise<List<T>> promise = new AbstractPromise<>();
public static <T> @NotNull Promise<T> wrapMono(@NotNull Mono<T> mono) {
return wrapMono(mono, UnpooledPromiseFactory.INSTANCE);
}
public static <T> @NotNull Promise<@NotNull List<T>> wrapFlux(@NotNull Flux<T> flux, PromiseFactory factory) {
Promise<List<T>> promise = factory.unresolved();
AtomicReference<List<T>> out = new AtomicReference<>(new ArrayList<>());
flux.doOnNext(out.get()::add).subscribe();
@@ -28,4 +35,8 @@ public class ReactorTransformer {
return promise;
}
public static <T> @NotNull Promise<@NotNull List<T>> wrapFlux(@NotNull Flux<T> flux) {
return wrapFlux(flux, UnpooledPromiseFactory.INSTANCE);
}
}