Package org.apache.tapestry5.func
Class F
java.lang.Object
org.apache.tapestry5.func.F
Functional operations on collections with generics support. The core interface is
Flow
to
which operations
and transformations
(in terms of Predicate
s, Mapper
s and Reducer
s) to create new Flows. Flows
are initially
created
using flow(Collection)
and flow(Object...)
.
F will be used a bit, thus it has a short name (for those who don't like static imports). It provides a base set of
Predicate, Mapper and Reducer factories. A good development pattern for applications is to provide a similar,
application-specific, set of such factories.- Since:
- 5.2.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionA two-input Mapper used to add the values from two Flows of Integers into a Flow of Integer sums.Predicate that returns true if the provided string is blank (null or all whitespace).A Reducer that operates on a Flow of Integers and is used to sum the values. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> Worker<T>
addToCollection
(Collection<T> coll) A Worker factory; the returnedWorker adds the values to a provided collection.static <S,
T> Mapper<S, T> always
(T fixedResult) A Mapper factory; the returned Mapper ignores its input value and always returns a predetermined result.static <T> Predicate<T>
Combines any number of delegates as a logical and operation.static <A,
B, C> Mapper<A, C> Combines two mappers into a composite mapping from type A to type C via type B.static <T> Worker<T>
Combines several compatible workers together into a composite.A Predicate factory for matching String elements with a given suffix.endsWithIgnoringCase
(String suffix) As withendsWith(String)
but ignores case.static <T extends Comparable<T>>
Predicate<T>eq
(T value) A Predicate factory for comparison of a Comparable element from a flow against a fixed value.static <T> Predicate<T>
eql
(T value) A Predicate factory for equality of an element from a flow against a specified value.static <T> Flow<T>
Creates a lazy Flow from theIterator
obtained from the iterable.static <T> Flow<T>
flow
(Collection<T> values) Extracts the values from the collection to form aFlow
.static <T> Flow<T>
Creates a lazy Flow from theIterator
.static <T> Flow<T>
flow
(T... values) Creates a new Flow from the values.static <T extends Comparable<T>>
Predicate<T>gt
(T value) A Predicate factory for comparison of a Comparable against a fixed value; true if the flow element is greater than the provided value.static <T extends Comparable<T>>
Predicate<T>gteq
(T value) A Predicate factory for comparison of a Comparable against a fixed value; true if the flow element is greater than or equal to the value.static <S> Mapper<S,
S> identity()
A Mapper factory; the Mapper returns the the flow value unchanged.static <T> Predicate<T>
isNull()
A Predicate factory; returns true if the value from the Flow is null.static <T> Flow<T>
Creates an infinite lazy flow from an initial value and a function to map from the current value to the next value.static <T> Flow<T>
lazy
(LazyFunction<T> function) Creates aFlow
from a lazy function.static <T extends Comparable<T>>
Predicate<T>lt
(T value) A Predicate factory for comparison of a Comparable against a fixed value; true if the element is less than the value.static <T extends Comparable<T>>
Predicate<T>lteq
(T value) A Predicate factory for comparison of a Comprable element against a fixed value; true if the element is less than or equal to the value.static <T extends Comparable<T>>
Predicate<T>neq
(T value) A Predicate factory for comparison of a Comparable element against a fixed value.static <T> Predicate<T>
Inverts a predicate.static <T> Predicate<T>
notNull()
A Predicate factory; returns true if the value from the Flow is not null.static <T> Predicate<T>
Combines any number of delegates as a logical or operation.static <A extends Comparable<A>,
B>
Comparator<Tuple<A,B>> Creates a Comparator for the Tuples of aZippedFlow
that sorts the Tuple elements based on the first value in the Tuple.static <A,
B extends Comparable<B>>
Comparator<Tuple<A,B>> Creates a Comparator for the Tuples of aZippedFlow
that sorts the Tuple elements based on the first value in the Tuple.range
(int lower, int upper) Creates a lazy Flow that returns integers in the given range.static <S,
T> Mapper<S, T> Override ofselect(Predicate, Mapper, Mapper)
where rejected values are replaced with null.static <S,
T> Mapper<S, T> A Mapper factory that combines a Predicate with twoMapper
s; evaluating the predicate selects one of the two mappers.static <S,
T> Mapper<S, T> Override ofselect(Predicate, Mapper)
where rejected values are replaced with a fixed value.series
(int start, int delta) Creates an infinite series of numbers.startsWith
(String prefix) A Predicate factory for matching String elements with a given prefix.startsWithIgnoringCase
(String prefix) AsstartsWith(String)
, but ignores case.A Mapper factory that gets the string value of the flow value usingString.valueOf(Object)
.static <S> Predicate<S>
toPredicate
(Mapper<S, Boolean> mapper) Allows a Mapper that maps to boolean to be used as a Predicate.static <A,
B> ZippedFlow<A, B> zippedFlow
(Map<A, B> map) Creates a ZippedFlow from the provided map; the order of the tuples in the ZippedFlow is defined by the iteration order of the map entries.
-
Field Details
-
IS_BLANK
Predicate that returns true if the provided string is blank (null or all whitespace). -
SUM_INTS
A Reducer that operates on a Flow of Integers and is used to sum the values. -
ADD_INTS
A two-input Mapper used to add the values from two Flows of Integers into a Flow of Integer sums.
-
-
Constructor Details
-
F
public F()
-
-
Method Details
-
eql
A Predicate factory for equality of an element from a flow against a specified value. -
eq
A Predicate factory for comparison of a Comparable element from a flow against a fixed value. -
neq
A Predicate factory for comparison of a Comparable element against a fixed value. -
gt
A Predicate factory for comparison of a Comparable against a fixed value; true if the flow element is greater than the provided value. -
gteq
A Predicate factory for comparison of a Comparable against a fixed value; true if the flow element is greater than or equal to the value. -
lt
A Predicate factory for comparison of a Comparable against a fixed value; true if the element is less than the value. -
lteq
A Predicate factory for comparison of a Comprable element against a fixed value; true if the element is less than or equal to the value. -
isNull
A Predicate factory; returns true if the value from the Flow is null. -
notNull
A Predicate factory; returns true if the value from the Flow is not null. -
stringValueOf
A Mapper factory that gets the string value of the flow value usingString.valueOf(Object)
. -
always
A Mapper factory; the returned Mapper ignores its input value and always returns a predetermined result. -
select
public static <S,T> Mapper<S,T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted, Mapper<S, T> ifRejected) A Mapper factory that combines a Predicate with twoMapper
s; evaluating the predicate selects one of the two mappers.- Parameters:
predicate
- evaluated to selected a coercionifAccepted
- used when predicate evaluates to trueifRejected
- used when predicate evaluates to false
-
select
Override ofselect(Predicate, Mapper, Mapper)
where rejected values are replaced with null. -
select
public static <S,T> Mapper<S,T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted, T ifRejectedValue) Override ofselect(Predicate, Mapper)
where rejected values are replaced with a fixed value. -
identity
A Mapper factory; the Mapper returns the the flow value unchanged. -
toPredicate
Allows a Mapper that maps to boolean to be used as a Predicate. -
flow
Extracts the values from the collection to form aFlow
. The Collection may change after the Flow is created without affecting the Flow. -
flow
Creates a new Flow from the values. You should not change the values array after invoking this method (i.e., no defensive copy of the values is made). -
flow
Creates a lazy Flow from theIterator
obtained from the iterable. The Flow will be threadsafe as long as the iterable yields a new Iterator on each invocation and the underlying iterable object is not modified while the Flow is evaluating. In other words, not extremely threadsafe. -
flow
Creates a lazy Flow from theIterator
. The Flow will be threadsafe as long as the underlying iterable object is not modified while the Flow is evaluating. In other words, not extremely threadsafe.- Since:
- 5.3
-
zippedFlow
Creates a ZippedFlow from the provided map; the order of the tuples in the ZippedFlow is defined by the iteration order of the map entries.- Type Parameters:
A
- type of key and first tuple valueB
- type of value and second tuple value- Parameters:
map
- source of tuples- Returns:
- zipped flow created from map
- Since:
- 5.3
-
range
Creates a lazy Flow that returns integers in the given range. The range starts with the lower value and counts by 1 up to the upper range (which is not part of the Flow). If lower equals upper, the Flow is empty. If upper is less than lower, the Flow counts down instead.- Parameters:
lower
- start of range (inclusive)upper
- end of range (exclusive)
-
lazy
Creates aFlow
from a lazy function. -
iterate
Creates an infinite lazy flow from an initial value and a function to map from the current value to the next value.- Parameters:
initial
- initial value in flowfunction
- maps from current value in flow to next value in flow- Returns:
- lazy flow
-
series
Creates an infinite series of numbers. Attempting to get the FlowOperations.count() of the series will form an infinite loop. -
addToCollection
A Worker factory; the returnedWorker adds the values to a provided collection. -
startsWith
A Predicate factory for matching String elements with a given prefix.- Since:
- 5.3
-
startsWithIgnoringCase
AsstartsWith(String)
, but ignores case.- Since:
- 5.3
-
endsWith
A Predicate factory for matching String elements with a given suffix.- Since:
- 5.3
-
endsWithIgnoringCase
As withendsWith(String)
but ignores case.- Since:
- 5.3
-
orderByFirst
Creates a Comparator for the Tuples of aZippedFlow
that sorts the Tuple elements based on the first value in the Tuple.- Since:
- 5.3
-
orderBySecond
Creates a Comparator for the Tuples of aZippedFlow
that sorts the Tuple elements based on the first value in the Tuple.- Since:
- 5.3
-
not
Inverts a predicate.- Parameters:
delegate
- the predicate to invert- Returns:
- a new predicate that is inverse to the existing predicate
- Since:
- 5.3
-
combine
Combines two mappers into a composite mapping from type A to type C via type B.- Parameters:
abMapper
- maps from A to BbcMapper
- maps from B to C- Returns:
- mapper from A to C
-
and
Combines any number of delegates as a logical and operation. Evaluation terminates with the first delegate predicate that returns false.- Parameters:
delegates
- to evaluate- Returns:
- combined delegate
- Since:
- 5.3
-
or
Combines any number of delegates as a logical or operation. Evaluation terminates with the first delegate predicate that returns true.- Parameters:
delegates
- to evaluate- Returns:
- combined delegate
- Since:
- 5.3
-
combine
Combines several compatible workers together into a composite.- Since:
- 5.3
-