private <T extends Mergeable> void updateTag(T target, String tag, boolean remove) { if (tag != null) { if (remove) { target.removeMergeTag(tag); } else { target.addMergeTag(tag); } } }
private <T extends Mergeable> T updateMergeTags(T mergeable) throws MergerException { try { mergeable.setGenerated(true); BeanInfo beanInfo = Introspector.getBeanInfo(mergeable.getClass()); for (PropertyDescriptor propertyDescriptor : beanInfo.getPropertyDescriptors()) { Method readMethod = propertyDescriptor.getReadMethod(); Method writeMethod = propertyDescriptor.getWriteMethod(); Merge mergeAnnotation = findAnnotation(Merge.class, writeMethod, readMethod); if (mergeAnnotation != null) { mergeable.addMergeTag(mergeAnnotation.value()); } } } catch (IntrospectionException e) { throw new MergerException(e); } return mergeable; }