@Override public Class<?> validate(Class<?> parent, String property, Class<?> propertyType) { while (!parent.equals(Object.class)) { try { Field field = parent.getDeclaredField(property); if (Map.class.isAssignableFrom(field.getType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(field.getGenericType(), 1); } else if (Collection.class.isAssignableFrom(field.getType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(field.getGenericType(), 0); } else { return (Class) Primitives.wrap(field.getType()); } } catch (NoSuchFieldException e) { parent = parent.getSuperclass(); } } return null; } };
@Override public Class<?> validate(Class<?> parent, String property, Class<?> propertyType) { Method getter = BeanUtils.getAccessor("get", property, parent); if (getter == null && Primitives.wrap(propertyType).equals(Boolean.class)) { getter = BeanUtils.getAccessor("is", property, parent); } if (getter != null) { if (Map.class.isAssignableFrom(getter.getReturnType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(getter.getGenericReturnType(), 1); } else if (Collection.class.isAssignableFrom(getter.getReturnType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(getter.getGenericReturnType(), 0); } else { return (Class) Primitives.wrap(getter.getReturnType()); } } else { return null; } } };
@SuppressWarnings("rawtypes") private Type getGenericParameter(Class<?> cl, java.lang.reflect.Type genericType, int i) { java.lang.reflect.Type parameter = ReflectionUtils.getTypeParameter(genericType, i); if (parameter instanceof TypeVariable) { TypeVariable variable = (TypeVariable) parameter; Type rv = get(ReflectionUtils.getTypeParameterAsClass(genericType, i), null, parameter); return new TypeExtends(variable.getName(), rv); } else if (parameter instanceof WildcardType && ((WildcardType) parameter).getUpperBounds()[0].equals(Object.class) && ((WildcardType) parameter).getLowerBounds().length == 0) { return ANY; } else { Type rv = get(ReflectionUtils.getTypeParameterAsClass(genericType, i), null, parameter); if (parameter instanceof WildcardType) { rv = new TypeExtends(rv); } return rv; } }
Class<?> embeddableType = type; if (Collection.class.isAssignableFrom(type)) { embeddableType = ReflectionUtils.getTypeParameterAsClass(genericType, 0); } else if (Map.class.isAssignableFrom(type)) { embeddableType = ReflectionUtils.getTypeParameterAsClass(genericType, 1);
types.add(ReflectionUtils.getTypeParameterAsClass(field.getGenericType(), 0)); } else if (Map.class.isAssignableFrom(field.getType())) { types.add(ReflectionUtils.getTypeParameterAsClass(field.getGenericType(), 0)); types.add(ReflectionUtils.getTypeParameterAsClass(field.getGenericType(), 1));
Class<?> elementType = ReflectionUtils.getTypeParameterAsClass(genericType, 0); path = pathFactory.createSetPath(elementType, metadata); rv = aliasFactory.createAliasForProperty(type, path); Class<?> elementType = ReflectionUtils.getTypeParameterAsClass(genericType, 0); path = pathFactory.createCollectionPath(elementType, metadata); rv = aliasFactory.createAliasForProperty(type, path);
@Override public Class<?> validate(Class<?> parent, String property, Class<?> propertyType) { while (!parent.equals(Object.class)) { try { Field field = parent.getDeclaredField(property); if (Map.class.isAssignableFrom(field.getType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(field.getGenericType(), 1); } else if (Collection.class.isAssignableFrom(field.getType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(field.getGenericType(), 0); } else { return (Class) Primitives.wrap(field.getType()); } } catch (NoSuchFieldException e) { parent = parent.getSuperclass(); } } return null; } };
@Override public Class<?> validate(Class<?> parent, String property, Class<?> propertyType) { Method getter = BeanUtils.getAccessor("get", property, parent); if (getter == null && Primitives.wrap(propertyType).equals(Boolean.class)) { getter = BeanUtils.getAccessor("is", property, parent); } if (getter != null) { if (Map.class.isAssignableFrom(getter.getReturnType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(getter.getGenericReturnType(), 1); } else if (Collection.class.isAssignableFrom(getter.getReturnType())) { return (Class) ReflectionUtils.getTypeParameterAsClass(getter.getGenericReturnType(), 0); } else { return (Class) Primitives.wrap(getter.getReturnType()); } } else { return null; } } };
Class<?> elementType = ReflectionUtils.getTypeParameterAsClass(genericType, 0); path = pathFactory.createSetPath(elementType, metadata); rv = aliasFactory.createAliasForProperty(type, path); Class<?> elementType = ReflectionUtils.getTypeParameterAsClass(genericType, 0); path = pathFactory.createCollectionPath(elementType, metadata); rv = aliasFactory.createAliasForProperty(type, path);