@SuppressWarnings("unchecked") private Y getValue(X target, boolean nullSafe) { initialize(); try { Object leafObj = getLeafObject(target, nullSafe); final Method getter = leafGetter == null && leafObj != null ? ReflectionUtils .getGetter( leafObj.getClass(), explodedPropertyPath[explodedPropertyPath.length - 1]) : leafGetter; return nullSafe && leafObj == null ? null : (Y) getter .invoke(leafObj); } catch (RuntimeException ex) { throw ex; } catch (Exception ex) { throw new RuntimeException(ex); } }
current = ReflectionUtils.getGetter(current.getClass(), properties[i]).invoke(current);
ViewAttributeAccessor(EntityViewManagerImpl evm, MethodAttribute<?, ?> attribute, boolean readonly) { Class<?> clazz = attribute.getDeclaringType().getJavaType(); Method getter = ReflectionUtils.getGetter(clazz, attribute.getName()); if (!Modifier.isPublic(getter.getModifiers()) || !Modifier.isPublic(getter.getDeclaringClass().getModifiers())) { try { getter.setAccessible(true); } catch (Exception e) { throw new RuntimeException("Couldn't make method for entity view attribute accessible for reading!", e); } } this.getter = getter; if (readonly) { this.field = null; } else { Class<?> proxyClass = evm.getProxyFactory().getProxy(evm, (ManagedViewTypeImplementor<Object>) attribute.getDeclaringType(), null); Field f = ReflectionUtils.getField(proxyClass, attribute.getName()); try { f.setAccessible(true); } catch (Exception e) { throw new RuntimeException("Couldn't make field for entity view attribute accessible for writing!", e); } this.field = f; } }
Method getter = ReflectionUtils.getGetter(t.getJavaType(), attribute.getName()); getter.setAccessible(true); getters[i][j++] = getter;
private Class<? extends Serializable> resolvePropertyType(Class<?> baseClazz, String property) { Class<?> clazz = baseClazz; String[] propertyParts = property.split("\\."); for (int i = 0; i < propertyParts.length; i++) { Method getter = ReflectionUtils.getGetter(clazz, propertyParts[i]); if (getter == null) { Field field = ReflectionUtils.getField(clazz, propertyParts[i]); if (field == null) { throw new IllegalArgumentException("Couldn't find property '" + propertyParts[i] + "' on type '" + clazz + "' while resolving path '" + property + "' on type '" + baseClazz + "'"); } Class<?>[] typeArguments = ReflectionUtils.getResolvedFieldTypeArguments(clazz, field); if (typeArguments.length == 0) { clazz = ReflectionUtils.getResolvedFieldType(clazz, field); } else { clazz = typeArguments[typeArguments.length - 1]; } } else { Class<?>[] typeArguments = ReflectionUtils.getResolvedMethodReturnTypeArguments(clazz, getter); if (typeArguments.length == 0) { clazz = ReflectionUtils.getResolvedMethodReturnType(clazz, getter); } else { clazz = typeArguments[typeArguments.length - 1]; } } } return (Class<? extends Serializable>) clazz; }
private Class<? extends Serializable> resolvePropertyType(Class<?> baseClazz, String property) { Class<?> clazz = baseClazz; String[] propertyParts = property.split("\\."); for (int i = 0; i < propertyParts.length; i++) { Method getter = ReflectionUtils.getGetter(clazz, propertyParts[i]); if (getter == null) { Field field = ReflectionUtils.getField(clazz, propertyParts[i]); if (field == null) { throw new IllegalArgumentException("Couldn't find property '" + propertyParts[i] + "' on type '" + clazz + "' while resolving path '" + property + "' on type '" + baseClazz + "'"); } Class<?>[] typeArguments = ReflectionUtils.getResolvedFieldTypeArguments(clazz, field); if (typeArguments.length == 0) { clazz = ReflectionUtils.getResolvedFieldType(clazz, field); } else { clazz = typeArguments[typeArguments.length - 1]; } } else { Class<?>[] typeArguments = ReflectionUtils.getResolvedMethodReturnTypeArguments(clazz, getter); if (typeArguments.length == 0) { clazz = ReflectionUtils.getResolvedMethodReturnType(clazz, getter); } else { clazz = typeArguments[typeArguments.length - 1]; } } } return (Class<? extends Serializable>) clazz; }
private Class<? extends Serializable> resolvePropertyType(Class<?> baseClazz, String property) { Class<?> clazz = baseClazz; String[] propertyParts = property.split("\\."); for (int i = 0; i < propertyParts.length; i++) { Method getter = ReflectionUtils.getGetter(clazz, propertyParts[i]); if (getter == null) { Field field = ReflectionUtils.getField(clazz, propertyParts[i]); if (field == null) { throw new IllegalArgumentException("Couldn't find property '" + propertyParts[i] + "' on type '" + clazz + "' while resolving path '" + property + "' on type '" + baseClazz + "'"); } Class<?>[] typeArguments = ReflectionUtils.getResolvedFieldTypeArguments(clazz, field); if (typeArguments.length == 0) { clazz = ReflectionUtils.getResolvedFieldType(clazz, field); } else { clazz = typeArguments[typeArguments.length - 1]; } } else { Class<?>[] typeArguments = ReflectionUtils.getResolvedMethodReturnTypeArguments(clazz, getter); if (typeArguments.length == 0) { clazz = ReflectionUtils.getResolvedMethodReturnType(clazz, getter); } else { clazz = typeArguments[typeArguments.length - 1]; } } } return (Class<? extends Serializable>) clazz; }
Method getter = ReflectionUtils.getGetter(viewType, attributeName);
private static AttributeAccessor forEntityAttribute(EntityViewManagerImpl evm, Class<?> entityClass, Attribute<?, ?> attribute, Class<?> targetType) { Member member = attribute.getJavaMember(); if (member instanceof Field) { return new EntityFieldAttributeAccessor(evm.getJpaProvider(), (Field) member, targetType); } else if (member instanceof Method) { Method getter = ReflectionUtils.getGetter(entityClass, attribute.getName()); Method setter = ReflectionUtils.getSetter(entityClass, attribute.getName()); return new EntityMethodAttributeAccessor(getter, setter, targetType); } else { throw new IllegalArgumentException("Unsupported java member for id attribute: " + member); } } }