in src/main/java/com/univocity/parsers/common/processor/core/BeanConversionProcessor.java [198:236]
void validateMappings() {
Map<String, FieldMapping> mappedNames = new HashMap<String, FieldMapping>();
Map<Integer, FieldMapping> mappedIndexes = new HashMap<Integer, FieldMapping>();
Set<FieldMapping> duplicateNames = new HashSet<FieldMapping>();
Set<FieldMapping> duplicateIndexes = new HashSet<FieldMapping>();
for (FieldMapping mapping : parsedFields) {
String name = mapping.getFieldName();
int index = mapping.getIndex();
if (index != -1) {
if (mappedIndexes.containsKey(index)) {
duplicateIndexes.add(mapping);
duplicateIndexes.add(mappedIndexes.get(index));
} else {
mappedIndexes.put(index, mapping);
}
} else {
if (mappedNames.containsKey(name)) {
duplicateNames.add(mapping);
duplicateNames.add(mappedNames.get(name));
} else {
mappedNames.put(name, mapping);
}
}
}
if (duplicateIndexes.size() > 0 || duplicateNames.size() > 0) {
StringBuilder msg = new StringBuilder("Conflicting field mappings defined in annotated class: " + this.getBeanClass().getName());
for (FieldMapping mapping : duplicateIndexes) {
msg.append("\n\tIndex: '").append(mapping.getIndex()).append("' of ").append(describeField(mapping.getTarget()));
}
for (FieldMapping mapping : duplicateNames) {
msg.append("\n\tName: '").append(mapping.getFieldName()).append("' of ").append(describeField(mapping.getTarget()));
}
throw new DataProcessingException(msg.toString());
}
}