@Bean(name = "org.dozer.Mapper")
public DozerBeanMapper dozerBean() {
List<String> mappingFiles = Collections.singletonList("dozer-mapping/saverequest_form-mapping.xml");
DozerBeanMapper dozerBean = new DozerBeanMapper();
Map<String, CustomConverter> converters = new HashMap<>();
converters.put("arrayListToStrConverter", new ArrayListToStrConverter());
dozerBean.setMappingFiles(mappingFiles);
return dozerBean;
}
@Service
public class DozerMappingHandler {
@Autowired
private DozerBeanMapper dozerBeanMapper;
public SaveFormRequest convertSaveFormToSignerFormMgmtEntity(SignerFormMgmt signerFormMgmt) {
SaveFormRequest saveFormRequest = dozerBeanMapper.map(signerFormMgmt, SaveFormRequest.class, "saveFormMapping");
saveFormRequest.setCaseType(SignerConstants.SIGNER_CASE_TYPE);
saveFormRequest.setActionType(ActionType.SAVE);
return saveFormRequest;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
<mapping map-id="saveFormMapping">
<class-a>com.citi.api.signer.model.entity.formmgmt.SignerFormMgmt</class-a>
<class-b>com.citi.api.signer.model.request.SaveFormRequest</class-b>
<field>
<a>caseId</a>
<b>caseId</b>
</field>
<field>
<a>id</a>
<b>formId</b>
</field>
</mapping>
</mappings>
public class ArrayListToStrConverter implements CustomConverter {
@Override
public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass, Class<?> sourceClass) {
if (sourceFieldValue == null) {
return existingDestinationFieldValue;
}
if (existingDestinationFieldValue == null) {
existingDestinationFieldValue = "";
}
try {
if (existingDestinationFieldValue instanceof String && sourceFieldValue instanceof List) {
existingDestinationFieldValue = StringUtils.join((List<?>) sourceFieldValue, ",");
}
} catch (Exception e) {
throw new MappingException("Exception while converting ArrayList to String", e);
}
return existingDestinationFieldValue;
}
}