List of usage examples for org.springframework.beans TypeConverter convertIfNecessary
@Nullable
<T> T convertIfNecessary(@Nullable Object value, @Nullable Class<T> requiredType) throws TypeMismatchException;
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); } }