Example usage for org.springframework.beans SimpleTypeConverter SimpleTypeConverter

List of usage examples for org.springframework.beans SimpleTypeConverter SimpleTypeConverter

Introduction

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

Prototype

public SimpleTypeConverter() 

Source Link

Usage

From source file:com.conversantmedia.mapreduce.tool.DistributedResourceManager.java

public static void setFieldValue(Field field, Object bean, Object value) throws IllegalAccessException {
    // Set it on the field
    field.setAccessible(true);/*from w  w  w.  j av a 2 s  .  c  o m*/

    // Perform type conversion if possible..
    SimpleTypeConverter converter = new SimpleTypeConverter();
    try {
        value = converter.convertIfNecessary(value, field.getType());
    } catch (ConversionNotSupportedException e) {
        // If conversion isn't supported, ignore and try and set anyway.
    }
    field.set(bean, value);
}

From source file:org.uimafit.factory.ConfigurationParameterFactory.java

/**
 * Convert a value so it can be injected into a UIMA component. UIMA only supports several
 * parameter types. If the value is not of these types, this method can be used to coerce the
 * value into a supported type (typically String). It is also used to convert primitive
 * arrays to object arrays when necessary.
 * /*from   www  . j  a  va  2  s.  c o m*/
 * @param param the configuration parameter.
 * @param aValue the parameter value.
 * @return the converted value.
 */
protected static Object convertParameterValue(ConfigurationParameter param, Object aValue) {
    Object value = aValue;
    if (value.getClass().isArray() && value.getClass().getComponentType().getName().equals("boolean")) {
        value = ArrayUtils.toObject((boolean[]) value);
    } else if (value.getClass().isArray() && value.getClass().getComponentType().getName().equals("int")) {
        value = ArrayUtils.toObject((int[]) value);
    } else if (value.getClass().isArray() && value.getClass().getComponentType().getName().equals("float")) {
        value = ArrayUtils.toObject((float[]) value);
    } else {
        try {
            if (param.getType().equals(ConfigurationParameter.TYPE_STRING)) {
                SimpleTypeConverter converter = new SimpleTypeConverter();
                PropertyEditorUtil.registerUimaFITEditors(converter);
                if (value.getClass().isArray() || value instanceof Collection) {
                    value = converter.convertIfNecessary(value, String[].class);
                } else {
                    value = converter.convertIfNecessary(value, String.class);
                }
            }
        } catch (TypeMismatchException e) {
            throw new IllegalArgumentException(e.getMessage(), e);
        }
    }

    return value;
}

From source file:com.fengduo.bee.commons.component.FormModelMethodArgumentResolver.java

/**
 * {@inheritDoc}//from  ww  w .  j  ava  2s .  c  o  m
 * <p>
 * Downcast {@link org.springframework.web.bind.WebDataBinder} to
 * {@link org.springframework.web.bind.ServletRequestDataBinder} before binding.
 * 
 * @throws Exception
 * @see org.springframework.web.servlet.mvc.method.annotation.ServletRequestDataBinderFactory
 */
