Пример #1
0
 /** Attempt to convert a typed value to a boolean using the supplied type converter. */
 public static boolean toBoolean(TypeConverter typeConverter, TypedValue typedValue) {
   return (Boolean)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Boolean.class));
 }
Пример #2
0
 /** Attempt to convert a typed value to a float using the supplied type converter. */
 public static float toFloat(TypeConverter typeConverter, TypedValue typedValue) {
   return (Float)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Float.class));
 }
Пример #3
0
 /** Attempt to convert a typed value to an int using the supplied type converter. */
 public static int toInt(TypeConverter typeConverter, TypedValue typedValue) {
   return (Integer)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Integer.class));
 }
Пример #4
0
 /** Attempt to convert a typed value to a byte using the supplied type converter. */
 public static byte toByte(TypeConverter typeConverter, TypedValue typedValue) {
   return (Byte)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Byte.class));
 }
Пример #5
0
 /** Attempt to convert a typed value to a short using the supplied type converter. */
 public static short toShort(TypeConverter typeConverter, TypedValue typedValue) {
   return (Short)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Short.class));
 }
Пример #6
0
 /** Attempt to convert a typed value to a char using the supplied type converter. */
 public static char toChar(TypeConverter typeConverter, TypedValue typedValue) {
   return (Character)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Character.class));
 }
Пример #7
0
 /** Attempt to convert a typed value to a long using the supplied type converter. */
 public static long toLong(TypeConverter typeConverter, TypedValue typedValue) {
   return (Long)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Long.class));
 }
Пример #8
0
 /** Attempt to convert a typed value to a double using the supplied type converter. */
 public static double toDouble(TypeConverter typeConverter, TypedValue typedValue) {
   return (Double)
       typeConverter.convertValue(
           typedValue.getValue(),
           typedValue.getTypeDescriptor(),
           TypeDescriptor.valueOf(Double.class));
 }
 public Object convertValue(TypedValue value, TypeDescriptor targetTypeDescriptor)
     throws EvaluationException {
   Object val = value.getValue();
   return this.relatedContext
       .getTypeConverter()
       .convertValue(val, TypeDescriptor.forObject(val), targetTypeDescriptor);
 }
Пример #10
0
 /**
  * Compare the left operand to see it is an instance of the type specified as the right operand.
  * The right operand must be a class.
  *
  * @param state the expression state
  * @return true if the left operand is an instanceof of the right operand, otherwise false
  * @throws EvaluationException if there is a problem evaluating the expression
  */
 @Override
 public BooleanTypedValue getValueInternal(ExpressionState state) throws EvaluationException {
   TypedValue left = getLeftOperand().getValueInternal(state);
   TypedValue right = getRightOperand().getValueInternal(state);
   Object leftValue = left.getValue();
   Object rightValue = right.getValue();
   if (leftValue == null) {
     return BooleanTypedValue.FALSE; // null is not an instanceof anything
   }
   if (rightValue == null || !(rightValue instanceof Class<?>)) {
     throw new SpelEvaluationException(
         getRightOperand().getStartPosition(),
         SpelMessage.INSTANCEOF_OPERATOR_NEEDS_CLASS_OPERAND,
         (rightValue == null ? "null" : rightValue.getClass().getName()));
   }
   Class<?> rightClass = (Class<?>) rightValue;
   return BooleanTypedValue.forValue(rightClass.isAssignableFrom(leftValue.getClass()));
 }
Пример #11
0
 /**
  * Determines if there is a type converter available in the specified context and attempts to use
  * it to convert the supplied value to the specified type. Throws an exception if conversion is
  * not possible.
  *
  * @param context the evaluation context that may define a type converter
  * @param typedValue the value to convert and a type descriptor describing it
  * @param targetType the type to attempt conversion to
  * @return the converted value
  * @throws EvaluationException if there is a problem during conversion or conversion of the value
  *     to the specified type is not supported
  */
 @SuppressWarnings("unchecked")
 public static <T> T convertTypedValue(
     EvaluationContext context, TypedValue typedValue, Class<T> targetType) {
   Object value = typedValue.getValue();
   if ((targetType == null)
       || (value != null && ClassUtils.isAssignableValue(targetType, value))) {
     return (T) value;
   }
   if (context != null) {
     return (T)
         context
             .getTypeConverter()
             .convertValue(
                 value, typedValue.getTypeDescriptor(), TypeDescriptor.valueOf(targetType));
   }
   throw new EvaluationException(
       "Cannot convert value '" + value + "' to type '" + targetType.getName() + "'");
 }