/** * Extract all {@link PropertyDescriptor}s for properties with a getter (that does not come from * {@link Object} and does not accept parameters) and a setter. * * @param clazz The class to extract the desired {@link PropertyDescriptor}s from * @return All {@link PropertyDescriptor}s for properties with a getter (that does not come from * {@link Object} and does not accept parameters) and a setter. */ public static List<PropertyDescriptor> getPropertyDescriptorsWithGettersAndSetters(final Class<?> clazz) { final List<PropertyDescriptor> relevantDescriptors = new ArrayList<PropertyDescriptor>(); final List<PropertyDescriptor> propertyDescriptors = getPropertyDescriptorsWithGetters(clazz); for (final PropertyDescriptor propertyDescriptor : propertyDescriptors) { final Method setter = propertyDescriptor.getWriteMethod(); final boolean setterExists = setter != null; if (setterExists) { relevantDescriptors.add(propertyDescriptor); } } return relevantDescriptors; }
/** * Extract all {@link PropertyDescriptor}s for properties with a getter (that does not come from * {@link Object} and does not accept parameters) and a setter. * * @param clazz The class to extract the desired {@link PropertyDescriptor}s from * @return All {@link PropertyDescriptor}s for properties with a getter (that does not come from * {@link Object} and does not accept parameters) and a setter. */ public static List<PropertyDescriptor> getPropertyDescriptorsWithGettersAndSetters(final Class<?> clazz) { final List<PropertyDescriptor> relevantDescriptors = new ArrayList<PropertyDescriptor>(); final List<PropertyDescriptor> propertyDescriptors = getPropertyDescriptorsWithGetters(clazz); for (final PropertyDescriptor propertyDescriptor : propertyDescriptors) { final Method setter = propertyDescriptor.getWriteMethod(); final boolean setterExists = setter != null; if (setterExists) { relevantDescriptors.add(propertyDescriptor); } } return relevantDescriptors; }
private static List<PropertyDescriptor> merge(final Map<String, PropertyDescriptor> getters, final Map<String, PropertyDescriptor> setters) { final List<PropertyDescriptor> props = new ArrayList<PropertyDescriptor>(); final Set<String> processedProps = new HashSet<String>(); for (final String propertyName : getters.keySet()) { final PropertyDescriptor getter = getters.get(propertyName); final PropertyDescriptor setter = setters.get(propertyName); if (setter != null) { processedProps.add(propertyName); final PropertyDescriptor prop = new PropertyDescriptor(propertyName, getter.getReadMethod(), setter.getWriteMethod()); props.add(prop); } else { props.add(getter); } } final Set<String> writeOnlyProperties = new HashSet<String>(); writeOnlyProperties.removeAll(processedProps); for (final String propertyName : writeOnlyProperties) { final PropertyDescriptor setter = setters.get(propertyName); props.add(setter); } return props; }
private static List<PropertyDescriptor> merge(final Map<String, PropertyDescriptor> getters, final Map<String, PropertyDescriptor> setters) { final List<PropertyDescriptor> props = new ArrayList<PropertyDescriptor>(); final Set<String> processedProps = new HashSet<String>(); for (final String propertyName : getters.keySet()) { final PropertyDescriptor getter = getters.get(propertyName); final PropertyDescriptor setter = setters.get(propertyName); if (setter != null) { processedProps.add(propertyName); final PropertyDescriptor prop = new PropertyDescriptor(propertyName, getter.getReadMethod(), setter.getWriteMethod()); props.add(prop); } else { props.add(getter); } } final Set<String> writeOnlyProperties = new HashSet<String>(); writeOnlyProperties.removeAll(processedProps); for (final String propertyName : writeOnlyProperties) { final PropertyDescriptor setter = setters.get(propertyName); props.add(setter); } return props; }
public void copy(final Object target, final Object source) { try { final List<PropertyDescriptor> propertyDescriptors = BeanIntrospector.getPropertyDescriptorsWithGettersAndSetters(beanInterfaceClass); for (final PropertyDescriptor propertyDescriptor : propertyDescriptors) { final String propertyName = propertyDescriptor.getName(); if (baseInterfaceMap.containsKey(propertyName)) { final Method getter = propertyDescriptor.getReadMethod(); // only copies properties defined as copyFrom-able Object value = getter.invoke(source, NO_PARAMS); if (value != null) { final Method setter = propertyDescriptor.getWriteMethod(); final Class<?> baseInterface = baseInterfaceMap.get(propertyName); value = doCopy(value, baseInterface); setter.invoke(target, new Object[] { value }); } } } } catch (final Exception e) { LOG.error("Error while copying object", e); throw new RuntimeException("Could not do a copyFrom " + e, e); } }
public void copy(final Object target, final Object source) { try { final List<PropertyDescriptor> propertyDescriptors = BeanIntrospector.getPropertyDescriptorsWithGettersAndSetters(beanInterfaceClass); for (final PropertyDescriptor propertyDescriptor : propertyDescriptors) { final String propertyName = propertyDescriptor.getName(); if (baseInterfaceMap.containsKey(propertyName)) { final Method getter = propertyDescriptor.getReadMethod(); // only copies properties defined as copyFrom-able Object value = getter.invoke(source, NO_PARAMS); if (value != null) { final Method setter = propertyDescriptor.getWriteMethod(); final Class<?> baseInterface = baseInterfaceMap.get(propertyName); value = doCopy(value, baseInterface); setter.invoke(target, new Object[] { value }); } } } } catch (final Exception e) { LOG.error("Error while copying object", e); throw new RuntimeException("Could not do a copyFrom " + e, e); } }
final Method setter = propertyDescriptor.getWriteMethod();
final Method setter = propertyDescriptor.getWriteMethod();
pd.getWriteMethod().invoke(module, new Object[] {tagValue}); } else { final Object[] current = (Object[]) pd.getReadMethod().invoke(module, (Object[]) null); pd.getWriteMethod().invoke(module, new Object[] {setValue});
pd.getWriteMethod().invoke(module, new Object[] {tagValue}); } else { final Object[] current = (Object[]) pd.getReadMethod().invoke(module, (Object[]) null); pd.getWriteMethod().invoke(module, new Object[] {setValue});