Example usage for org.springframework.beans TypeMismatchException getErrorCode

List of usage examples for org.springframework.beans TypeMismatchException getErrorCode

Introduction

In this page you can find the example usage for org.springframework.beans TypeMismatchException getErrorCode.

Prototype

@Override
    public String getErrorCode() 

Source Link

Usage

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;
        }//from  w  ww  .j  a  v a2  s. c om
        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;
}