public static Method findSetter(Field field) { return findSetter(field.getName(), field.getDeclaringClass(), field.getType()); }
ReflectionFieldAccessor(Field field, Class<U> fieldType) { this.field = field; getter = ReflectionUtil.findGetter(field.getName(), field.getDeclaringClass(), fieldType); setter = ReflectionUtil.findSetter(field.getName(), field.getDeclaringClass(), fieldType); if (getter == null || setter == null) { field.setAccessible(true); } }
private static Class<?> determineType(Field field, Class<?> ownerType) { Method getter = ReflectionUtil.findGetter(field.getName(), ownerType); if (getter != null && getter.getReturnType() != null) { if (ReflectionUtil.findSetter(field.getName(), ownerType, getter.getReturnType()) != null) { return getter.getReturnType(); } } return field.getType(); }
public static <T> Binding<List<T>> bindBeanListProperty(String property, Object source, Class<T> propertyType) { Method getter = ReflectionUtil.findGetter(property, source.getClass(), List.class); Method setter = ReflectionUtil.findSetter(property, source.getClass(), List.class); if (getter == null || setter == null) { logger.warn("Failed to resolve property {} of type {} - is the getter or setter missing?", property, source.getClass()); return new DefaultBinding<>(); } return BeanBinding.create(source, getter, setter); }
public static <T> Binding<T> bindBeanProperty(String property, Object source, Class<T> propertyType) { Method getter = ReflectionUtil.findGetter(property, source.getClass(), propertyType); Method setter = ReflectionUtil.findSetter(property, source.getClass(), propertyType); if (getter == null || setter == null) { logger.warn("Failed to resolve property {} of type {} - is the getter or setter missing?", property, source.getClass()); return new DefaultBinding<>(); } return BeanBinding.create(source, getter, setter); }
public static <T, U> Binding<T> bindBoundBeanProperty(String property, Binding<U> source, Class<U> boundType, Class<T> propertyType) { Method getter = ReflectionUtil.findGetter(property, boundType, propertyType); Method setter = ReflectionUtil.findSetter(property, boundType, propertyType); if (getter == null || setter == null) { logger.warn("Failed to resolve property {} of type {} - is the getter or setter missing?", property, boundType); return new DefaultBinding<>(); } return BeanBinding.createBound(source, getter, setter); } }
ReflectASMFieldAccessor(Class<T> ownerType, Field field, Class<U> fieldType) throws InaccessibleFieldException { methodAccess = MethodAccess.get(ownerType); Method getter = ReflectionUtil.findGetter(field); if (getter != null) { getterIndex = methodAccess.getIndex(getter.getName()); } Method setter = ReflectionUtil.findSetter(field); if (setter != null) { setterIndex = methodAccess.getIndex(setter.getName()); } if (getterIndex == NO_METHOD || setterIndex == NO_METHOD) { fieldAccess = FieldAccess.get(ownerType); try { fieldIndex = fieldAccess.getIndex(field.getName()); } catch (IllegalArgumentException e) { throw new InaccessibleFieldException("Failed to create accessor for field '" + field.getName() + "' of type '" + ownerType.getName() + "'", e); } } }