Class ELSupport
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic BooleancoerceToBoolean(ELContext ctx, Object obj, boolean primitive) Convert an object to Boolean.static Enum<?> coerceToEnum(ELContext ctx, Object obj, Class type) Coerces an object to an Enum value of the specified type.static NumbercoerceToNumber(ELContext ctx, Object obj, Class<?> type) Coerces an object to a Number of the specified type.protected static NumbercoerceToNumber(Number number, Class<?> type) Coerces a Number to the specified numeric type.protected static NumbercoerceToNumber(String val, Class<?> type) Coerces a String to a Number of the specified type.static StringcoerceToString(ELContext ctx, Object obj) Coerce an object to a string.static <T> TcoerceToType(ELContext ctx, Object obj, Class<T> type) Coerces an object to the specified target type.static intCompare two objects, after coercing to the same type if appropriate.static booleanCompare two objects for equality, after coercing to the same type if appropriate.static booleanisBigDecimalOp(Object obj0, Object obj1) Checks if either operand is a BigDecimal.static booleanisBigIntegerOp(Object obj0, Object obj1) Checks if either operand is a BigInteger.static booleanisDoubleOp(Object obj0, Object obj1) Checks if either operand is a Double or Float.static booleanChecks if either operand is a Long, Integer, Character, Short, or Byte.static booleanisStringFloat(String str) Checks if a string represents a floating-point number by looking for 'E', 'e', or '.' characters.
-
Field Details
-
COERCE_TO_ZERO
protected static final boolean COERCE_TO_ZERO
-
-
Method Details
-
compare
Compare two objects, after coercing to the same type if appropriate.If the objects are identical, or they are equal according to
equals(ELContext, Object, Object)then return 0.If either object is a BigDecimal, then coerce both to BigDecimal first. Similarly for Double(Float), BigInteger, and Long(Integer, Char, Short, Byte).
Otherwise, check that the first object is an instance of Comparable, and compare against the second object. If that is null, return 1, otherwise return the result of comparing against the second object.
Similarly, if the second object is Comparable, if the first is null, return -1, else return the result of comparing against the first object.
A null object is considered as:
- ZERO when compared with Numbers
- the empty string for String compares
- Otherwise null is considered to be lower than anything else.
- Parameters:
ctx- the context in which this comparison is taking placeobj0- first objectobj1- second object- Returns:
- -1, 0, or 1 if this object is less than, equal to, or greater than val.
- Throws:
ELException- if neither object is ComparableClassCastException- if the objects are not mutually comparable
-
equals
Compare two objects for equality, after coercing to the same type if appropriate.If the objects are identical (including both null) return true.
If either object is null, return false.
If either object is Boolean, coerce both to Boolean and check equality.
Similarly for Enum, String, BigDecimal, Double(Float), Long(Integer, Short, Byte, Character)
Otherwise default to using Object.equals().
- Parameters:
ctx- the context in which this equality test is taking placeobj0- the first objectobj1- the second object- Returns:
- true if the objects are equal
- Throws:
ELException- if one of the coercion fails
-
coerceToEnum
Coerces an object to an Enum value of the specified type.If the object is null or an empty string, null is returned. If the object is already an instance of the target enum type, it is returned directly. Otherwise, the object must be a String matching one of the enum constant names.
- Parameters:
ctx- the EL contextobj- the object to coercetype- the target enum type- Returns:
- the coerced enum value, or null if the object is null or empty
- Throws:
ELException- if the object cannot be coerced to the target enum type
-
coerceToBoolean
public static Boolean coerceToBoolean(ELContext ctx, Object obj, boolean primitive) throws ELException Convert an object to Boolean. Null and empty string are false.- Parameters:
ctx- the context in which this conversion is taking placeobj- the object to convertprimitive- is the target a primitive in which case coercion to null is not permitted- Returns:
- the Boolean value of the object
- Throws:
ELException- if object is not Boolean or String
-
coerceToNumber
Coerces a Number to the specified numeric type.- Parameters:
number- the number to coercetype- the target numeric type- Returns:
- the coerced number
- Throws:
ELException- if the number cannot be coerced to the target type
-
coerceToNumber
Coerces an object to a Number of the specified type.Supports coercion from String, Number, and Character types. If the object is null and the target type is not primitive, null is returned (unless COERCE_TO_ZERO is set).
- Parameters:
ctx- the EL contextobj- the object to coercetype- the target numeric type- Returns:
- the coerced number, or null if the object is null and the target is not primitive
- Throws:
ELException- if the object cannot be coerced to the target type
-
coerceToNumber
Coerces a String to a Number of the specified type.- Parameters:
val- the string value to parsetype- the target numeric type- Returns:
- the coerced number
- Throws:
ELException- if the string cannot be parsed as the target type
-
coerceToString
-
coerceToType
Coerces an object to the specified target type.Supports coercion to String, Number, Character, Boolean, Enum, Instant, Date, arrays, and functional interfaces. Uses the ELResolver's convertToType method first if a context is provided.
- Type Parameters:
T- the target type- Parameters:
ctx- the EL contextobj- the object to coercetype- the target type- Returns:
- the coerced object, or null if the object is null and the target is not primitive
- Throws:
ELException- if the object cannot be coerced to the target type
-
isBigDecimalOp
-
isBigIntegerOp
-
isDoubleOp
-
isLongOp
-
isStringFloat
Checks if a string represents a floating-point number by looking for 'E', 'e', or '.' characters.- Parameters:
str- the string to check- Returns:
- true if the string contains floating-point notation
-