@Nullable public static Method getGetterOrNull(Class<?> beanClass, String name) { Method method = getGetterOrNull(beanClass, name, Object.class); if (method != null) { return method; } else { return getGetterOrNull(beanClass, name, Boolean.class); } }
public static AnnotatedElement getAnnotatedElement(Class<?> beanClass, String propertyName, Class<?> propertyClass) { Field field = getFieldOrNull(beanClass, propertyName); Method method = getGetterOrNull(beanClass, propertyName, propertyClass); if (field == null || field.getAnnotations().length == 0) { return (method != null && method.getAnnotations().length > 0) ? method : EMPTY; } else if (method == null || method.getAnnotations().length == 0) { return field; } else { return new Annotations(field, method); } }
@Nullable public static Method getGetterOrNull(Class<?> beanClass, String name) { Method method = getGetterOrNull(beanClass, name, Object.class); if (method != null) { return method; } else { return getGetterOrNull(beanClass, name, Boolean.class); } }
public static AnnotatedElement getAnnotatedElement(Class<?> beanClass, String propertyName, Class<?> propertyClass) { Field field = getFieldOrNull(beanClass, propertyName); Method method = getGetterOrNull(beanClass, propertyName, propertyClass); if (field == null || field.getAnnotations().length == 0) { return (method != null && method.getAnnotations().length > 0) ? method : EMPTY; } else if (method == null || method.getAnnotations().length == 0) { return field; } else { return new Annotations(field, method); } }
protected AnnotatedElement getAnnotatedElement(Class<?> cl, String propertyName) throws NoSuchMethodException { Field field = ReflectionUtils.getFieldOrNull(cl, propertyName); Method method = ReflectionUtils.getGetterOrNull(cl, propertyName); if (field != null) { if (method != null) { return new Annotations(field, method); } else { return field; } } else if (method != null) { return method; } else { throw new IllegalArgumentException("No property found for " + cl.getName() + "." + propertyName); } }
protected Type getType(Class<?> cl, Class<?> mappedType, String propertyName) throws NoSuchMethodException { Field field = ReflectionUtils.getFieldOrNull(cl, propertyName); if (field != null) { if (mappedType.isAssignableFrom(field.getType())) { return typeFactory.get(field.getType(), field.getGenericType()); } else { return typeFactory.get(mappedType); } } else { Method method = ReflectionUtils.getGetterOrNull(cl, propertyName); if (method != null) { if (mappedType.isAssignableFrom(method.getReturnType())) { return typeFactory.get(method.getReturnType(), method.getGenericReturnType()); } else { return typeFactory.get(mappedType); } } else { throw new IllegalArgumentException("No property found for " + cl.getName() + "." + propertyName); } } }
/** * 使用实体作为主键值创建表达式。 */ @SuppressWarnings("unchecked") public static BooleanExpression beanKeyEquals(List<? extends Path<?>> keyPaths, Object bean) { Assert.notNull(bean, "Bean param missing"); Assert.notEmpty(keyPaths, "Key paths missing"); BooleanExpression equals = Expressions.FALSE; for (Path path : keyPaths) { String name = path.getMetadata().getName(); Method getter = ReflectionUtils.getGetterOrNull(bean.getClass(), name); Assert.notNull(getter, "Key property getter missing"); try { BooleanExpression keyEqual = ((SimpleExpression) path).eq(getter.invoke(bean)); equals = (equals == Expressions.FALSE ? keyEqual : equals.and(keyEqual)); } catch (ReflectiveOperationException e) { throw new RuntimeException(e); } } return equals; }