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.
|
String |
encode()
Encodes this
Function into its XML form |
void |
encode(StringBuilder builder)
Encodes this
Function into its XML form and writes this out to the provided
StringBuilder |
EvaluationResult |
evaluate(List<Evaluatable> 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.
|
getTypeEvaluationResult evaluate(List<Evaluatable> 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 Expressionvoid checkInputs(List inputs) throws IllegalArgumentException
IllegalArgumentException is thrown.inputs - a List of Evaluatables, 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 Evaluatables, with the first argument being
a Function if this is a higher-order functionIllegalArgumentException - if the inputs do match what the function accepts for
evaluationString encode()
Function into its XML formStringvoid encode(StringBuilder builder)
Function into its XML form and writes this out to the provided
StringBuilderencode in interface Expressionbuilder - string stream into which the XML-encoded data is writtenCopyright © 2021 WSO2. All rights reserved.