T
- public class FutureW<T> extends java.lang.Object implements ConvertableFunctor<T>, ApplicativeFunctor<T>, MonadicValue1<T>, FlatMap<T>, Filterable<T>
ApplicativeFunctor.Applicatives, ApplicativeFunctor.ApplyFunctions<T>
Value.ValueImpl<T>
Convertable.SupplierToConvertable<T>
Constructor and Description |
---|
FutureW() |
Modifier and Type | Method and Description |
---|---|
static <T,R> FutureW<R> |
accumulate(CollectionX<FutureW<T>> fts,
java.util.function.Function<? super T,R> mapper,
Semigroup<R> reducer) |
static <T,R> FutureW<R> |
accumulate(CollectionX<FutureW<T>> fts,
Reducer<R> reducer) |
static <T> FutureW<T> |
accumulate(CollectionX<FutureW<T>> fts,
Semigroup<T> reducer) |
static <T,R> FutureW<R> |
accumulateSuccess(CollectionX<FutureW<T>> fts,
Reducer<R> reducer) |
<U> FutureW<U> |
cast(java.lang.Class<? extends U> type)
Cast all elements in a stream to a given type, possibly throwing a
ClassCastException . |
<R> FutureW<R> |
coflatMap(java.util.function.Function<? super MonadicValue<T>,R> mapper) |
<T2,R> FutureW<R> |
combine(Value<? extends T2> app,
java.util.function.BiFunction<? super T,? super T2,? extends R> fn)
Lazily combine this ApplicativeFunctor with the supplied value via the supplied BiFunction
|
FutureW<T> |
combineEager(Monoid<T> monoid,
MonadicValue<? extends T> v2)
Eagerly combine two MonadicValues using the supplied monoid (@see ApplicativeFunctor for type appropraite i.e.
|
static <T> FutureW<T> |
empty()
An empty FutureW
|
Maybe<T> |
filter(java.util.function.Predicate<? super T> fn)
Keep only elements for which the supplied predicates hold
e.g.
|
Maybe<T> |
filterNot(java.util.function.Predicate<? super T> fn)
Remove any elements for which the predicate holds (inverse operation to filter)
e.g.
|
<R> FutureW<R> |
flatMap(java.util.function.Function<? super T,? extends MonadicValue<? extends R>> mapper) |
<R> FutureW<R> |
flatMapCf(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<? extends R>> mapper)
A flatMap operation that accepts a CompleteableFuture CompletionStage as the return type
|
<R> FutureW<R> |
flatten() |
static <T> FutureW<T> |
fromIterable(java.lang.Iterable<T> iterable) |
static <T> FutureW<T> |
fromIterable(java.lang.Iterable<T> iterable,
java.util.concurrent.Executor ex) |
static <T> FutureW<T> |
fromPublisher(org.reactivestreams.Publisher<T> pub) |
static <T> FutureW<T> |
fromPublisher(org.reactivestreams.Publisher<T> pub,
java.util.concurrent.Executor ex) |
static <T,X extends java.lang.Throwable> |
fromTry(Try<T,X> value,
java.util.concurrent.Executor ex) |
T |
get() |
boolean |
isFailed() |
boolean |
isPresent() |
boolean |
isSuccess() |
java.util.Iterator<T> |
iterator() |
<R> FutureW<R> |
map(java.util.function.Function<? super T,? extends R> fn)
Transform this functor using the supplied transformation function
|
<R> FutureW<R> |
map(java.util.function.Function<? super T,R> success,
java.util.function.Function<java.lang.Throwable,R> failure)
Map this FutureW differently depending on whether the previous stage completed successfully or failed
|
<R> Eval<R> |
matches(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<T,R>> secondary,
java.util.function.Function<Matchable.CheckValue1<java.lang.Throwable,R>,Matchable.CheckValue1<java.lang.Throwable,R>> primary,
java.util.function.Supplier<? extends R> otherwise) |
java.lang.String |
mkString() |
FutureW<MonadicValue<T>> |
nest() |
Maybe<T> |
notNull()
Filter elements retaining only values which are not null
|
static <T> FutureW<T> |
of(java.util.concurrent.CompletableFuture<T> f) |
static <T> FutureW<T> |
ofError(java.lang.Throwable error)
Construct a completed-with-error FutureW from the given Exception
|
static <T> FutureW<T> |
ofResult(T result)
Construct a successfully completed FutureW from the given value
|
static <T> FutureW<T> |
ofSupplier(java.util.function.Supplier<T> s)
Create a FutureW object that asyncrhonously populates using the Common ForkJoinPool from the user provided Supplier
|
static <T> FutureW<T> |
ofSupplier(java.util.function.Supplier<T> s,
java.util.concurrent.Executor ex)
Create a FutureW object that asyncrhonously populates using the provided Executor and Supplier
|
<U> Maybe<U> |
ofType(java.lang.Class<? extends U> type)
Keep only those elements in a stream that are of a given type.
|
<R> FutureW<R> |
patternMatch(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<T,R>> case1,
java.util.function.Supplier<? extends R> otherwise)
Transform the elements of this Stream with a Pattern Matching case and default value
|
FutureW<T> |
peek(java.util.function.Consumer<? super T> c)
Peek at the current value of this Functor, without transforming it
|
FutureW<T> |
recover(java.util.function.Function<java.lang.Throwable,? extends T> fn)
Returns a new FutureW that, when this FutureW completes
exceptionally is executed with this FutureW exception as the
argument to the supplied function.
|
static <T> FutureW<T> |
schedule(long delay,
java.util.concurrent.ScheduledExecutorService ex,
java.util.function.Supplier<T> t) |
static <T> FutureW<T> |
schedule(java.lang.String cron,
java.util.concurrent.ScheduledExecutorService ex,
java.util.function.Supplier<T> t) |
static <T> FutureW<ListX<T>> |
sequence(CollectionX<FutureW<T>> fts) |
static <T> FutureW<ReactiveSeq<T>> |
sequence(java.util.stream.Stream<FutureW<T>> fts) |
ReactiveSeq<T> |
stream() |
java.util.concurrent.CompletableFuture<T> |
toCompletableFuture() |
java.util.concurrent.CompletableFuture<T> |
toCompletableFutureAsync() |
java.util.concurrent.CompletableFuture<T> |
toCompletableFutureAsync(java.util.concurrent.Executor exec) |
FutureW<T> |
toFutureW() |
FutureW<T> |
toFutureWAsync() |
FutureW<T> |
toFutureWAsync(java.util.concurrent.Executor ex) |
Ior<java.lang.Throwable,T> |
toIor() |
java.util.Optional<T> |
toOptional() |
java.lang.String |
toString() |
Xor<java.lang.Throwable,T> |
toXor() |
<R> FutureW<R> |
trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
Performs a map operation that can call a recursive method without running out of stack space
|
<T> FutureW<T> |
unit(T unit) |
<T2,R> FutureW<R> |
zip(java.util.function.BiFunction<? super T,? super T2,? extends R> fn,
org.reactivestreams.Publisher<? extends T2> app)
Zip (combine) this Zippable with the supplied Publisher, using the supplied combining function
|
<T2,R> FutureW<R> |
zip(java.lang.Iterable<? extends T2> app,
java.util.function.BiFunction<? super T,? super T2,? extends R> fn)
Zip (combine) this Zippable with the supplied Iterable using the supplied combining function
|
<U> FutureW<org.jooq.lambda.tuple.Tuple2<T,U>> |
zip(java.lang.Iterable<? extends U> other)
Zip (combine) this Zippable with the supplied Iterable combining both into a Tuple2
|
<U> FutureW<org.jooq.lambda.tuple.Tuple2<T,U>> |
zip(org.jooq.lambda.Seq<? extends U> other)
Zip (combine) this Zippable with the supplied Seq combining both into a Tuple2
|
<U,R> FutureW<R> |
zip(org.jooq.lambda.Seq<? extends U> other,
java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zip (combine) this Zippable with the supplied Seq, using the supplied combining function
|
<U> FutureW<org.jooq.lambda.tuple.Tuple2<T,U>> |
zip(java.util.stream.Stream<? extends U> other)
Zip (combine) this Zippable with the supplied Stream combining both into a Tuple2
|
<U,R> FutureW<R> |
zip(java.util.stream.Stream<? extends U> other,
java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zip (combine) this Zippable with the supplied Stream, using the supplied combining function
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
applyFunctions
anyM
collect, fold, fold, generate, iterate, mapReduce, newSubscriber, of, subscribe, test, toDequeX, toEvalAlways, toEvalLater, toEvalNow, toFeatureToggle, toFutureStream, toFutureStream, toLazyImmutable, toList, toListX, toMaybe, toMutable, toPBagX, toPOrderedSetX, toPQueueX, toPSetX, toPStackX, toPVectorX, toQueueX, toSetX, toSimpleReact, toSimpleReact, toSortedSetX, toTry, toTry, toTry, toXor, unapply
endsWith, endsWithIterable, findAny, findFirst, firstValue, foldable, foldRight, foldRight, foldRight, foldRightMapToType, get, groupBy, join, join, join, mapReduce, print, print, printErr, printOut, reduce, reduce, reduce, reduce, reduce, reduce, reduce, schedule, scheduleFixedDelay, scheduleFixedRate, single, single, singleOptional, startsWith, startsWithIterable, toConcurrentLazyCollection, toConcurrentLazyStreamable, toLazyCollection, validate, xMatch
collect, fromSupplier, orElse, orElseGet, orElseThrow, toAtomicReference, toOptionalAtomicReference, toStream, visit
public static <T> FutureW<T> empty()
public static <T> FutureW<T> fromPublisher(org.reactivestreams.Publisher<T> pub, java.util.concurrent.Executor ex)
public static <T> FutureW<T> fromIterable(java.lang.Iterable<T> iterable, java.util.concurrent.Executor ex)
public static <T> FutureW<T> fromPublisher(org.reactivestreams.Publisher<T> pub)
public static <T> FutureW<T> fromIterable(java.lang.Iterable<T> iterable)
public static <T> FutureW<T> of(java.util.concurrent.CompletableFuture<T> f)
public static <T,X extends java.lang.Throwable> FutureW<T> fromTry(Try<T,X> value, java.util.concurrent.Executor ex)
public static <T> FutureW<T> schedule(java.lang.String cron, java.util.concurrent.ScheduledExecutorService ex, java.util.function.Supplier<T> t)
public static <T> FutureW<T> schedule(long delay, java.util.concurrent.ScheduledExecutorService ex, java.util.function.Supplier<T> t)
public static <T> FutureW<ListX<T>> sequence(CollectionX<FutureW<T>> fts)
public static <T> FutureW<ReactiveSeq<T>> sequence(java.util.stream.Stream<FutureW<T>> fts)
public static <T,R> FutureW<R> accumulateSuccess(CollectionX<FutureW<T>> fts, Reducer<R> reducer)
public static <T,R> FutureW<R> accumulate(CollectionX<FutureW<T>> fts, Reducer<R> reducer)
public static <T,R> FutureW<R> accumulate(CollectionX<FutureW<T>> fts, java.util.function.Function<? super T,R> mapper, Semigroup<R> reducer)
public static <T> FutureW<T> accumulate(CollectionX<FutureW<T>> fts, Semigroup<T> reducer)
public <R> Eval<R> matches(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<T,R>> secondary, java.util.function.Function<Matchable.CheckValue1<java.lang.Throwable,R>,Matchable.CheckValue1<java.lang.Throwable,R>> primary, java.util.function.Supplier<? extends R> otherwise)
public <R> FutureW<R> coflatMap(java.util.function.Function<? super MonadicValue<T>,R> mapper)
coflatMap
in interface MonadicValue<T>
coflatMap
in interface MonadicValue1<T>
public FutureW<MonadicValue<T>> nest()
nest
in interface MonadicValue<T>
public FutureW<T> combineEager(Monoid<T> monoid, MonadicValue<? extends T> v2)
MonadicValue1
Monoid<Integer> add = Monoid.of(1,Semigroups.intSum);
Maybe.of(10).combineEager(add,Maybe.none());
//Maybe[10]
Maybe.none().combineEager(add,Maybe.of(10));
//Maybe[10]
Maybe.none().combineEager(add,Maybe.none());
//Maybe.none()
Maybe.of(10).combineEager(add,Maybe.of(10));
//Maybe[20]
Monoid<Integer> firstNonNull = Monoid.of(null , Semigroups.firstNonNull());
Maybe.of(10).combineEager(firstNonNull,Maybe.of(10));
//Maybe[10]
combineEager
in interface MonadicValue1<T>
public <R> FutureW<R> map(java.util.function.Function<? super T,? extends R> fn)
Functor
of(1,2,3).map(i->i*2)
//[2,4,6]
map
in interface ConvertableFunctor<T>
map
in interface Functor<T>
map
in interface MonadicValue<T>
map
in interface MonadicValue1<T>
fn
- Transformation functionpublic <R> FutureW<R> patternMatch(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<T,R>> case1, java.util.function.Supplier<? extends R> otherwise)
Functor
List<String> result = CollectionX.of(1,2,3,4)
.patternMatch(
c->c.valuesWhere(i->"even", (Integer i)->i%2==0 )
)
// CollectionX["odd","even","odd","even"]
patternMatch
in interface Functor<T>
case1
- Function to generate a case (or chain of cases as a single case)otherwise
- Value if supplied case doesn't matchpublic T get()
get
in interface Convertable<T>
get
in interface java.util.function.Supplier<T>
public boolean isSuccess()
public boolean isFailed()
public java.util.Iterator<T> iterator()
public <T> FutureW<T> unit(T unit)
unit
in interface MonadicValue<T>
unit
in interface MonadicValue1<T>
unit
in interface Unit<T>
public ReactiveSeq<T> stream()
public <R> FutureW<R> flatMap(java.util.function.Function<? super T,? extends MonadicValue<? extends R>> mapper)
flatMap
in interface MonadicValue1<T>
public <R> FutureW<R> flatMapCf(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<? extends R>> mapper)
mapper
- Mapping functionpublic FutureW<T> toFutureW()
toFutureW
in interface Convertable<T>
public java.util.concurrent.CompletableFuture<T> toCompletableFuture()
toCompletableFuture
in interface Convertable<T>
public java.util.concurrent.CompletableFuture<T> toCompletableFutureAsync()
toCompletableFutureAsync
in interface Convertable<T>
public java.util.concurrent.CompletableFuture<T> toCompletableFutureAsync(java.util.concurrent.Executor exec)
toCompletableFutureAsync
in interface Convertable<T>
exec
- Executor to asyncrhonously populate the CompletableFuturepublic FutureW<T> recover(java.util.function.Function<java.lang.Throwable,? extends T> fn)
fn
- the function to use to compute the value of the
returned FutureW if this FutureW completed exceptionallypublic <R> FutureW<R> map(java.util.function.Function<? super T,R> success, java.util.function.Function<java.lang.Throwable,R> failure)
success
- Mapping function for successful outcomesfailure
- Mapping function for failed outcomespublic <U> FutureW<U> cast(java.lang.Class<? extends U> type)
Functor
ClassCastException
.
// ClassCastException ReactiveSeq.of(1, "a", 2, "b", 3).cast(Integer.class)public FutureW<T> peek(java.util.function.Consumer<? super T> c)
Functor
of(1,2,3).map(System.out::println)
1
2
3
public <R> FutureW<R> trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
Functor
ReactiveSeq.of(10,20,30,40)
.trampoline(i-> fibonacci(i))
.forEach(System.out::println);
Trampoline<Long> fibonacci(int i){
return fibonacci(i,1,0);
}
Trampoline<Long> fibonacci(int n, long a, long b) {
return n == 0 ? Trampoline.done(b) : Trampoline.more( ()->fibonacci(n-1, a+b, a));
}
55
6765
832040
102334155
ReactiveSeq.of(10_000,200_000,3_000_000,40_000_000)
.trampoline(i-> fibonacci(i))
.forEach(System.out::println);
completes successfully
trampoline
in interface Functor<T>
mapper
- TCO Transformation functionpublic java.lang.String toString()
toString
in class java.lang.Object
public static <T> FutureW<T> ofResult(T result)
result
- To wrap inside a FutureWpublic static <T> FutureW<T> ofError(java.lang.Throwable error)
error
- To wrap inside a FutureWpublic boolean isPresent()
isPresent
in interface Convertable<T>
public Maybe<T> filter(java.util.function.Predicate<? super T> fn)
Filterable
of(1,2,3).filter(i->i>2);
//[3]
filter
in interface Filterable<T>
fn
- to filter elements by, retaining matchespublic <U> Maybe<U> ofType(java.lang.Class<? extends U> type)
Filterable
// (1, 2, 3) ReactiveSeq.of(1, "a", 2, "b",3).ofType(Integer.class)
ofType
in interface Filterable<T>
public Maybe<T> filterNot(java.util.function.Predicate<? super T> fn)
Filterable
of(1,2,3).filter(i->i>2);
//[1,2]
filterNot
in interface Filterable<T>
fn
- to filter elements by, retaining matchespublic Maybe<T> notNull()
Filterable
of(1,2,null,4).nonNull();
//[1,2,4]
notNull
in interface Filterable<T>
public java.util.Optional<T> toOptional()
toOptional
in interface Convertable<T>
public FutureW<T> toFutureWAsync()
toFutureWAsync
in interface Convertable<T>
public FutureW<T> toFutureWAsync(java.util.concurrent.Executor ex)
toFutureWAsync
in interface Convertable<T>
public <T2,R> FutureW<R> combine(Value<? extends T2> app, java.util.function.BiFunction<? super T,? super T2,? extends R> fn)
ApplicativeFunctor
combine
in interface ApplicativeFunctor<T>
app
- Value to combine with this one.fn
- BiFunction to combine thempublic <T2,R> FutureW<R> zip(java.lang.Iterable<? extends T2> app, java.util.function.BiFunction<? super T,? super T2,? extends R> fn)
Zippable
public <T2,R> FutureW<R> zip(java.util.function.BiFunction<? super T,? super T2,? extends R> fn, org.reactivestreams.Publisher<? extends T2> app)
Zippable
public static <T> FutureW<T> ofSupplier(java.util.function.Supplier<T> s)
s
- Supplier to asynchronously populate results frompublic static <T> FutureW<T> ofSupplier(java.util.function.Supplier<T> s, java.util.concurrent.Executor ex)
s
- Supplier to asynchronously populate results fromex
- Executro to asynchronously populate results withpublic <U,R> FutureW<R> zip(org.jooq.lambda.Seq<? extends U> other, java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zippable
public <U,R> FutureW<R> zip(java.util.stream.Stream<? extends U> other, java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zippable
public <U> FutureW<org.jooq.lambda.tuple.Tuple2<T,U>> zip(java.util.stream.Stream<? extends U> other)
Zippable
public <U> FutureW<org.jooq.lambda.tuple.Tuple2<T,U>> zip(org.jooq.lambda.Seq<? extends U> other)
Zippable