Created
November 19, 2025 17:16
-
-
Save hhfrancois/abc0e2303f82d112a823a580b71cd102 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package ....core.utils; | |
| import io.smallrye.mutiny.Uni; | |
| import io.smallrye.mutiny.tuples.*; | |
| import java.util.function.BiFunction; | |
| public class WithTuple { | |
| @FunctionalInterface | |
| public interface Function3<T1, T2, T3, R> { | |
| R apply(T1 t1, T2 t2, T3 t3); | |
| } | |
| @FunctionalInterface | |
| public interface Function4<T1, T2, T3, T4, R> { | |
| R apply(T1 t1, T2 t2, T3 t3, T4 t4); | |
| } | |
| @FunctionalInterface | |
| public interface Function5<T1, T2, T3, T4, T5, R> { | |
| R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5); | |
| } | |
| @FunctionalInterface | |
| public interface Function6<T1, T2, T3, T4, T5, T6, R> { | |
| R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6); | |
| } | |
| @FunctionalInterface | |
| public interface Function7<T1, T2, T3, T4, T5, T6, T7, R> { | |
| R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7); | |
| } | |
| @FunctionalInterface | |
| public interface Function8<T1, T2, T3, T4, T5, T6, T7, T8, R> { | |
| R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8); | |
| } | |
| @FunctionalInterface | |
| public interface Function9<T1, T2, T3, T4, T5, T6, T7, T8, T9, R> { | |
| R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9); | |
| } | |
| public static class WithTuple2<T1, T2> { | |
| private final Uni<Tuple2<T1, T2>> tupleUni; | |
| private WithTuple2(Uni<Tuple2<T1, T2>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(BiFunction<T1, T2, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2())); | |
| } | |
| public <R> Uni<R> withUni(BiFunction<T1, T2, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2())); | |
| } | |
| } | |
| public static class WithTuple3<T1, T2, T3> { | |
| private final Uni<Tuple3<T1, T2, T3>> tupleUni; | |
| private WithTuple3(Uni<Tuple3<T1, T2, T3>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(Function3<T1, T2, T3, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3())); | |
| } | |
| public <R> Uni<R> withUni(Function3<T1, T2, T3, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3())); | |
| } | |
| } | |
| public static class WithTuple4<T1, T2, T3, T4> { | |
| private final Uni<Tuple4<T1, T2, T3, T4>> tupleUni; | |
| private WithTuple4(Uni<Tuple4<T1, T2, T3, T4>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(Function4<T1, T2, T3, T4, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4())); | |
| } | |
| public <R> Uni<R> withUni(Function4<T1, T2, T3, T4, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4())); | |
| } | |
| } | |
| public static class WithTuple5<T1, T2, T3, T4, T5> { | |
| private final Uni<Tuple5<T1, T2, T3, T4, T5>> tupleUni; | |
| private WithTuple5(Uni<Tuple5<T1, T2, T3, T4, T5>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(Function5<T1, T2, T3, T4, T5, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5())); | |
| } | |
| public <R> Uni<R> withUni(Function5<T1, T2, T3, T4, T5, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5())); | |
| } | |
| } | |
| public static class WithTuple6<T1, T2, T3, T4, T5, T6> { | |
| private final Uni<Tuple6<T1, T2, T3, T4, T5, T6>> tupleUni; | |
| private WithTuple6(Uni<Tuple6<T1, T2, T3, T4, T5, T6>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(Function6<T1, T2, T3, T4, T5, T6, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6())); | |
| } | |
| public <R> Uni<R> withUni(Function6<T1, T2, T3, T4, T5, T6, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6())); | |
| } | |
| } | |
| public static class WithTuple7<T1, T2, T3, T4, T5, T6, T7> { | |
| private final Uni<Tuple7<T1, T2, T3, T4, T5, T6, T7>> tupleUni; | |
| private WithTuple7(Uni<Tuple7<T1, T2, T3, T4, T5, T6, T7>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(Function7<T1, T2, T3, T4, T5, T6, T7, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6(), result.getItem7())); | |
| } | |
| public <R> Uni<R> withUni(Function7<T1, T2, T3, T4, T5, T6, T7, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6(), result.getItem7())); | |
| } | |
| } | |
| public static class WithTuple8<T1, T2, T3, T4, T5, T6, T7, T8> { | |
| private final Uni<Tuple8<T1, T2, T3, T4, T5, T6, T7, T8>> tupleUni; | |
| private WithTuple8(Uni<Tuple8<T1, T2, T3, T4, T5, T6, T7, T8>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(Function8<T1, T2, T3, T4, T5, T6, T7, T8, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6(), result.getItem7(), result.getItem8())); | |
| } | |
| public <R> Uni<R> withUni(Function8<T1, T2, T3, T4, T5, T6, T7, T8, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6(), result.getItem7(), result.getItem8())); | |
| } | |
| } | |
| public static class WithTuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> { | |
| private final Uni<Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> tupleUni; | |
| private WithTuple9(Uni<Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> tupleUni) { | |
| this.tupleUni = tupleUni; | |
| } | |
| public <R> Uni<R> with(Function9<T1, T2, T3, T4, T5, T6, T7, T8, T9, R> combinator) { | |
| return tupleUni.map(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6(), result.getItem7(), result.getItem8(), result.getItem9())); | |
| } | |
| public <R> Uni<R> withUni(Function9<T1, T2, T3, T4, T5, T6, T7, T8, T9, Uni<R>> combinator) { | |
| return tupleUni.flatMap(result -> combinator.apply(result.getItem1(), result.getItem2(), result.getItem3(), result.getItem4(), result.getItem5(), result.getItem6(), result.getItem7(), result.getItem8(), result.getItem9())); | |
| } | |
| } | |
| public static <T1, T2> WithTuple2<T1, T2> ofTuple2(Uni<Tuple2<T1, T2>> tupleUni) { | |
| return new WithTuple2<>(tupleUni); | |
| } | |
| public static <T1, T2, T3> WithTuple3<T1, T2, T3> ofTuple3(Uni<Tuple3<T1, T2, T3>> tupleUni) { | |
| return new WithTuple3<>(tupleUni); | |
| } | |
| public static <T1, T2, T3, T4> WithTuple4<T1, T2, T3, T4> ofTuple4(Uni<Tuple4<T1, T2, T3, T4>> tupleUni) { | |
| return new WithTuple4<>(tupleUni); | |
| } | |
| public static <T1, T2, T3, T4, T5> WithTuple5<T1, T2, T3, T4, T5> ofTuple5(Uni<Tuple5<T1, T2, T3, T4, T5>> tupleUni) { | |
| return new WithTuple5<>(tupleUni); | |
| } | |
| public static <T1, T2, T3, T4, T5, T6> WithTuple6<T1, T2, T3, T4, T5, T6> ofTuple6(Uni<Tuple6<T1, T2, T3, T4, T5, T6>> tupleUni) { | |
| return new WithTuple6<>(tupleUni); | |
| } | |
| public static <T1, T2, T3, T4, T5, T6, T7> WithTuple7<T1, T2, T3, T4, T5, T6, T7> ofTuple7(Uni<Tuple7<T1, T2, T3, T4, T5, T6, T7>> tupleUni) { | |
| return new WithTuple7<>(tupleUni); | |
| } | |
| public static <T1, T2, T3, T4, T5, T6, T7, T8> WithTuple8<T1, T2, T3, T4, T5, T6, T7, T8> ofTuple8(Uni<Tuple8<T1, T2, T3, T4, T5, T6, T7, T8>> tupleUni) { | |
| return new WithTuple8<>(tupleUni); | |
| } | |
| public static <T1, T2, T3, T4, T5, T6, T7, T8, T9> WithTuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> ofTuple9(Uni<Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> tupleUni) { | |
| return new WithTuple9<>(tupleUni); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment