/** * Maps classes using mappings of super classes. * * @param superClasses mappings of super classes * @param srcObj source * @param destObj destination * @param mapId map id * @param context user parameters * @param overriddenFieldMappings overridden field mappings * @return list of mapped field keys */ private List<String> processSuperTypeMapping(Collection<ClassMap> superClasses, Object srcObj, Object destObj, String mapId, MappingContext context, List<String> overriddenFieldMappings) { List<String> mappedFieldKeys = new ArrayList<String>(); for (ClassMap map : superClasses) { // create copy of super class map which will be modified farther ClassMap copy = map.copyOf(); // remove from field mappings list entries that overridden by child // class removeOverriddenFieldMappings(copy, overriddenFieldMappings, destObj); // map classes using field mappings for super classes map(copy, srcObj, destObj, true, mapId, context); for (FieldMap fieldMapping : copy.getFieldMaps()) { // remember mapped fields String key = MappingUtils.getMappedParentFieldKey(destObj, fieldMapping); mappedFieldKeys.add(key); } } return mappedFieldKeys; }
removeOverriddenFieldMappings(copy, overriddenFieldMappings, destObj);