Class BooleanCondition
java.lang.Object
com.google.gerrit.extensions.conditions.BooleanCondition
- Direct Known Subclasses:
PrivateInternals_BooleanCondition.SubclassOnlyInCoreServer
Delayed evaluation of a boolean condition.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic BooleanCondition
and
(boolean a, BooleanCondition b) static BooleanCondition
abstract <T> Iterable<T>
Recursively collect all children of typetype
.protected abstract boolean
Check if the condition evaluates to eithertrue
orfalse
without providing additional information to the evaluation tree, e.g.static BooleanCondition
not
(BooleanCondition bc) static BooleanCondition
or
(boolean a, BooleanCondition b) static BooleanCondition
abstract BooleanCondition
reduce()
Reduce evaluation tree by cutting off branches that evaluate trivially and replacing them with a leave note corresponding to the value the branch evaluated to.abstract boolean
value()
Evaluates the condition and return its value.static BooleanCondition
valueOf
(boolean a)
-
Field Details
-
TRUE
-
FALSE
-
-
Method Details
-
valueOf
-
and
-
and
-
or
-
or
-
not
-
value
public abstract boolean value()Evaluates the condition and return its value. -
children
Recursively collect all children of typetype
.- Parameters:
type
- implementation type of the conditions to collect and return.- Returns:
- non-null, unmodifiable iteration of children of type
type
.
-
reduce
Reduce evaluation tree by cutting off branches that evaluate trivially and replacing them with a leave note corresponding to the value the branch evaluated to.Example 1 (T=True, F=False, C=non-trivial check): OR / \ => T C T Example 2 (cuts off a not-trivial check): AND / \ => F C F Example 3: AND / \ => F T F
There is no guarantee that the resulting tree is minimal. The only guarantee made is that branches that evaluate trivially will be cut off and replaced by primitive values.
-
evaluatesTrivially
protected abstract boolean evaluatesTrivially()Check if the condition evaluates to eithertrue
orfalse
without providing additional information to the evaluation tree, e.g. through checks to a remote service such asPermissionBackend
.In this case, the tree can be reduced to skip all non-trivial checks resulting in a performance gain.
-