Package ognl

Class OgnlOps

java.lang.Object
ognl.OgnlOps
All Implemented Interfaces:
NumericTypes

public abstract class OgnlOps extends 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)
  • Constructor Details

    • OgnlOps

      public OgnlOps()
  • Method Details

    • compareWithConversion

      public static int compareWithConversion(Object v1, 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 compare
      v2 - 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:
      IllegalArgumentException - if the objects are both non-numeric yet of incompatible types or do not implement Comparable.
    • isEqual

      public static boolean isEqual(Object object1, 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 the equals() sense.
      Parameters:
      object1 - First object to compare
      object2 - 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(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(Object value) throws 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:
      NumberFormatException - if the given object can't be understood as a long integer
    • doubleValue

      public static double doubleValue(Object value) throws 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:
      NumberFormatException - if the given object can't be understood as a double
    • bigIntValue

      public static BigInteger bigIntValue(Object value) throws 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:
      NumberFormatException - if the given object can't be understood as a BigInteger
    • bigDecValue

      public static BigDecimal bigDecValue(Object value) throws 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:
      NumberFormatException - if the given object can't be understood as a BigDecimal
    • stringValue

      public static String stringValue(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 String stringValue(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(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 Object toArray(char value, Class toType)
    • toArray

      public static Object toArray(byte value, Class toType)
    • toArray

      public static Object toArray(int value, Class toType)
    • toArray

      public static Object toArray(long value, Class toType)
    • toArray

      public static Object toArray(float value, Class toType)
    • toArray

      public static Object toArray(double value, Class toType)
    • toArray

      public static Object toArray(boolean value, Class toType)
    • convertValue

      public static Object convertValue(char value, Class toType)
    • convertValue

      public static Object convertValue(byte value, Class toType)
    • convertValue

      public static Object convertValue(int value, Class toType)
    • convertValue

      public static Object convertValue(long value, Class toType)
    • convertValue

      public static Object convertValue(float value, Class toType)
    • convertValue

      public static Object convertValue(double value, Class toType)
    • convertValue

      public static Object convertValue(boolean value, Class toType)
    • convertValue

      public static Object convertValue(char value, Class toType, boolean preventNull)
    • convertValue

      public static Object convertValue(byte value, Class toType, boolean preventNull)
    • convertValue

      public static Object convertValue(int value, Class toType, boolean preventNull)
    • convertValue

      public static Object convertValue(long value, Class toType, boolean preventNull)
    • convertValue

      public static Object convertValue(float value, Class toType, boolean preventNull)
    • convertValue

      public static Object convertValue(double value, Class toType, boolean preventNull)
    • convertValue

      public static Object convertValue(boolean value, Class toType, boolean preventNull)
    • toArray

      public static Object toArray(char value, Class toType, boolean preventNull)
    • toArray

      public static Object toArray(byte value, Class toType, boolean preventNull)
    • toArray

      public static Object toArray(int value, Class toType, boolean preventNull)
    • toArray

      public static Object toArray(long value, Class toType, boolean preventNull)
    • toArray

      public static Object toArray(float value, Class toType, boolean preventNull)
    • toArray

      public static Object toArray(double value, Class toType, boolean preventNull)
    • toArray

      public static Object toArray(boolean value, Class toType, boolean preventNull)
    • convertValue

      public static Object convertValue(Object value, 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 type
      toType - 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 Object toArray(Object value, Class toType)
    • toArray

      public static Object toArray(Object value, Class toType, boolean preventNulls)
    • convertValue

      public static Object convertValue(Object value, Class toType, boolean preventNulls)
    • getIntValue

      public static int getIntValue(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(Object v1, 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 operator
      v2 - 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 operator
      t2 - type of the other argument
      canBeNonNumeric - whether the operator can be interpreted as non-numeric
      Returns:
      the appropriate constant from the NumericTypes interface
    • getNumericType

      public static int getNumericType(Object v1, 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 operator
      v2 - the other argument
      canBeNonNumeric - whether the operator can be interpreted as non-numeric
      Returns:
      the appropriate constant from the NumericTypes interface
    • newInteger

      public static 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 interface
      value - 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 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 interface
      value - 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 Object binaryOr(Object v1, Object v2)
    • binaryXor

      public static Object binaryXor(Object v1, Object v2)
    • binaryAnd

      public static Object binaryAnd(Object v1, Object v2)
    • equal

      public static boolean equal(Object v1, Object v2)
    • less

      public static boolean less(Object v1, Object v2)
    • greater

      public static boolean greater(Object v1, Object v2)
    • in

      public static boolean in(Object v1, Object v2) throws OgnlException
      Throws:
      OgnlException
    • shiftLeft

      public static Object shiftLeft(Object v1, Object v2)
    • shiftRight

      public static Object shiftRight(Object v1, Object v2)
    • unsignedShiftRight

      public static Object unsignedShiftRight(Object v1, Object v2)
    • add

      public static Object add(Object v1, Object v2)
    • subtract

      public static Object subtract(Object v1, Object v2)
    • multiply

      public static Object multiply(Object v1, Object v2)
    • divide

      public static Object divide(Object v1, Object v2)
    • remainder

      public static Object remainder(Object v1, Object v2)
    • negate

      public static Object negate(Object value)
    • bitNegate

      public static Object bitNegate(Object value)
    • getEscapeString

      public static String getEscapeString(String value)
    • getEscapedChar

      public static String getEscapedChar(char ch)
    • returnValue

      public static Object returnValue(Object ignore, Object returnValue)
    • castToRuntime

      public static RuntimeException castToRuntime(Throwable t)
      Utility method that converts incoming exceptions to RuntimeException instances - or casts them if they already are.
      Parameters:
      t - The exception to cast.
      Returns:
      The exception cast to a RuntimeException.