/** 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)); }
/** 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)); }
/** 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)); }
/** 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)); }
/** 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)); }
/** 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)); }
/** 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)); }
/** 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); }
/** * 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())); }
/** * 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() + "'"); }