protected void bindRequestParameters(ModelAndViewContainer mavContainer, WebDataBinderFactory binderFactory,
        WebDataBinder binder, NativeWebRequest request, MethodParameter parameter) throws Exception {

    // Map<String, Boolean> hasProcessedPrefixMap = new HashMap<String, Boolean>();
    //
    // Class<?> targetType = binder.getTarget().getClass();
    // WebDataBinder simpleBinder = binderFactory.createBinder(request, null, null);
    Collection target = (Collection) binder.getTarget();

    Class<?>[] paramTypes = parameter.getMethod().getParameterTypes();
    Method method = parameter.getMethod();
    Object[] args = new Object[paramTypes.length];
    Map<String, Object> argMap = new HashMap<String, Object>(args.length);
    MapBindingResult errors = new MapBindingResult(argMap, "");
    ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();

    for (int i = 0; i < paramTypes.length; i++) {
        Class<?> paramType = paramTypes[i];

        MethodParameter methodParam = new MethodParameter(method, i);
        methodParam.initParameterNameDiscovery(parameterNameDiscoverer);
        String paramName = methodParam.getParameterName();
        // ??
        if (BeanUtils.isSimpleProperty(paramType)) {
            SimpleTypeConverter converter = new SimpleTypeConverter();
            Object value;
            // ?
            if (paramType.isArray()) {
                value = request.getParameterValues(paramName);
            } else {
                value = request.getParameter(paramName);
            }
            try {
                args[i] = converter.convertIfNecessary(value, paramType, methodParam);
            } catch (TypeMismatchException e) {
                errors.addError(new FieldError(paramName, paramName, e.getMessage()));
            }
        } else {
            // ???POJO
            if (paramType.isArray()) {
                ObjectArrayDataBinder binders = new ObjectArrayDataBinder(paramType.getComponentType(),
                        paramName);
                target.addAll(ArrayUtils.arrayConvert(binders.bind(request)));
            }
        }
    }

    // if (Collection.class.isAssignableFrom(targetType)) {// bind collection or array
    //
    // Type type = parameter.getGenericParameterType();
    // Class<?> componentType = Object.class;
    //
    // Collection target = (Collection) binder.getTarget();
    //
    // List targetList = new ArrayList(target);
    //
    // if (type instanceof ParameterizedType) {
    // componentType = (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[0];
    // }
    //
    // if (parameter.getParameterType().isArray()) {
    // componentType = parameter.getParameterType().getComponentType();
    // }
    //
    // for (Object key : servletRequest.getParameterMap().keySet()) {
    // String prefixName = getPrefixName((String) key);
    //
    // // ?prefix ??
    // if (hasProcessedPrefixMap.containsKey(prefixName)) {
    // continue;
    // } else {
    // hasProcessedPrefixMap.put(prefixName, Boolean.TRUE);
    // }
    //
    // if (isSimpleComponent(prefixName)) { // bind simple type
    // Map<String, Object> paramValues = WebUtils.getParametersStartingWith(servletRequest, prefixName);
    // Matcher matcher = INDEX_PATTERN.matcher(prefixName);
    // if (!matcher.matches()) { // ? array=1&array=2
    // for (Object value : paramValues.values()) {
    // targetList.add(simpleBinder.convertIfNecessary(value, componentType));
    // }
    // } else { // ? array[0]=1&array[1]=2
    // int index = Integer.valueOf(matcher.group(1));
    //
    // if (targetList.size() <= index) {
    // growCollectionIfNecessary(targetList, index);
    // }
    // targetList.set(index, simpleBinder.convertIfNecessary(paramValues.values(), componentType));
    // }
    // } else { // ? votes[1].title=votes[1].title&votes[0].title=votes[0].title&votes[0].id=0&votes[1].id=1
    // Object component = null;
    // // ? ?????
    // Matcher matcher = INDEX_PATTERN.matcher(prefixName);
    // if (!matcher.matches()) {
    // throw new IllegalArgumentException("bind collection error, need integer index, key:" + key);
    // }
    // int index = Integer.valueOf(matcher.group(1));
    // if (targetList.size() <= index) {
    // growCollectionIfNecessary(targetList, index);
    // }
    // Iterator iterator = targetList.iterator();
    // for (int i = 0; i < index; i++) {
    // iterator.next();
    // }
    // component = iterator.next();
    //
    // if (component == null) {
    // component = BeanUtils.instantiate(componentType);
    // }
    //
    // WebDataBinder componentBinder = binderFactory.createBinder(request, component, null);
    // component = componentBinder.getTarget();
    //
    // if (component != null) {
    // ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(
    // servletRequest,
    // prefixName,
    // "");
    // componentBinder.bind(pvs);
    // validateIfApplicable(componentBinder, parameter);
    // if (componentBinder.getBindingResult().hasErrors()) {
    // if (isBindExceptionRequired(componentBinder, parameter)) {
    // throw new BindException(componentBinder.getBindingResult());
    // }
    // }
    // targetList.set(index, component);
    // }
    // }
    // target.clear();
    // target.addAll(targetList);
    // }
    // } else if (MapWapper.class.isAssignableFrom(targetType)) {
    //
    // Type type = parameter.getGenericParameterType();
    // Class<?> keyType = Object.class;
    // Class<?> valueType = Object.class;
    //
    // if (type instanceof ParameterizedType) {
    // keyType = (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[0];
    // valueType = (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[1];
    // }
    //
    // MapWapper mapWapper = ((MapWapper) binder.getTarget());
    // Map target = mapWapper.getInnerMap();
    // if (target == null) {
    // target = new HashMap();
    // mapWapper.setInnerMap(target);
    // }
    //
    // for (Object key : servletRequest.getParameterMap().keySet()) {
    // String prefixName = getPrefixName((String) key);
    //
    // // ?prefix ??
    // if (hasProcessedPrefixMap.containsKey(prefixName)) {
    // continue;
    // } else {
    // hasProcessedPrefixMap.put(prefixName, Boolean.TRUE);
    // }
    //
    // Object keyValue = simpleBinder.convertIfNecessary(getMapKey(prefixName), keyType);
    //
    // if (isSimpleComponent(prefixName)) { // bind simple type
    // Map<String, Object> paramValues = WebUtils.getParametersStartingWith(servletRequest, prefixName);
    //
    // for (Object value : paramValues.values()) {
    // target.put(keyValue, simpleBinder.convertIfNecessary(value, valueType));
    // }
    // } else {
    //
    // Object component = target.get(keyValue);
    // if (component == null) {
    // component = BeanUtils.instantiate(valueType);
    // }
    //
    // WebDataBinder componentBinder = binderFactory.createBinder(request, component, null);
    // component = componentBinder.getTarget();
    //
    // if (component != null) {
    // ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(
    // servletRequest,
    // prefixName,
    // "");
    // componentBinder.bind(pvs);
    //
    // validateComponent(componentBinder, parameter);
    //
    // target.put(keyValue, component);
    // }
    // }
    // }
    // } else {// bind model
    // ServletRequestDataBinder servletBinder = (ServletRequestDataBinder) binder;
    // servletBinder.bind(servletRequest);
    // }
}

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//ww w  .  ja v  a 2s.c  om
 * @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.ms.commons.summer.web.handler.DataBinderUtil.java

