Example usage for org.springframework.beans TypeConverter convertIfNecessary

List of usage examples for org.springframework.beans TypeConverter convertIfNecessary

Introduction

In this page you can find the example usage for org.springframework.beans TypeConverter convertIfNecessary.

Prototype

@Nullable
<T> T convertIfNecessary(@Nullable Object value, @Nullable Class<T> requiredType) throws TypeMismatchException;

Source Link

Document

Convert the value to the required type (if necessary from a String).

Usage

From source file:com.laxser.blitz.web.paramresolver.ResolverFactoryImpl.java

@SuppressWarnings("unchecked")
private static Object resolveArray(Invocation inv, ParamMetaData metaData, Class<?> compnentType) {
    if (compnentType == MultipartFile.class) {
        String filterName = metaData.getParamName();
        if (filterName == null) {
            filterName = "";
        }//from  w ww.  j a va  2  s.c o  m
        if (inv.getRequest() instanceof MultipartRequest) {
            List<MultipartFile> files = new LinkedList<MultipartFile>();
            MultipartRequest multipartRequest = (MultipartRequest) inv.getRequest();
            Iterator<String> names = multipartRequest.getFileNames();
            while (names.hasNext()) {
                String name = names.next();
                if (name.startsWith(filterName)) {
                    files.add(multipartRequest.getFile(name));
                }
            }
            return files.toArray(new MultipartFile[0]);
        } else {
            if (logger.isDebugEnabled()) {
                logger.debug("cann't " + "set MultipartFile param to method "
                        + ", the request is not a MultipartRequest");
            }
        }
    } else {
        Object toConvert = null;
        for (String paramName : metaData.getParamNames()) {
            if (paramName != null) {
                toConvert = inv.getRequest().getParameterValues(paramName);
                if (toConvert != null) {
                    break;
                }
            }
        }
        if (toConvert != null) {
            if (((String[]) toConvert).length == 1) {
                toConvert = ((String[]) toConvert)[0].split(",");
            }
            Class<?> arrayType;
            if (metaData.getParamType().isArray()) {
                arrayType = metaData.getParamType();
            } else {
                arrayType = arrayTypeMap.get(compnentType);
                if (arrayType == null) {
                    arrayType = Array.newInstance((Class<?>) compnentType, 0).getClass();
                }
            }
            TypeConverter typeConverter = SafedTypeConverterFactory.getCurrentConverter();
            Object array = typeConverter.convertIfNecessary(toConvert, arrayType);
            return array;
        }
    }
    return Array.newInstance((Class<?>) compnentType, 0);
}

From source file:com.opensymphony.able.action.JpaCrudActionBeanTest.java

@Test
public void testIntrospection() throws Exception {
    Person bug = new Person();

    DataBinder binder = new DataBinder(bug);
    MutablePropertyValues propertyValues = new MutablePropertyValues();
    propertyValues.addPropertyValue("id", "123456");
    binder.bind(propertyValues);//  w  ww  .ja v  a  2s .  com

    Assert.assertEquals(new Integer(123456), bug.getId());

    TypeConverter typeConverter = new BeanWrapperImpl();
    Object value = typeConverter.convertIfNecessary("123456", Integer.class);
    Assert.assertEquals(new Integer(123456), value);
}

From source file:com.alibaba.citrus.service.requestcontext.session.valueencoder.AbstractSessionValueEncoder.java

protected final Object convertToType(Class<?> type, String encodedValue, TypeConverter converter) {
    if (type != null && !type.equals(String.class)) {
        return converter.convertIfNecessary(encodedValue, type);
    } else {/*w w  w  .  ja v a2 s  .  co  m*/
        return encodedValue;
    }
}

From source file:com.laxser.blitz.web.paramresolver.MethodParameterResolver.java

