public static <T> T stringToValue(String str, Class<T> clazz, T defaultValue) { try { return stringToValue(str, clazz); } catch (Exception e) { return defaultValue; } }
public <T> T defaultValue(Class<T> clz) { return TypeUtils.stringToValue(defaultValue, clz); }
public <T> T value(Class<T> clz) { return TypeUtils.stringToValue(value(), clz); }
public Object toValue() { if (TypeUtils.isPrimitiveOrWrapper(type)) { return TypeUtils.stringToValue(value, type); } if (Date.class.isAssignableFrom(type)) { return new Date(value); } if (Timestamp.class.isAssignableFrom(type)) { return new Timestamp(new Date(value).getTime()); } throw new CloudRuntimeException(String.format("unknown type[%s]", type.getName())); }
private Object doNormalizeValue(String value) { try { Class entityType = getEntityFieldType(); if (Timestamp.class.isAssignableFrom(entityType)) { return Timestamp.valueOf(value); } else if (Enum.class.isAssignableFrom(entityType)) { Method valueOf = entityType.getMethod("valueOf", String.class); return valueOf.invoke(entityType, value); } else if (Boolean.class.isAssignableFrom(entityType) || Boolean.TYPE.isAssignableFrom(entityType)) { return Boolean.valueOf(value); } else { return TypeUtils.stringToValue(value, entityType); } } catch (Exception e) { throw new CloudRuntimeException(String.format("failed to parse value[%s], error: [%s]", value, e.getMessage()), e); } }
Object queryParameterToApiFieldValue(String name, String[] vals) throws RestException { Field f = allApiClassFields.get(name); if (f == null) { return null; } if (Collection.class.isAssignableFrom(f.getType())) { Class gtype = FieldUtils.getGenericType(f); List lst = new ArrayList(); for (String v : vals) { lst.add(TypeUtils.stringToValue(v, gtype)); } return lst; } else { if (vals.length > 1) { throw new RestException(HttpStatus.BAD_REQUEST.value(), String.format("Invalid query parameter[%s], only one value is allowed for the parameter but" + " multiple values found", name)); } return TypeUtils.stringToValue(vals[0], f.getType()); } } }
public void normalize() { if (type == null) { // means String, no need to normalize return; } // for bug: http://dev.zstack.io/browse/ZSTAC-8753 DebugUtils.Assert(value != null, String.format("value cannot be null, category: %s, name: %s", category, name)); try { Class clz = Class.forName(type); Object v = TypeUtils.stringToValue(value, clz); value = v.toString(); } catch (ClassNotFoundException e) { throw new CloudRuntimeException(e); } }
valueToSet = TypeUtils.stringToValue(value, Integer.class, 0); } else if (Long.class.isAssignableFrom(f.getType()) || Long.TYPE.isAssignableFrom(f.getType())) { valueToSet = TypeUtils.stringToValue(value, Long.class, 0L); } else if (Float.class.isAssignableFrom(f.getType()) || Float.TYPE.isAssignableFrom(f.getType())) { valueToSet = TypeUtils.stringToValue(value, Float.class, 0F); } else if (Double.class.isAssignableFrom(f.getType()) || Double.TYPE.isAssignableFrom(f.getType())) { valueToSet = TypeUtils.stringToValue(value, Double.class, 0D); } else if (String.class.isAssignableFrom(f.getType())) { valueToSet = value; } else if (Boolean.class.isAssignableFrom(f.getType()) || Boolean.TYPE.isAssignableFrom(f.getType())) { valueToSet = TypeUtils.stringToValue(value, Boolean.class); } else { throw new CloudRuntimeException(String.format("%s.%s of type[%s] is unsupported by global property. try use Platform.getGlobalProperty() and parse by yourself",