1 package wtf
.metio
.reguloj
;
3 import java
.util
.function
.Consumer
;
4 import java
.util
.function
.Predicate
;
8 * Fluent interface for building new {@link Rule rules}. It follows the builder-pattern described
9 * by Joshua Bloch (see Effective Java, Item 2) and offers 3 methods:
12 * <li>{@link #called(String) called}: Use this method to name your new rule.</li>
13 * <li>{@link #when(Predicate) when}: Use this method to specify the {@link Predicate} for your new rule.</li>
14 * <li>{@link #then(Consumer) then}: Use this method to specify the {@link Consumer} for your new rule.</li>
20 * Rule creation with name, predicate and consumer:
23 * String name = "...";
24 * Predicate predicate = ...;
25 * Consumer consumer = ...;
26 * Rule rule = Rule.builder()
27 * .called(<em>name</em>)
28 * .when(<em>predicate</em>)
29 * .then(<em>consumer</em>)
34 * @param <CONTEXT> The context type.
40 public interface RuleBuilder
<CONTEXT
extends Context
<?
>> {
43 * Sets the {@link Predicate} for the new rule.
45 * @param predicate The predicate to set.
46 * @return The current rule builder.
48 RuleBuilder
<CONTEXT
> when(Predicate
<CONTEXT
> predicate
);
51 * Sets the {@link Consumer} for the new rule.
53 * @param consumer The consumer to set.
54 * @return The current rule builder.
56 Rule
<CONTEXT
> then(Consumer
<CONTEXT
> consumer
);
59 * Sets the name of the new rule.
61 * @param name The name to set.
62 * @return The current rule builder.
64 RuleBuilder
<CONTEXT
> called(String name
);