public Object[] resolve(final Invocation inv, final ParameterBindingResult parameterBindingResult)
        throws Exception {
    Object[] parameters = new Object[paramMetaDatas.length];
    for (int i = 0; i < resolvers.length; i++) {
        if (resolvers[i] == null) {
            continue;
        }/*  ww w. j  a v  a 2  s . c o m*/
        try {
            if (logger.isDebugEnabled()) {
                logger.debug("Resolves parameter " + paramMetaDatas[i].getParamType().getSimpleName()
                        + " using " + resolvers[i].getClass().getName());
            }
            parameters[i] = resolvers[i].resolve(inv, paramMetaDatas[i]);
            // afterPropertiesSet
            if (parameters[i] instanceof InitializingBean) {
                ((InitializingBean) parameters[i]).afterPropertiesSet();
            }
        } catch (TypeMismatchException e) {
            // ???bean???

            logger.debug("", e);

            // ???
            if (paramMetaDatas[i].getParamType().isPrimitive()) {
                DefValue defValudeAnnotation = paramMetaDatas[i].getAnnotation(DefValue.class);
                if (defValudeAnnotation == null
                        || DefValue.NATIVE_DEFAULT.equals(defValudeAnnotation.value())) {
                    // ?if-else?converter???
                    if (paramMetaDatas[i].getParamType() == int.class) {
                        parameters[i] = Integer.valueOf(0);
                    } else if (paramMetaDatas[i].getParamType() == long.class) {
                        parameters[i] = Long.valueOf(0);
                    } else if (paramMetaDatas[i].getParamType() == boolean.class) {
                        parameters[i] = Boolean.FALSE;
                    } else if (paramMetaDatas[i].getParamType() == double.class) {
                        parameters[i] = Double.valueOf(0);
                    } else if (paramMetaDatas[i].getParamType() == float.class) {
                        parameters[i] = Float.valueOf(0);
                    } else {
                        TypeConverter typeConverter = SafedTypeConverterFactory.getCurrentConverter();
                        parameters[i] = typeConverter.convertIfNecessary("0", paramMetaDatas[i].getParamType());
                    }
                } else {
                    TypeConverter typeConverter = SafedTypeConverterFactory.getCurrentConverter();
                    parameters[i] = typeConverter.convertIfNecessary(defValudeAnnotation.value(),
                            paramMetaDatas[i].getParamType());
                }
            }
            // 
            String paramName = parameterNames[i];
            if (paramName == null) {
                for (String name : paramMetaDatas[i].getParamNames()) {
                    if ((paramName = name) != null) {
                        break;
                    }
                }
            }
            Assert.isTrue(paramName != null);
            FieldError fieldError = new FieldError(//
                    "method", // ????method
                    paramName, // ??????
                    inv.getParameter(paramName), // ?
                    true, //whether this error represents a binding failure (like a type mismatch); else, it is a validation failure
                    new String[] { e.getErrorCode() }, // "typeMismatch"
                    new String[] { inv.getParameter(paramName) }, //the array of arguments to be used to resolve this message
                    null // the default message to be used to resolve this message
            );
            parameterBindingResult.addError(fieldError);
        } catch (Exception e) {
            // ????
            logger.error("", e);
            throw e;
        }
    }
    return parameters;
}

From source file:org.impalaframework.extension.mvc.annotation.collector.RequestParameterArgumentCollector.java

public Object getArgument(NativeWebRequest request, ExtendedModelMap implicitModel,
        TypeConverter typeConverter) {
    String value = annotation.value();
    boolean required = annotation.required();

    String parameter = request.getParameter(value);

    /*//from  www  .j  a v  a  2s .  c  o m
    if (!StringUtils.hasText(parameter)) {
    parameter = annotation.defaultValue();
    }*/

    if (!StringUtils.hasText(parameter)) {
        if (required) {
            throw new IllegalArgumentException("Parameter '" + value + "' is required.");
        }
    }

    return typeConverter.convertIfNecessary(parameter, type);
}

From source file:com.surveypanel.form.Form.java

/**
 * Convert the given value from one type to another using the converter assigned to the given FormElement.
 *
 * @param question The FormElement/*from ww w.  j  av a2  s . com*/
 * @param value The value
 * @param locale The locale
 * @return The new typed object
 * @throws Exception Any exception
 */
protected Object convert(QuestionImpl question, Object value, Locale locale) throws Exception {
    if (value == null) {
        return null;
    }

    TypeConverter typeConverter = new SimpleTypeConverter();

    if (typeConverter != null) {
        if (log.isDebugEnabled())
            log.debug("Converting " + value + " of type " + value.getClass() + " using "
                    + typeConverter.getClass());
        value = typeConverter.convertIfNecessary(value, null);
        if (log.isDebugEnabled()) {
            log.debug("New value: " + value);
            log.debug("New type: " + value.getClass());
        }
    }
    return value;
}

From source file:com.alibaba.citrus.service.form.impl.condition.JexlCondition.java

public boolean isSatisfied(final Context context) {
    TypeConverter converter = context.getField().getGroup().getForm().getTypeConverter();
    ExpressionContext expressionContext = new MessageContext() {
        @Override/* w ww . j a  v a2s  .  com*/
        protected Object internalGet(String key) {
            return null;
        }

        @Override
        public ExpressionContext getParentContext() {
            return context.getMessageContext();
        }

        @Override
        protected void buildToString(ToStringBuilder sb) {
            sb.append("JexlConditionContext");
        }

        @Override
        protected void buildToString(MapBuilder mb) {
        }
    };

    Object value = condition.evaluate(expressionContext);

    if (value == null) {
        return false;
    } else if (value instanceof Boolean) {
        return (Boolean) value;
    } else {
        return (Boolean) converter.convertIfNecessary(value, Boolean.class);
    }
}