/**
 * ?/*from w w w .j av  a  2s  . c om*/
 * 
 * @param method
 * @param model
 * @param request
 * @param response
 * @param c
 * @return
 */
@SuppressWarnings("unchecked")
public static Object[] getArgs(Method method, Map<String, Object> model, HttpServletRequest request,
        HttpServletResponse response, Class<?> c) {
    Class<?>[] paramTypes = method.getParameterTypes();
    Object[] args = new Object[paramTypes.length];
    Map<String, Object> argMap = new HashMap<String, Object>(args.length);
    Map<String, String> pathValues = null;
    PathPattern pathPattern = method.getAnnotation(PathPattern.class);
    if (pathPattern != null) {
        String path = request.getRequestURI();
        int index = path.lastIndexOf('.');
        if (index != -1) {
            path = path.substring(0, index);
            String[] patterns = pathPattern.patterns();
            pathValues = getPathValues(patterns, path);
        }
    }
    MapBindingResult errors = new MapBindingResult(argMap, "");
    ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
    for (int i = 0; i < paramTypes.length; i++) {
        Class<?> paramType = paramTypes[i];

        MethodParameter methodParam = new MethodParameter(method, i);
        methodParam.initParameterNameDiscovery(parameterNameDiscoverer);
        GenericTypeResolver.resolveParameterType(methodParam, c.getClass());

        String paramName = methodParam.getParameterName();
        // map
        if (Map.class.isAssignableFrom(paramType)) {
            args[i] = model;
        }
        // HttpServletRequest
        else if (HttpServletRequest.class.isAssignableFrom(paramType)) {
            args[i] = request;
        }
        // HttpServletResponse
        else if (HttpServletResponse.class.isAssignableFrom(paramType)) {
            args[i] = response;
        }
        // HttpSession
        else if (HttpSession.class.isAssignableFrom(paramType)) {
            args[i] = request.getSession();
        }
        // Errors
        else if (Errors.class.isAssignableFrom(paramType)) {
            args[i] = errors;
        }
        // MultipartFile
        else if (MultipartFile.class.isAssignableFrom(paramType)) {
            MultipartFile[] files = resolveMultipartFiles(request, errors, paramName);
            if (files != null && files.length > 0) {
                args[i] = files[0];
            }
        }
        // MultipartFile[]
        else if (MultipartFile[].class.isAssignableFrom(paramType)) {
            args[i] = resolveMultipartFiles(request, errors, paramName);
        } else {
            // ??
            if (BeanUtils.isSimpleProperty(paramType)) {
                SimpleTypeConverter converter = new SimpleTypeConverter();
                Object value;
                // ?
                if (paramType.isArray()) {
                    value = request.getParameterValues(paramName);
                } else {
                    Object[] parameterAnnotations = methodParam.getParameterAnnotations();
                    value = null;
                    if (parameterAnnotations != null && parameterAnnotations.length > 0) {
                        if (pathValues != null && pathValues.size() > 0) {
                            for (Object object : parameterAnnotations) {
                                if (PathVariable.class.isInstance(object)) {
                                    PathVariable pv = (PathVariable) object;
                                    if (StringUtils.isEmpty(pv.value())) {
                                        value = pathValues.get(paramName);
                                    } else {
                                        value = pathValues.get(pv.value());
                                    }
                                    break;
                                }
                            }
                        }
                    } else {
                        value = request.getParameter(paramName);
                    }
                }
                try {
                    args[i] = converter.convertIfNecessary(value, paramType, methodParam);
                    model.put(paramName, args[i]);
                } catch (TypeMismatchException e) {
                    errors.addError(new FieldError(paramName, paramName, e.getMessage()));
                }
            } else {
                // ???POJO
                if (paramType.isArray()) {
                    ObjectArrayDataBinder binder = new ObjectArrayDataBinder(paramType.getComponentType(),
                            paramName);
                    args[i] = binder.bind(request);
                    model.put(paramName, args[i]);
                } else {
                    Object bindObject = BeanUtils.instantiateClass(paramType);
                    SummerServletRequestDataBinder binder = new SummerServletRequestDataBinder(bindObject,
                            paramName);
                    binder.bind(request);
                    BindException be = new BindException(binder.getBindingResult());
                    List<FieldError> fieldErrors = be.getFieldErrors();
                    for (FieldError fieldError : fieldErrors) {
                        errors.addError(fieldError);
                    }
                    args[i] = binder.getTarget();
                    model.put(paramName, args[i]);
                }
            }
        }
    }
    return args;
}

