public abstract class Expression<T>
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
Expression.Parser |
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
FALSE_KEYWORD |
private static java.lang.String |
NULL_KEYWORD |
private static java.lang.String |
TRUE_KEYWORD |
Constructor and Description |
---|
Expression() |
Modifier and Type | Method and Description |
---|---|
static BinaryExpression |
add(Expression left,
Expression right)
Creates an addition or concatenation expression.
|
static BinaryExpression |
add(Expression left,
java.lang.Object right)
Creates an addition or concatenation expression.
|
static BinaryExpression |
add(java.lang.Object left,
Expression right)
Creates an addition or concatenation expression.
|
static BinaryExpression |
add(java.lang.Object left,
java.lang.Object right)
Creates an addition or concatenation expression.
|
static BinaryExpression |
and(java.lang.Boolean left,
java.lang.Boolean right)
Creates a boolean "and" expression.
|
static BinaryExpression |
and(java.lang.Boolean left,
Expression right)
Creates a boolean "and" expression.
|
static BinaryExpression |
and(Expression left,
java.lang.Boolean right)
Creates a boolean "and" expression.
|
static BinaryExpression |
and(Expression left,
Expression right)
Creates a boolean "and" expression.
|
static BinaryExpression |
divide(Expression left,
Expression right)
Creates a division expression.
|
static BinaryExpression |
divide(Expression left,
java.lang.Number right)
Creates a division expression.
|
static BinaryExpression |
divide(java.lang.Number left,
Expression<java.lang.Number> right)
Creates a division expression.
|
static BinaryExpression |
divide(java.lang.Number left,
java.lang.Number right)
Creates a division expression.
|
static BinaryExpression |
equalTo(Expression left,
Expression right)
Creates an equality expression.
|
static BinaryExpression |
equalTo(Expression left,
java.lang.Object right)
Creates an equality expression.
|
static BinaryExpression |
equalTo(java.lang.Object left,
Expression right)
Creates an equality expression.
|
static BinaryExpression |
equalTo(java.lang.Object left,
java.lang.Object right)
Creates an equality expression.
|
abstract T |
evaluate(java.lang.Object namespace)
Evaluates the expression.
|
private static <T> T |
get(java.lang.Object namespace,
java.util.Iterator<java.lang.String> keyPathIterator)
Returns the value at a given path within a namespace.
|
static <T> T |
get(java.lang.Object namespace,
KeyPath keyPath)
Returns the value at a given path within a namespace.
|
static <T> T |
get(java.lang.Object namespace,
java.lang.String key)
Returns the value at a given key within a namespace.
|
java.util.List<KeyPath> |
getArguments()
Returns a list of arguments to this expression.
|
protected abstract void |
getArguments(java.util.List<KeyPath> arguments)
Populates a list of arguments to this expression.
|
static BinaryExpression |
greaterThan(Expression left,
Expression right)
Creates a "greater-than" comparison expression.
|
static BinaryExpression |
greaterThan(Expression left,
java.lang.Object right)
Creates a "greater-than" comparison expression.
|
static BinaryExpression |
greaterThan(java.lang.Object left,
Expression right)
Creates a "greater-than" comparison expression.
|
static BinaryExpression |
greaterThan(java.lang.Object left,
java.lang.Object right)
Creates a "greater-than" comparison expression.
|
static BinaryExpression |
greaterThanOrEqualTo(Expression left,
Expression right)
Creates a "greater-than-or-equal-to" comparison expression.
|
static BinaryExpression |
greaterThanOrEqualTo(Expression left,
java.lang.Object right)
Creates a "greater-than-or-equal-to" comparison expression.
|
static BinaryExpression |
greaterThanOrEqualTo(java.lang.Object left,
Expression right)
Creates a "greater-than-or-equal-to" comparison expression.
|
static BinaryExpression |
greaterThanOrEqualTo(java.lang.Object left,
java.lang.Object right)
Creates a "greater-than-or-equal-to" comparison expression.
|
abstract boolean |
isDefined(java.lang.Object namespace)
Tests whether the expression is defined.
|
private static boolean |
isDefined(java.lang.Object namespace,
java.util.Iterator<java.lang.String> keyPathIterator)
Tests the existence of a path within a namespace.
|
static boolean |
isDefined(java.lang.Object namespace,
KeyPath keyPath)
Tests the existence of a path within a namespace.
|
static boolean |
isDefined(java.lang.Object namespace,
java.lang.String key)
Tests the existence of a key within a namespace.
|
abstract boolean |
isLValue()
Tests whether the expression represents an l-value (i.e.
|
static BinaryExpression |
lessThan(Expression left,
Expression right)
Creates a "less-than" comparison expression.
|
static BinaryExpression |
lessThan(Expression left,
java.lang.Object right)
Creates a "less-than" comparison expression.
|
static BinaryExpression |
lessThan(java.lang.Object left,
Expression right)
Creates a "less-than" comparison expression.
|
static BinaryExpression |
lessThan(java.lang.Object left,
java.lang.Object right)
Creates a "less-than" comparison expression.
|
static BinaryExpression |
lessThanOrEqualTo(Expression left,
Expression right)
Creates a "less-than-or-equal-to" comparison expression.
|
static BinaryExpression |
lessThanOrEqualTo(Expression left,
java.lang.Object right)
Creates a "less-than-or-equal-to" comparison expression.
|
static BinaryExpression |
lessThanOrEqualTo(java.lang.Object left,
Expression right)
Creates a "less-than-or-equal-to" comparison expression.
|
static BinaryExpression |
lessThanOrEqualTo(java.lang.Object left,
java.lang.Object right)
Creates a "less-than-or-equal-to" comparison expression.
|
static BinaryExpression |
modulo(Expression<java.lang.Number> left,
java.lang.Number right)
Creates a modulus expression.
|
static BinaryExpression |
modulo(Expression left,
Expression right)
Creates a modulus expression.
|
static BinaryExpression |
modulo(java.lang.Number left,
Expression<java.lang.Number> right)
Creates a modulus expression.
|
static BinaryExpression |
modulo(java.lang.Number left,
java.lang.Number right)
Creates a modulus expression.
|
static BinaryExpression |
multiply(Expression left,
Expression right)
Creates a multiplication expression.
|
static BinaryExpression |
multiply(Expression left,
java.lang.Number right)
Creates a multiplication expression.
|
static BinaryExpression |
multiply(java.lang.Number left,
Expression right)
Creates a multiplication expression.
|
static BinaryExpression |
multiply(java.lang.Number left,
java.lang.Number right)
Creates a multiplication expression.
|
static UnaryExpression |
negate(Expression operand)
Creates a numeric negation expression.
|
static UnaryExpression |
negate(java.lang.Number operand)
Creates a numeric negation expression.
|
static UnaryExpression |
not(java.lang.Boolean operand)
Creates a boolean "not" expression.
|
static UnaryExpression |
not(Expression operand)
Creates a boolean "not" expression.
|
static BinaryExpression |
notEqualTo(Expression left,
Expression right)
Creates an inverse equality expression.
|
static BinaryExpression |
notEqualTo(Expression left,
java.lang.Object right)
Creates an inverse equality expression.
|
static BinaryExpression |
notEqualTo(java.lang.Object left,
Expression right)
Creates an inverse equality expression.
|
static BinaryExpression |
notEqualTo(java.lang.Object left,
java.lang.Object right)
Creates an inverse equality expression.
|
static BinaryExpression |
or(java.lang.Boolean left,
java.lang.Boolean right)
Creates a boolean "or" expression.
|
static BinaryExpression |
or(java.lang.Boolean left,
Expression right)
Creates a boolean "or" expression.
|
static BinaryExpression |
or(Expression left,
java.lang.Boolean right)
Creates a boolean "or" expression.
|
static BinaryExpression |
or(Expression left,
Expression right)
Creates a boolean "or" expression.
|
private static void |
set(java.lang.Object namespace,
java.util.Iterator<java.lang.String> keyPathIterator,
java.lang.Object value)
Sets the value at a given path within a namespace.
|
static void |
set(java.lang.Object namespace,
KeyPath keyPath,
java.lang.Object value)
Sets the value at a given path within a namespace.
|
static void |
set(java.lang.Object namespace,
java.lang.String key,
java.lang.Object value)
Sets the value at a given path within a namespace.
|
static BinaryExpression |
subtract(Expression left,
Expression right)
Creates a subtraction expression.
|
static BinaryExpression |
subtract(Expression left,
java.lang.Number right)
Creates a subtraction expression.
|
static BinaryExpression |
subtract(java.lang.Number left,
Expression right)
Creates a subtraction expression.
|
static BinaryExpression |
subtract(java.lang.Number left,
java.lang.Number right)
Creates a subtraction expression.
|
abstract void |
update(java.lang.Object namespace,
T value)
Updates the expression value.
|
static Expression |
valueOf(java.lang.String value)
Parses a string representation of an expression into an expression
tree.
|
private static final java.lang.String NULL_KEYWORD
private static final java.lang.String TRUE_KEYWORD
private static final java.lang.String FALSE_KEYWORD
public abstract T evaluate(java.lang.Object namespace)
namespace
- The namespace against which the expression will be evaluated.public abstract void update(java.lang.Object namespace, T value)
namespace
- The namespace against which the expression will be evaluated.value
- The value to assign to the expression.public abstract boolean isDefined(java.lang.Object namespace)
namespace
- The namespace against which the expression will be evaluated.public abstract boolean isLValue()
public java.util.List<KeyPath> getArguments()
protected abstract void getArguments(java.util.List<KeyPath> arguments)
public static <T> T get(java.lang.Object namespace, KeyPath keyPath)
namespace
- keyPath
- private static <T> T get(java.lang.Object namespace, java.util.Iterator<java.lang.String> keyPathIterator)
namespace
- keyPathIterator
- public static <T> T get(java.lang.Object namespace, java.lang.String key)
namespace
- key
- public static void set(java.lang.Object namespace, KeyPath keyPath, java.lang.Object value)
namespace
- keyPath
- value
- private static void set(java.lang.Object namespace, java.util.Iterator<java.lang.String> keyPathIterator, java.lang.Object value)
namespace
- keyPathIterator
- value
- public static void set(java.lang.Object namespace, java.lang.String key, java.lang.Object value)
namespace
- key
- value
- public static boolean isDefined(java.lang.Object namespace, KeyPath keyPath)
namespace
- keyPath
- private static boolean isDefined(java.lang.Object namespace, java.util.Iterator<java.lang.String> keyPathIterator)
namespace
- keyPathIterator
- public static boolean isDefined(java.lang.Object namespace, java.lang.String key)
namespace
- key
- public static BinaryExpression add(Expression left, Expression right)
left
- right
- public static BinaryExpression add(Expression left, java.lang.Object right)
left
- right
- public static BinaryExpression add(java.lang.Object left, Expression right)
left
- right
- public static BinaryExpression add(java.lang.Object left, java.lang.Object right)
left
- right
- public static BinaryExpression subtract(Expression left, Expression right)
left
- right
- public static BinaryExpression subtract(Expression left, java.lang.Number right)
left
- right
- public static BinaryExpression subtract(java.lang.Number left, Expression right)
left
- right
- public static BinaryExpression subtract(java.lang.Number left, java.lang.Number right)
left
- right
- public static BinaryExpression multiply(Expression left, Expression right)
left
- right
- public static BinaryExpression multiply(Expression left, java.lang.Number right)
left
- right
- public static BinaryExpression multiply(java.lang.Number left, Expression right)
left
- right
- public static BinaryExpression multiply(java.lang.Number left, java.lang.Number right)
left
- right
- public static BinaryExpression divide(Expression left, Expression right)
left
- right
- public static BinaryExpression divide(Expression left, java.lang.Number right)
left
- right
- public static BinaryExpression divide(java.lang.Number left, Expression<java.lang.Number> right)
left
- right
- public static BinaryExpression divide(java.lang.Number left, java.lang.Number right)
left
- right
- public static BinaryExpression modulo(Expression left, Expression right)
left
- right
- public static BinaryExpression modulo(Expression<java.lang.Number> left, java.lang.Number right)
left
- right
- public static BinaryExpression modulo(java.lang.Number left, Expression<java.lang.Number> right)
left
- right
- public static BinaryExpression modulo(java.lang.Number left, java.lang.Number right)
left
- right
- public static BinaryExpression equalTo(Expression left, Expression right)
left
- right
- public static BinaryExpression equalTo(Expression left, java.lang.Object right)
left
- right
- public static BinaryExpression equalTo(java.lang.Object left, Expression right)
left
- right
- public static BinaryExpression equalTo(java.lang.Object left, java.lang.Object right)
left
- right
- public static BinaryExpression notEqualTo(Expression left, Expression right)
left
- right
- public static BinaryExpression notEqualTo(Expression left, java.lang.Object right)
left
- right
- public static BinaryExpression notEqualTo(java.lang.Object left, Expression right)
left
- right
- public static BinaryExpression notEqualTo(java.lang.Object left, java.lang.Object right)
left
- right
- public static BinaryExpression greaterThan(Expression left, Expression right)
left
- right
- public static BinaryExpression greaterThan(Expression left, java.lang.Object right)
left
- right
- public static BinaryExpression greaterThan(java.lang.Object left, Expression right)
left
- right
- public static BinaryExpression greaterThan(java.lang.Object left, java.lang.Object right)
left
- right
- public static BinaryExpression greaterThanOrEqualTo(Expression left, Expression right)
left
- right
- public static BinaryExpression greaterThanOrEqualTo(Expression left, java.lang.Object right)
left
- right
- public static BinaryExpression greaterThanOrEqualTo(java.lang.Object left, Expression right)
left
- right
- public static BinaryExpression greaterThanOrEqualTo(java.lang.Object left, java.lang.Object right)
left
- right
- public static BinaryExpression lessThan(Expression left, Expression right)
left
- right
- public static BinaryExpression lessThan(Expression left, java.lang.Object right)
left
- right
- public static BinaryExpression lessThan(java.lang.Object left, Expression right)
left
- right
- public static BinaryExpression lessThan(java.lang.Object left, java.lang.Object right)
left
- right
- public static BinaryExpression lessThanOrEqualTo(Expression left, Expression right)
left
- right
- public static BinaryExpression lessThanOrEqualTo(Expression left, java.lang.Object right)
left
- right
- public static BinaryExpression lessThanOrEqualTo(java.lang.Object left, Expression right)
left
- right
- public static BinaryExpression lessThanOrEqualTo(java.lang.Object left, java.lang.Object right)
left
- right
- public static BinaryExpression and(Expression left, Expression right)
left
- right
- public static BinaryExpression and(Expression left, java.lang.Boolean right)
left
- right
- public static BinaryExpression and(java.lang.Boolean left, Expression right)
left
- right
- public static BinaryExpression and(java.lang.Boolean left, java.lang.Boolean right)
left
- right
- public static BinaryExpression or(Expression left, Expression right)
left
- right
- public static BinaryExpression or(Expression left, java.lang.Boolean right)
left
- right
- public static BinaryExpression or(java.lang.Boolean left, Expression right)
left
- right
- public static BinaryExpression or(java.lang.Boolean left, java.lang.Boolean right)
left
- right
- public static UnaryExpression negate(Expression operand)
operand
- public static UnaryExpression negate(java.lang.Number operand)
operand
- public static UnaryExpression not(Expression operand)
operand
- public static UnaryExpression not(java.lang.Boolean operand)
operand
- public static Expression valueOf(java.lang.String value)
value
- The string representation of the expression.