private void importProperties(IPropertyHolder source, Object target, Class<?> stopClass, IPropertyFilter filter) { // local properties Map<String, Object> properties = BeanUtility.getProperties(source, stopClass, filter); if (!properties.isEmpty()) { removeNotSetProperties(source, properties); BeanUtility.setProperties(target, properties, false, null); } // properties of the extensions List<Object> allContributions = source.getAllContributions(); if (!allContributions.isEmpty()) { for (Object con : allContributions) { if (con instanceof IPropertyHolder) { IPropertyHolder data = (IPropertyHolder) con; Map<String, Object> extensionProperties = BeanUtility.getProperties(data, stopClass, filter); if (!extensionProperties.isEmpty()) { Object clientPart = getClientPartOfExtensionOrContributionRec(data, target); if (clientPart != null) { removeNotSetProperties(data, extensionProperties); BeanUtility.setProperties(clientPart, extensionProperties, false, null); } else { LOG.warn("cannot find extension for property data '{}' in form '{}'.", data.getClass().getName(), this.getClass().getName()); } } } } } }
Map<String, Object> props = BeanUtility.getProperties(this, AbstractForm.class, filter); storePropertiesToXml(xProps, props); Map<String, Object> extensionProps = BeanUtility.getProperties(ex, AbstractFormExtension.class, filter); if (extensionProps.isEmpty()) { continue;
private void exportExtensionProperties(Object o, IPropertyHolder target) { if (!(o instanceof IExtensibleObject)) { return; } for (IExtension<?> ex : ((IExtensibleObject) o).getAllExtensions()) { Class<?> dto = getDataAnnotationValue(ex.getClass()); if (dto != null && !Object.class.equals(dto)) { Object propertyTarget = target.getContribution(dto); Map<String, Object> fieldProperties = BeanUtility.getProperties(ex, AbstractFormField.class, new FormDataPropertyFilter()); BeanUtility.setProperties(propertyTarget, fieldProperties, false, null); } } }
@Override public void exportFormData(final AbstractFormData target) { Map<String, Object> properties = BeanUtility.getProperties(this, AbstractForm.class, new FormDataPropertyFilter()); BeanUtility.setProperties(target, properties, false, null); if (f != null) { properties = BeanUtility.getProperties(f, AbstractFormField.class, new FormDataPropertyFilter()); BeanUtility.setProperties(data, properties, false, null); exportExtensionProperties(f, data);