From source file:org.dspace.servicemanager.config.DSpaceConfigurationService.java

/**
 * Convert the value of a given property to a specific object type.
 * <P>/*from   w w w  . j ava  2s  .  c om*/
 * Note: in most cases we can just use Configuration get*() methods.
 *
 * @param name Key of the property to convert
 * @param <T> object type
 * @return converted value
 */
private <T> T convert(String name, Class<T> type) {

    // If this key doesn't exist, just return null
    if (!configuration.containsKey(name)) {
        // Special case. For booleans, return false if key doesn't exist
        if (Boolean.class.equals(type) || boolean.class.equals(type))
            return (T) Boolean.FALSE;
        else
            return null;
    }

    // Based on the type of class, call the appropriate
    // method of the Configuration object
    if (type.isArray())
        return (T) configuration.getStringArray(name);
    else if (String.class.equals(type) || type.isAssignableFrom(String.class))
        return (T) configuration.getString(name);
    else if (BigDecimal.class.equals(type))
        return (T) configuration.getBigDecimal(name);
    else if (BigInteger.class.equals(type))
        return (T) configuration.getBigInteger(name);
    else if (Boolean.class.equals(type) || boolean.class.equals(type))
        return (T) Boolean.valueOf(configuration.getBoolean(name));
    else if (Byte.class.equals(type) || byte.class.equals(type))
        return (T) Byte.valueOf(configuration.getByte(name));
    else if (Double.class.equals(type) || double.class.equals(type))
        return (T) Double.valueOf(configuration.getDouble(name));
    else if (Float.class.equals(type) || float.class.equals(type))
        return (T) Float.valueOf(configuration.getFloat(name));
    else if (Integer.class.equals(type) || int.class.equals(type))
        return (T) Integer.valueOf(configuration.getInt(name));
    else if (List.class.equals(type))
        return (T) configuration.getList(name);
    else if (Long.class.equals(type) || long.class.equals(type))
        return (T) Long.valueOf(configuration.getLong(name));
    else if (Short.class.equals(type) || short.class.equals(type))
        return (T) Short.valueOf(configuration.getShort(name));
    else {
        // If none of the above works, try to convert the value to the required type
        SimpleTypeConverter converter = new SimpleTypeConverter();
        return (T) converter.convertIfNecessary(configuration.getProperty(name), type);
    }
}

From source file:org.springframework.beans.factory.config.AbstractFactoryBean.java

/**
 * Obtain a bean type converter from the BeanFactory that this bean
 * runs in. This is typically a fresh instance for each call,
 * since TypeConverters are usually <i>not</i> thread-safe.
 * <p>Falls back to a SimpleTypeConverter when not running in a BeanFactory.
 * @see ConfigurableBeanFactory#getTypeConverter()
 * @see org.springframework.beans.SimpleTypeConverter
 *//* www . j a  v  a2  s  .c  om*/
protected TypeConverter getBeanTypeConverter() {
    BeanFactory beanFactory = getBeanFactory();
    if (beanFactory instanceof ConfigurableBeanFactory) {
        return ((ConfigurableBeanFactory) beanFactory).getTypeConverter();
    } else {
        return new SimpleTypeConverter();
    }
}

From source file:org.springframework.faces.mvc.bind.ReverseDataBinder.java

/**
 * Gets the {@link SimpleTypeConverter} that should be used for conversion.
 * @return The simple type converter/*from   w  ww  . j a va  2  s  .  com*/
 */
protected SimpleTypeConverter getSimpleTypeConverter() {
    if (simpleTypeConverter == null) {
        simpleTypeConverter = new SimpleTypeConverter();
    }
    return simpleTypeConverter;
}

From source file:org.springframework.springfaces.mvc.bind.ReverseDataBinder.java

/**
 * Gets the {@link SimpleTypeConverter} that should be used for conversion.
 * @return the simple type converter//from   w w  w.j  a  va 2  s.c o m
 */
protected SimpleTypeConverter getSimpleTypeConverter() {
    if (this.simpleTypeConverter == null) {
        this.simpleTypeConverter = new SimpleTypeConverter();
    }
    return this.simpleTypeConverter;
}