|
|
|
@ -22,33 +22,34 @@ import org.springframework.expression.TypeUtils;
@@ -22,33 +22,34 @@ import org.springframework.expression.TypeUtils;
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Common utility functions that may be used by any Expression Language provider. |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @author Andy Clement |
|
|
|
|
*/ |
|
|
|
|
public class ExpressionUtils { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 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. |
|
|
|
|
* 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 value the value to convert (may be null) |
|
|
|
|
* @param toType 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 |
|
|
|
|
* @throws EvaluationException if there is a problem during conversion or conversion of the value to the specified |
|
|
|
|
* type is not supported |
|
|
|
|
*/ |
|
|
|
|
public static Object convert(EvaluationContext context, Object value, Class<?> toType) throws EvaluationException { |
|
|
|
|
if (value==null || toType.isAssignableFrom(value.getClass())) { |
|
|
|
|
if (value == null || toType == null || toType.isAssignableFrom(value.getClass())) { |
|
|
|
|
return value; |
|
|
|
|
} |
|
|
|
|
if (context!=null) { |
|
|
|
|
if (context != null) { |
|
|
|
|
TypeUtils typeUtils = context.getTypeUtils(); |
|
|
|
|
if (typeUtils != null) { |
|
|
|
|
TypeConverter typeConverter = typeUtils.getTypeConverter(); |
|
|
|
|
return typeConverter.convertValue(value,toType); |
|
|
|
|
return typeConverter.convertValue(value, toType); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
throw new EvaluationException("Cannot convert value '"+value+"' to type '"+toType.getName()+"'"); |
|
|
|
|
throw new EvaluationException("Cannot convert value '" + value + "' to type '" + toType.getName() + "'"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|