T
- Type of wrapped future valuepublic 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)
Perform a coflatMap operation.
|
<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)
A flattening transformation operation (@see
Optional.flatMap(Function) |
<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> |
flatMapIterable(java.util.function.Function<? super T,? extends java.lang.Iterable<? extends R>> mapper)
A flattening transformation operation that takes the first value from the returned Iterable.
|
<R> FutureW<R> |
flatMapPublisher(java.util.function.Function<? super T,? extends org.reactivestreams.Publisher<? extends R>> mapper)
A flattening transformation operation that takes the first value from the returned Publisher.
|
<R> FutureW<R> |
flatten() |
static <T> FutureW<T> |
fromIterable(java.lang.Iterable<T> iterable)
Construct a FutureW syncrhonously that contains a single value extracted from the supplied Iterable
|
static <T> FutureW<T> |
fromIterable(java.lang.Iterable<T> iterable,
java.util.concurrent.Executor ex)
Construct a FutureW asyncrhonously that contains a single value extracted from the supplied Iterable
|
static <T> FutureW<T> |
fromPublisher(org.reactivestreams.Publisher<T> pub)
Construct a FutureW syncrhonously that contains a single value extracted from the supplied reactive-streams Publisher
|
static <T> FutureW<T> |
fromPublisher(org.reactivestreams.Publisher<T> pub,
java.util.concurrent.Executor ex)
Construct a FutureW asyncrhonously that contains a single value extracted from the supplied reactive-streams Publisher
|
static <T,X extends java.lang.Throwable> |
fromTry(Try<T,X> value)
Construct a FutureW syncrhonously from the Supplied Try
|
static <T,X extends java.lang.Throwable> |
fromTry(Try<T,X> value,
java.util.concurrent.Executor ex)
Deprecated.
|
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()
Returns the class name and the name of the subclass, if there is any value, the value is showed between square brackets.
|
FutureW<MonadicValue<T>> |
nest()
cojoin pattern.
|
Maybe<T> |
notNull()
Filter elements retaining only values which are not null
|
static <T> FutureW<T> |
of(java.util.concurrent.CompletableFuture<T> f)
Create a FutureW instance from the supplied CompletableFuture
|
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)
Schedule the population of a FutureW from the provided Supplier after the specified delay.
|
static <T> FutureW<T> |
schedule(java.lang.String cron,
java.util.concurrent.ScheduledExecutorService ex,
java.util.function.Supplier<T> t)
Schedule the population of a FutureW from the provided Supplier, the provided Cron (Quartz format) expression will be used to
trigger the population of the FutureW.
|
static <T> FutureW<ListX<T>> |
sequence(CollectionX<FutureW<T>> fts)
Sequence operation that convert a Collection of FutureWs to a FutureW with a List
|
static <T> FutureW<ReactiveSeq<T>> |
sequence(java.util.stream.Stream<FutureW<T>> fts)
Sequence operation that convert a Stream of FutureWs to a FutureW with a Stream
|
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)
This convertable converted to a FutureW asyncrhonously using the supplied Executor
|
Ior<java.lang.Throwable,T> |
toIor()
Return an Ior that can be this object or a Ior.primary or Ior.secondary
|
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)
pub
- Publisher to extract value fromex
- Executor to extract value onpublic static <T> FutureW<T> fromIterable(java.lang.Iterable<T> iterable, java.util.concurrent.Executor ex)
iterable
- Iterable to generate a FutureW fromex
- Executor to extract value onpublic static <T> FutureW<T> fromPublisher(org.reactivestreams.Publisher<T> pub)
pub
- Publisher to extract value frompublic static <T> FutureW<T> fromIterable(java.lang.Iterable<T> iterable)
iterable
- Iterable to extract value frompublic static <T> FutureW<T> of(java.util.concurrent.CompletableFuture<T> f)
f
- CompletableFuture to wrap as a FutureW@Deprecated public static <T,X extends java.lang.Throwable> FutureW<T> fromTry(Try<T,X> value, java.util.concurrent.Executor ex)
value
- Try to populate Future fromex
- Executor to executepublic static <T,X extends java.lang.Throwable> FutureW<T> fromTry(Try<T,X> value)
value
- Try to populate Future frompublic static <T> FutureW<T> schedule(java.lang.String cron, java.util.concurrent.ScheduledExecutorService ex, java.util.function.Supplier<T> t)
FutureW<String> future = FutureW.schedule("* * * * * ?", Executors.newScheduledThreadPool(1), ()->"hello")
cron
- Cron expression in Quartz formatex
- ScheduledExecutorService used to execute the provided Suppliert
- The Supplier to execute to populate the FutureWpublic static <T> FutureW<T> schedule(long delay, java.util.concurrent.ScheduledExecutorService ex, java.util.function.Supplier<T> t)
delay
- Delay after which the FutureW should be populatedex
- ScheduledExecutorService used to execute the provided Suppliert
- he Supplier to execute to populate the FutureWpublic static <T> FutureW<ListX<T>> sequence(CollectionX<FutureW<T>> fts)
FutureW<ListX<Integer>> futures =FutureW.sequence(ListX.of(FutureW.ofResult(10),FutureW.ofResult(1)));
//ListX.of(10,1)
fts
- Collection of Futures to Sequence into a Future with a Listpublic static <T> FutureW<ReactiveSeq<T>> sequence(java.util.stream.Stream<FutureW<T>> fts)
FutureW<Integer> just = FutureW.ofResult(10);
FutureW<ReactiveSeq<Integer>> futures =FutureW.sequence(Stream.of(just,FutureW.ofResult(1)));
//ListX.of(10,1)
fts
- Strean of Futures to Sequence into a Future with a Streampublic 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)
MonadicValue
Maybe.none().coflatMap(m -> m.isPresent() ? m.get() : 10);
//Maybe[10]
coflatMap
in interface MonadicValue<T>
coflatMap
in interface MonadicValue1<T>
mapper
- Mapping / transformation functionpublic FutureW<MonadicValue<T>> nest()
MonadicValue
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)
MonadicValue1
Optional.flatMap(Function)
Eval.now(1).map(i->i+2).flatMap(i->Eval.later(()->i*3);
//Eval[9]
flatMap
in interface MonadicValue1<T>
mapper
- transformation functionpublic <R> FutureW<R> flatMapCf(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<? extends R>> mapper)
mapper
- Mapping functionpublic Ior<java.lang.Throwable,T> toIor()
Value
public 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 java.lang.String mkString()
Value
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)
Convertable
toFutureWAsync
in interface Convertable<T>
ex
- Executor to execute the conversion onpublic <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
public <U> FutureW<org.jooq.lambda.tuple.Tuple2<T,U>> zip(java.lang.Iterable<? extends U> other)
Zippable
public <R> FutureW<R> flatMapIterable(java.util.function.Function<? super T,? extends java.lang.Iterable<? extends R>> mapper)
MonadicValue1
Maybe.just(1).map(i->i+2).flatMapIterable(i->Arrays.asList(()->i*3,20);
//Maybe[9]
flatMapIterable
in interface MonadicValue1<T>
mapper
- transformation functionpublic <R> FutureW<R> flatMapPublisher(java.util.function.Function<? super T,? extends org.reactivestreams.Publisher<? extends R>> mapper)
MonadicValue1
FutureW.ofResult(1).map(i->i+2).flatMapPublisher(i->Flux.just(()->i*3,20);
//FutureW[9]
flatMapPublisher
in interface MonadicValue1<T>
mapper
- transformation function