public MapProp(String name, Object key, Class<?> type) { this.name = name; this.key = key; this.type = type; this.typeKind = Cls.kindOf(type); }
public static boolean isBeanType(Class<?> clazz) { return clazz != null && clazz != Object.class && kindOf(clazz) == TypeKind.UNKNOWN && (!clazz.getName().startsWith("java.") || clazz.getName().startsWith("java.lang.management.")) && (!clazz.getName().startsWith("javax.") || clazz.getName().startsWith("javax.management.")) && !clazz.isAnnotation() && !clazz.isEnum() && !clazz.isInterface() && !(Collection.class.isAssignableFrom(clazz)) && !(Map.class.isAssignableFrom(clazz)) && !(Object[].class.isAssignableFrom(clazz)); }
protected Collection<?> getOptionsOfType(Class<?> clazz) { if (Cls.kindOf(clazz) == TypeKind.UNKNOWN && Beany.hasProperty(clazz, "id")) { return Collections.EMPTY_LIST; // FIXME use magic? } else { return Collections.EMPTY_LIST; } }
@Override public R dispatch(T context, Object value) { TypeKind kind = Cls.kindOf(value); return dispatch(context, kind, value); }
public static boolean isSimple(Object target) { return kindOf(target).isConcrete(); }
public static boolean isNumber(Object target) { return kindOf(target).isNumber(); }
protected Collection<?> getPropertyOptions(Property prop) { Class<?> type = prop.type(); if (type.isEnum()) { return U.list(type.getEnumConstants()); } if (Collection.class.isAssignableFrom(type)) { return getCollectionPropertyOptions(prop); } if (Cls.kindOf(type) == TypeKind.UNKNOWN) { return Collections.EMPTY_LIST; } return null; }
protected FieldType getPropertyFieldType(Property prop) { Class<?> type = prop.type(); if (type == Boolean.class || type == boolean.class) { return FieldType.CHECKBOX; } if (type.isEnum()) { return type.getEnumConstants().length <= 3 ? FieldType.RADIOS : FieldType.DROPDOWN; } if (prop.name().toLowerCase().contains("email")) { return FieldType.EMAIL; } if (Collection.class.isAssignableFrom(type)) { return FieldType.MULTI_SELECT; } if (Cls.kindOf(type) == TypeKind.UNKNOWN) { return FieldType.DROPDOWN; } return FieldType.TEXT; }
@Override public Void dispatch(ByteBuffer buf, Object value) { TypeKind kind = Cls.kindOf(value); buf.put(Msc.sbyte(Ser.code(kind))); return dispatch(buf, kind, value); }
TypeKind targetKind = Cls.kindOf(toType);
public static void read(Object bean, Map<String, Object> dest) { U.notNull(bean, "bean"); U.must(!(bean instanceof Collection)); U.must(!bean.getClass().isArray()); U.must(!bean.getClass().isEnum()); U.must(Cls.kindOf(bean) == TypeKind.UNKNOWN); for (Prop prop : propertiesOf(bean)) { Object value = prop.getRaw(bean); if (value instanceof SerializableBean<?>) { SerializableBean<?> ser = (SerializableBean<?>) value; value = ser.serializeBean(); } else { value = serialize(unwrap(value)); } dest.put(prop.getName(), value); } }
public static Object serialize(Object value) { if (Cls.kindOf(value) != TypeKind.UNKNOWN || value instanceof Enum) { return value;
@Override public List<String> getManageableProperties() { BeanProperties props = Beany.propertiesOf(source()); List<String> ps = U.list(); for (Prop prop : props) { if (!prop.getName().contains("manageable")) { TypeKind kind = Cls.kindOf(prop.getType()); if (kind.isPrimitive() || kind.isNumber() || kind.isArray() || kind == TypeKind.STRING || kind == TypeKind.DATE) { ps.add(prop.getName()); } } } return ps; }
TypeKind targetKind = Cls.kindOf(toType); boolean isNum = value instanceof Number;
return new BeanParamRetriever(customization, type, name, valid != null); } else if (Cls.kindOf(type).isConcrete()) { return new DataParamRetriever(type, name, required != null);
public MapProp(String name, Object key, Class<?> type) { this.name = name; this.key = key; this.type = type; this.typeKind = Cls.kindOf(type); }
public void delete(Object record) { U.argMust(Cls.kindOf(record) == TypeKind.OBJECT, "Invalid record type: %s", Cls.of(record)); delete(Beany.getLongId(record)); }
public static void read(Object bean, Map<String, Object> dest) { U.notNull(bean, "bean"); U.must(!(bean instanceof Collection)); U.must(!bean.getClass().isArray()); U.must(!bean.getClass().isEnum()); U.must(Cls.kindOf(bean) == TypeKind.OBJECT); for (Prop prop : propertiesOf(bean)) { Object value = prop.getRaw(bean); if (value instanceof SerializableBean<?>) { SerializableBean<?> ser = (SerializableBean<?>) value; value = ser.serializeBean(); } else { value = serialize(unwrap(value)); } dest.put(prop.getName(), value); } }