I fixed the problem using as the basis the information in this post:
https://github.com/DozerMapper/dozer/issues/22Here is the Spring configuration:
<bean id="dataDefinitionConverter" class="foo.bar.baz.intake.dtf.parser.DataDefinitionConverter" >
<property name="mapper" ref="smtsDozerBeanmapper" />
</bean>
<!-- see:
http://dozer.sourceforge.net/documentation/springintegration.html -->
<bean id="dozerBeanmapper" class="org.dozer.DozerBeanMapper" >
<property name="mappingFiles">
<list>
<value>foo/bar/baz/intake/dtf/conversion/mappings.xml</value>
</list>
</property>
</bean>
<!--
The idea that inspired creation of this class is this article on the web:
https://github.com/DozerMapper/dozer/issues/22 -->
<bean id="smtsDozerBeanmapper" class="foo.bar.baz.intake.dozer.SmtsDozerBeanMapper" >
<property name="targetMapper" ref="dozerBeanmapper" />
</bean>
And here the overridden map method:
@Override
public <T> T map(Object source, Class<T> destinationClass)
throws MappingException {
ClassLoader originalContextClassLoader = Thread.currentThread().getContextClassLoader();
ClassLoader classClassLoader = DataDefinition.class.getClassLoader();
if (firstTime) {
firstTime = false;
logger.info("DataDefinition.class.getClassLoader()=: "+ classClassLoader);
logger.info("Thread.currentThread().getContextClassLoader()=: "+ originalContextClassLoader);
}
if (logger.isDebugEnabled()) {
logger.debug("DataDefinition.class.getClassLoader()=: "+ classClassLoader);
logger.debug("Thread.currentThread().getContextClassLoader()=: "+ originalContextClassLoader);
}
if (null!=classClassLoader) {
Thread.currentThread().setContextClassLoader(classClassLoader);
} else {
logger.warn("Thread.currentThread().getContextClassLoader() returned null");
}
try {
return this.getTargetMapper().map( source, destinationClass);
} finally {
Thread.currentThread().setContextClassLoader(originalContextClassLoader);