Package ognl
Class OgnlOps
- java.lang.Object
-
- ognl.OgnlOps
-
- All Implemented Interfaces:
NumericTypes
public abstract class OgnlOps extends java.lang.Object implements NumericTypes
This is an abstract class with static methods that define the operations of OGNL.- Author:
- Luke Blanshard (blanshlu@netscape.net), Drew Davidson (drew@ognl.org)
-
-
Field Summary
-
Fields inherited from interface ognl.NumericTypes
BIGDEC, BIGINT, BOOL, BYTE, CHAR, DOUBLE, FLOAT, INT, LONG, MIN_REAL_TYPE, NONNUMERIC, SHORT
-
-
Constructor Summary
Constructors Constructor Description OgnlOps()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.Object
add(java.lang.Object v1, java.lang.Object v2)
static java.math.BigDecimal
bigDecValue(java.lang.Object value)
Evaluates the given object as a BigDecimal.static java.math.BigInteger
bigIntValue(java.lang.Object value)
Evaluates the given object as a BigInteger.static java.lang.Object
binaryAnd(java.lang.Object v1, java.lang.Object v2)
static java.lang.Object
binaryOr(java.lang.Object v1, java.lang.Object v2)
static java.lang.Object
binaryXor(java.lang.Object v1, java.lang.Object v2)
static java.lang.Object
bitNegate(java.lang.Object value)
static boolean
booleanValue(boolean value)
static boolean
booleanValue(double value)
static boolean
booleanValue(float value)
static boolean
booleanValue(int value)
static boolean
booleanValue(long value)
static boolean
booleanValue(java.lang.Object value)
Evaluates the given object as a boolean: if it is a Boolean object, it's easy; if it's a Number or a Character, returns true for non-zero objects; and otherwise returns true for non-null objects.static java.lang.RuntimeException
castToRuntime(java.lang.Throwable t)
Utility method that converts incoming exceptions toRuntimeException
instances - or casts them if they already are.static int
compareWithConversion(java.lang.Object v1, java.lang.Object v2)
Compares two objects for equality, even if it has to convert one of them to the other type.static java.lang.Object
convertValue(boolean value, java.lang.Class toType)
static java.lang.Object
convertValue(boolean value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
convertValue(byte value, java.lang.Class toType)
static java.lang.Object
convertValue(byte value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
convertValue(char value, java.lang.Class toType)
static java.lang.Object
convertValue(char value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
convertValue(double value, java.lang.Class toType)
static java.lang.Object
convertValue(double value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
convertValue(float value, java.lang.Class toType)
static java.lang.Object
convertValue(float value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
convertValue(int value, java.lang.Class toType)
static java.lang.Object
convertValue(int value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
convertValue(long value, java.lang.Class toType)
static java.lang.Object
convertValue(long value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
convertValue(java.lang.Object value, java.lang.Class toType)
Returns the value converted numerically to the given class type This method also detects when arrays are being converted and converts the components of one array to the type of the other.static java.lang.Object
convertValue(java.lang.Object value, java.lang.Class toType, boolean preventNulls)
static java.lang.Object
divide(java.lang.Object v1, java.lang.Object v2)
static double
doubleValue(java.lang.Object value)
Evaluates the given object as a double-precision floating-point number.static boolean
equal(java.lang.Object v1, java.lang.Object v2)
static java.lang.String
getEscapedChar(char ch)
static java.lang.String
getEscapeString(java.lang.String value)
static int
getIntValue(java.lang.Object value)
Converts the specified value to a primitive integer value.static int
getNumericType(int t1, int t2, boolean canBeNonNumeric)
Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given types.static int
getNumericType(java.lang.Object value)
Returns a constant from the NumericTypes interface that represents the numeric type of the given object.static int
getNumericType(java.lang.Object v1, java.lang.Object v2)
Returns the constant from the NumericTypes interface that best expresses the type of a numeric operation on the two given objects.static int
getNumericType(java.lang.Object v1, java.lang.Object v2, boolean canBeNonNumeric)
Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given objects.static boolean
greater(java.lang.Object v1, java.lang.Object v2)
static boolean
in(java.lang.Object v1, java.lang.Object v2)
static boolean
isEqual(java.lang.Object object1, java.lang.Object object2)
Returns true if object1 is equal to object2 in either the sense that they are the same object or, if both are non-null if they are equal in theequals()
sense.static boolean
less(java.lang.Object v1, java.lang.Object v2)
static long
longValue(java.lang.Object value)
Evaluates the given object as a long integer.static java.lang.Object
multiply(java.lang.Object v1, java.lang.Object v2)
static java.lang.Object
negate(java.lang.Object value)
static java.lang.Number
newInteger(int type, long value)
Returns a new Number object of an appropriate type to hold the given integer value.static java.lang.Number
newReal(int type, double value)
Returns a new Number object of an appropriate type to hold the given real value.static java.lang.Object
remainder(java.lang.Object v1, java.lang.Object v2)
static java.lang.Object
returnValue(java.lang.Object ignore, java.lang.Object returnValue)
static java.lang.Object
shiftLeft(java.lang.Object v1, java.lang.Object v2)
static java.lang.Object
shiftRight(java.lang.Object v1, java.lang.Object v2)
static java.lang.String
stringValue(java.lang.Object value)
Evaluates the given object as a String.static java.lang.String
stringValue(java.lang.Object value, boolean trim)
Evaluates the given object as a String and trims it if the trim flag is true.static java.lang.Object
subtract(java.lang.Object v1, java.lang.Object v2)
static java.lang.Object
toArray(boolean value, java.lang.Class toType)
static java.lang.Object
toArray(boolean value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
toArray(byte value, java.lang.Class toType)
static java.lang.Object
toArray(byte value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
toArray(char value, java.lang.Class toType)
static java.lang.Object
toArray(char value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
toArray(double value, java.lang.Class toType)
static java.lang.Object
toArray(double value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
toArray(float value, java.lang.Class toType)
static java.lang.Object
toArray(float value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
toArray(int value, java.lang.Class toType)
static java.lang.Object
toArray(int value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
toArray(long value, java.lang.Class toType)
static java.lang.Object
toArray(long value, java.lang.Class toType, boolean preventNull)
static java.lang.Object
toArray(java.lang.Object value, java.lang.Class toType)
static java.lang.Object
toArray(java.lang.Object value, java.lang.Class toType, boolean preventNulls)
static java.lang.Object
unsignedShiftRight(java.lang.Object v1, java.lang.Object v2)
-
-
-
Method Detail
-
compareWithConversion
public static int compareWithConversion(java.lang.Object v1, java.lang.Object v2)
Compares two objects for equality, even if it has to convert one of them to the other type. If both objects are numeric they are converted to the widest type and compared. If one is non-numeric and one is numeric the non-numeric is converted to double and compared to the double numeric value. If both are non-numeric and Comparable and the types are compatible (i.e. v1 is of the same or superclass of v2's type) they are compared with Comparable.compareTo(). If both values are non-numeric and not Comparable or of incompatible classes this will throw and IllegalArgumentException.- Parameters:
v1
- First value to comparev2
- second value to compare- Returns:
- integer describing the comparison between the two objects. A negative number indicates that v1 < v2. Positive indicates that v1 > v2. Zero indicates v1 == v2.
- Throws:
java.lang.IllegalArgumentException
- if the objects are both non-numeric yet of incompatible types or do not implement Comparable.
-
isEqual
public static boolean isEqual(java.lang.Object object1, java.lang.Object object2)
Returns true if object1 is equal to object2 in either the sense that they are the same object or, if both are non-null if they are equal in theequals()
sense.- Parameters:
object1
- First object to compareobject2
- Second object to compare- Returns:
- true if v1 == v2
-
booleanValue
public static boolean booleanValue(boolean value)
-
booleanValue
public static boolean booleanValue(int value)
-
booleanValue
public static boolean booleanValue(float value)
-
booleanValue
public static boolean booleanValue(long value)
-
booleanValue
public static boolean booleanValue(double value)
-
booleanValue
public static boolean booleanValue(java.lang.Object value)
Evaluates the given object as a boolean: if it is a Boolean object, it's easy; if it's a Number or a Character, returns true for non-zero objects; and otherwise returns true for non-null objects.- Parameters:
value
- an object to interpret as a boolean- Returns:
- the boolean value implied by the given object
-
longValue
public static long longValue(java.lang.Object value) throws java.lang.NumberFormatException
Evaluates the given object as a long integer.- Parameters:
value
- an object to interpret as a long integer- Returns:
- the long integer value implied by the given object
- Throws:
java.lang.NumberFormatException
- if the given object can't be understood as a long integer
-
doubleValue
public static double doubleValue(java.lang.Object value) throws java.lang.NumberFormatException
Evaluates the given object as a double-precision floating-point number.- Parameters:
value
- an object to interpret as a double- Returns:
- the double value implied by the given object
- Throws:
java.lang.NumberFormatException
- if the given object can't be understood as a double
-
bigIntValue
public static java.math.BigInteger bigIntValue(java.lang.Object value) throws java.lang.NumberFormatException
Evaluates the given object as a BigInteger.- Parameters:
value
- an object to interpret as a BigInteger- Returns:
- the BigInteger value implied by the given object
- Throws:
java.lang.NumberFormatException
- if the given object can't be understood as a BigInteger
-
bigDecValue
public static java.math.BigDecimal bigDecValue(java.lang.Object value) throws java.lang.NumberFormatException
Evaluates the given object as a BigDecimal.- Parameters:
value
- an object to interpret as a BigDecimal- Returns:
- the BigDecimal value implied by the given object
- Throws:
java.lang.NumberFormatException
- if the given object can't be understood as a BigDecimal
-
stringValue
public static java.lang.String stringValue(java.lang.Object value, boolean trim)
Evaluates the given object as a String and trims it if the trim flag is true.- Parameters:
value
- an object to interpret as a String- Returns:
- the String value implied by the given object as returned by the toString() method, or "null" if the object is null.
-
stringValue
public static java.lang.String stringValue(java.lang.Object value)
Evaluates the given object as a String.- Parameters:
value
- an object to interpret as a String- Returns:
- the String value implied by the given object as returned by the toString() method, or "null" if the object is null.
-
getNumericType
public static int getNumericType(java.lang.Object value)
Returns a constant from the NumericTypes interface that represents the numeric type of the given object.- Parameters:
value
- an object that needs to be interpreted as a number- Returns:
- the appropriate constant from the NumericTypes interface
-
toArray
public static java.lang.Object toArray(char value, java.lang.Class toType)
-
toArray
public static java.lang.Object toArray(byte value, java.lang.Class toType)
-
toArray
public static java.lang.Object toArray(int value, java.lang.Class toType)
-
toArray
public static java.lang.Object toArray(long value, java.lang.Class toType)
-
toArray
public static java.lang.Object toArray(float value, java.lang.Class toType)
-
toArray
public static java.lang.Object toArray(double value, java.lang.Class toType)
-
toArray
public static java.lang.Object toArray(boolean value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(char value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(byte value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(int value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(long value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(float value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(double value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(boolean value, java.lang.Class toType)
-
convertValue
public static java.lang.Object convertValue(char value, java.lang.Class toType, boolean preventNull)
-
convertValue
public static java.lang.Object convertValue(byte value, java.lang.Class toType, boolean preventNull)
-
convertValue
public static java.lang.Object convertValue(int value, java.lang.Class toType, boolean preventNull)
-
convertValue
public static java.lang.Object convertValue(long value, java.lang.Class toType, boolean preventNull)
-
convertValue
public static java.lang.Object convertValue(float value, java.lang.Class toType, boolean preventNull)
-
convertValue
public static java.lang.Object convertValue(double value, java.lang.Class toType, boolean preventNull)
-
convertValue
public static java.lang.Object convertValue(boolean value, java.lang.Class toType, boolean preventNull)
-
toArray
public static java.lang.Object toArray(char value, java.lang.Class toType, boolean preventNull)
-
toArray
public static java.lang.Object toArray(byte value, java.lang.Class toType, boolean preventNull)
-
toArray
public static java.lang.Object toArray(int value, java.lang.Class toType, boolean preventNull)
-
toArray
public static java.lang.Object toArray(long value, java.lang.Class toType, boolean preventNull)
-
toArray
public static java.lang.Object toArray(float value, java.lang.Class toType, boolean preventNull)
-
toArray
public static java.lang.Object toArray(double value, java.lang.Class toType, boolean preventNull)
-
toArray
public static java.lang.Object toArray(boolean value, java.lang.Class toType, boolean preventNull)
-
convertValue
public static java.lang.Object convertValue(java.lang.Object value, java.lang.Class toType)
Returns the value converted numerically to the given class type This method also detects when arrays are being converted and converts the components of one array to the type of the other.- Parameters:
value
- an object to be converted to the given typetoType
- class type to be converted to- Returns:
- converted value of the type given, or value if the value cannot be converted to the given type.
-
toArray
public static java.lang.Object toArray(java.lang.Object value, java.lang.Class toType)
-
toArray
public static java.lang.Object toArray(java.lang.Object value, java.lang.Class toType, boolean preventNulls)
-
convertValue
public static java.lang.Object convertValue(java.lang.Object value, java.lang.Class toType, boolean preventNulls)
-
getIntValue
public static int getIntValue(java.lang.Object value)
Converts the specified value to a primitive integer value.- Null values will cause a -1 to be returned.
Number
instances have their intValue() methods invoked.- All other types result in calling Integer.parseInt(value.toString());
- Parameters:
value
- The object to get the value of.- Returns:
- A valid integer.
-
getNumericType
public static int getNumericType(java.lang.Object v1, java.lang.Object v2)
Returns the constant from the NumericTypes interface that best expresses the type of a numeric operation on the two given objects.- Parameters:
v1
- one argument to a numeric operatorv2
- the other argument- Returns:
- the appropriate constant from the NumericTypes interface
-
getNumericType
public static int getNumericType(int t1, int t2, boolean canBeNonNumeric)
Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given types.- Parameters:
t1
- type of one argument to an operatort2
- type of the other argumentcanBeNonNumeric
- whether the operator can be interpreted as non-numeric- Returns:
- the appropriate constant from the NumericTypes interface
-
getNumericType
public static int getNumericType(java.lang.Object v1, java.lang.Object v2, boolean canBeNonNumeric)
Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given objects.- Parameters:
v1
- one argument to an operatorv2
- the other argumentcanBeNonNumeric
- whether the operator can be interpreted as non-numeric- Returns:
- the appropriate constant from the NumericTypes interface
-
newInteger
public static java.lang.Number newInteger(int type, long value)
Returns a new Number object of an appropriate type to hold the given integer value. The type of the returned object is consistent with the given type argument, which is a constant from the NumericTypes interface.- Parameters:
type
- the nominal numeric type of the result, a constant from the NumericTypes interfacevalue
- the integer value to convert to a Number object- Returns:
- a Number object with the given value, of type implied by the type argument
-
newReal
public static java.lang.Number newReal(int type, double value)
Returns a new Number object of an appropriate type to hold the given real value. The type of the returned object is always either Float or Double, and is only Float if the given type tag (a constant from the NumericTypes interface) is FLOAT.- Parameters:
type
- the nominal numeric type of the result, a constant from the NumericTypes interfacevalue
- the real value to convert to a Number object- Returns:
- a Number object with the given value, of type implied by the type argument
-
binaryOr
public static java.lang.Object binaryOr(java.lang.Object v1, java.lang.Object v2)
-
binaryXor
public static java.lang.Object binaryXor(java.lang.Object v1, java.lang.Object v2)
-
binaryAnd
public static java.lang.Object binaryAnd(java.lang.Object v1, java.lang.Object v2)
-
equal
public static boolean equal(java.lang.Object v1, java.lang.Object v2)
-
less
public static boolean less(java.lang.Object v1, java.lang.Object v2)
-
greater
public static boolean greater(java.lang.Object v1, java.lang.Object v2)
-
in
public static boolean in(java.lang.Object v1, java.lang.Object v2) throws OgnlException
- Throws:
OgnlException
-
shiftLeft
public static java.lang.Object shiftLeft(java.lang.Object v1, java.lang.Object v2)
-
shiftRight
public static java.lang.Object shiftRight(java.lang.Object v1, java.lang.Object v2)
-
unsignedShiftRight
public static java.lang.Object unsignedShiftRight(java.lang.Object v1, java.lang.Object v2)
-
add
public static java.lang.Object add(java.lang.Object v1, java.lang.Object v2)
-
subtract
public static java.lang.Object subtract(java.lang.Object v1, java.lang.Object v2)
-
multiply
public static java.lang.Object multiply(java.lang.Object v1, java.lang.Object v2)
-
divide
public static java.lang.Object divide(java.lang.Object v1, java.lang.Object v2)
-
remainder
public static java.lang.Object remainder(java.lang.Object v1, java.lang.Object v2)
-
negate
public static java.lang.Object negate(java.lang.Object value)
-
bitNegate
public static java.lang.Object bitNegate(java.lang.Object value)
-
getEscapeString
public static java.lang.String getEscapeString(java.lang.String value)
-
getEscapedChar
public static java.lang.String getEscapedChar(char ch)
-
returnValue
public static java.lang.Object returnValue(java.lang.Object ignore, java.lang.Object returnValue)
-
castToRuntime
public static java.lang.RuntimeException castToRuntime(java.lang.Throwable t)
Utility method that converts incoming exceptions toRuntimeException
instances - or casts them if they already are.- Parameters:
t
- The exception to cast.- Returns:
- The exception cast to a
RuntimeException
.
-
-