public interface Function extends Expression
Modifier and Type | Method and Description |
---|---|
void |
checkInputs(List inputs)
Checks that the given inputs are of the right types, in the right
order, and are the right number for this function to evaluate.
|
void |
checkInputsNoBag(List inputs)
Checks that the given inputs are of the right types, in the right
order, and are the right number for this function to evaluate.
|
void |
encode(OutputStream output)
Encodes this
Function into its XML representation and
writes this encoding to the given OutputStream with no
indentation. |
void |
encode(OutputStream output,
Indenter indenter)
Encodes this
Function into its XML representation and
writes this encoding to the given OutputStream with
indentation. |
EvaluationResult |
evaluate(List inputs,
EvaluationCtx context)
Evaluates the
Function using the given inputs. |
URI |
getIdentifier()
Returns the identifier of this function as known by the factories.
|
URI |
getReturnType()
Provides the type of
AttributeValue that this function
returns from evaluate in a successful evaluation. |
boolean |
returnsBag()
Tells whether this function will return a bag of values or just a
single value.
|
getType
EvaluationResult evaluate(List inputs, EvaluationCtx context)
Function
using the given inputs.
The List
contains Evaluatables which are all
of the correct type if the Function
has been created as
part of an Apply
or TargetMatch
, but which
may otherwise be invalid. Each parameter should be evaluated by the
Function
, unless the Function
doesn't need to evaluate all inputs to determine a result (as in the
case of the or function). The order of the List
is
significant, so a Function
should have a very good reason
if it wants to evaluate the inputs in a different order.
Note that if this is a higher-order function, like any-of, then
some argument (typically the first) in the List
will
actually be a Function object representing the function to apply to
some bag. A function needs to know if it's a higher-order function,
and therefore whether or not to look for this case. Also, a
higher-order function is responsible for checking that the inputs
that it will pass to the Function
provided as the first
parameter are valid, ie. it must do a checkInputs
on
its sub-function when checkInputs
is called on the
higher-order function.
inputs
- the List
of inputs for the functioncontext
- the representation of the requestAttributeValue
computed
when evaluating the function, or Status
specifying some error conditionURI getIdentifier()
URI getReturnType()
AttributeValue
that this function
returns from evaluate
in a successful evaluation.boolean returnsBag()
returnsBag
in interface Expression
void checkInputs(List inputs) throws IllegalArgumentException
IllegalArgumentException
is thrown.inputs
- a List
of Evaluatable
s, with
the first argument being a Function
if
this is a higher-order functionIllegalArgumentException
- if the inputs do match what the
function accepts for evaluationvoid checkInputsNoBag(List inputs) throws IllegalArgumentException
IllegalArgumentException
is thrown. Unlike the other
checkInput
method in this interface, this assumes that
the parameters will never provide bags of values. This is useful if
you're considering a target function which has a designator or
selector in its input list, but which passes the values from the
derived bags one at a time to the function, so the function doesn't
have to deal with the bags that the selector or designator
generates.inputs
- a List
of Evaluatable
s, with
the first argument being a Function
if
this is a higher-order functionIllegalArgumentException
- if the inputs do match what the
function accepts for evaluationvoid encode(OutputStream output)
Function
into its XML representation and
writes this encoding to the given OutputStream
with no
indentation.encode
in interface Expression
output
- a stream into which the XML-encoded data is writtenvoid encode(OutputStream output, Indenter indenter)
Function
into its XML representation and
writes this encoding to the given OutputStream
with
indentation.encode
in interface Expression
output
- a stream into which the XML-encoded data is writtenindenter
- an object that creates indentation stringsCopyright © 2023 JBoss by Red Hat. All rights reserved.