You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/08/09 05:57:37 UTC
camel git commit: CAMEL-11652 - Upgraded dozer to 6.1
Repository: camel
Updated Branches:
refs/heads/master a3d0df31d -> b1f8b6f91
CAMEL-11652 - Upgraded dozer to 6.1
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b1f8b6f9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b1f8b6f9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b1f8b6f9
Branch: refs/heads/master
Commit: b1f8b6f91b1d2835194454cdf813acd68feb1809
Parents: a3d0df3
Author: Gareth Healy <ga...@gmail.com>
Authored: Tue Aug 8 18:29:33 2017 +0100
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Wed Aug 9 07:56:58 2017 +0200
----------------------------------------------------------------------
.../src/main/docs/dozer-component.adoc | 18 +-
.../camel/component/dozer/DozerComponent.java | 27 +--
.../camel/component/dozer/DozerEndpoint.java | 103 ++++------
.../dozer/DozerBeanMapperConfiguration.java | 12 ++
.../converter/dozer/DozerTypeConverter.java | 7 +-
.../dozer/DozerTypeConverterLoader.java | 171 ++++------------
.../camel/converter/dozer/MapperFactory.java | 203 +++++++++++++++++++
.../dozer/DozerTestArtifactsFactory.java | 21 +-
.../dozer/DozerTypeConverterDTOTest.java | 16 +-
.../converter/dozer/DozerTypeConverterTest.java | 10 +-
.../resources/application-context-map-id.xml | 12 +-
.../src/test/resources/application-context.xml | 22 +-
.../resources/bean-to-bean-dozer-mappings.xml | 5 +-
.../resources/bean-to-map-dozer-mappings.xml | 5 +-
.../src/test/resources/mapping-map-id.xml | 8 +-
.../camel-dozer/src/test/resources/mapping.xml | 8 +-
.../camel/component/dozer/customMapping.xml | 5 +-
.../camel/component/dozer/dozerBeanMapping.xml | 5 +-
.../camel/component/dozer/expressionMapping.xml | 5 +-
.../dozer/expressionMappingClasspath.xml | 5 +-
.../component/dozer/expressionMappingFile.xml | 5 +-
.../camel/component/dozer/variableMapping.xml | 5 +-
parent/pom.xml | 2 +-
.../features/src/main/resources/features.xml | 1 +
24 files changed, 398 insertions(+), 283 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/main/docs/dozer-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/docs/dozer-component.adoc b/components/camel-dozer/src/main/docs/dozer-component.adoc
index e46f818..0b7f879 100644
--- a/components/camel-dozer/src/main/docs/dozer-component.adoc
+++ b/components/camel-dozer/src/main/docs/dozer-component.adoc
@@ -164,9 +164,9 @@ class into your target field of choice:
[source,xml]
--------------------------------------------------------------------------------------------------------
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<configuration>
<variables>
<variable name="CUST_ID">ACME-SALES</variable>
@@ -219,9 +219,9 @@ public class CustomMapper {
[source,xml]
--------------------------------------------------------------------------------------------------------
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<mapping>
<class-a>org.example.A</class-a>
<class-b>org.example.B</class-b>
@@ -254,9 +254,9 @@ An example of mapping a message header into a target field:
[source,xml]
--------------------------------------------------------------------------------------------------------------
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<mapping>
<class-a>org.apache.camel.component.dozer.ExpressionMapper</class-a>
<class-b>org.example.B</class-b>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
index f401798..0d42752 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
@@ -16,18 +16,12 @@
*/
package org.apache.camel.component.dozer;
-import java.lang.reflect.Field;
-import java.util.List;
import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.converter.dozer.DozerBeanMapperConfiguration;
-import org.apache.camel.converter.dozer.DozerThreadContextClassLoader;
import org.apache.camel.impl.UriEndpointComponent;
-import org.apache.camel.util.ReflectionHelper;
-import org.dozer.DozerBeanMapper;
-import org.dozer.config.GlobalSettings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,31 +42,14 @@ public class DozerComponent extends UriEndpointComponent {
config.setName(remaining);
config.setMappingConfiguration(getAndRemoveOrResolveReferenceParameter(
parameters, "mappingConfiguration", DozerBeanMapperConfiguration.class));
+
setProperties(config, parameters);
// Validate endpoint parameters
if (config.getTargetModel() == null) {
throw new IllegalArgumentException("The targetModel parameter is required for dozer endpoints");
}
- return new DozerEndpoint(uri, this, config);
- }
- public static DozerBeanMapper createDozerBeanMapper(List<String> mappingFiles) {
- GlobalSettings settings = GlobalSettings.getInstance();
- try {
- LOG.info("Configuring GlobalSettings to use Camel classloader: {}", DozerThreadContextClassLoader.class.getName());
- Field field = settings.getClass().getDeclaredField("classLoaderBeanName");
- ReflectionHelper.setField(field, settings, DozerThreadContextClassLoader.class.getName());
- } catch (Exception e) {
- throw new IllegalStateException("Cannot configure Dozer GlobalSettings to use DozerThreadContextClassLoader as classloader due " + e.getMessage(), e);
- }
- try {
- LOG.info("Configuring GlobalSettings to enable EL");
- Field field = settings.getClass().getDeclaredField("elEnabled");
- ReflectionHelper.setField(field, settings, true);
- } catch (NoSuchFieldException nsfEx) {
- throw new IllegalStateException("Failed to enable EL in global Dozer settings", nsfEx);
- }
- return new DozerBeanMapper(mappingFiles);
+ return new DozerEndpoint(uri, this, config);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
index e008881..23b35ff 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
@@ -16,8 +16,8 @@
*/
package org.apache.camel.component.dozer;
-import java.io.InputStream;
-import java.util.Collections;
+import java.net.URL;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -27,17 +27,16 @@ import org.apache.camel.Component;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
-import org.apache.camel.converter.dozer.DozerTypeConverterLoader;
+import org.apache.camel.converter.dozer.DozerBeanMapperConfiguration;
+import org.apache.camel.converter.dozer.MapperFactory;
import org.apache.camel.impl.DefaultEndpoint;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
-import org.apache.camel.util.IOHelper;
import org.apache.camel.util.ResourceHelper;
import org.dozer.CustomConverter;
-import org.dozer.DozerBeanMapper;
+import org.dozer.Mapper;
import org.dozer.config.BeanContainer;
import org.dozer.loader.xml.ELEngine;
-import org.dozer.loader.xml.ElementReader;
import org.dozer.loader.xml.ExpressionElementReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,7 +53,7 @@ public class DozerEndpoint extends DefaultEndpoint {
private static final String VARIABLE_MAPPING_ID = "_variableMapping";
private static final String EXPRESSION_MAPPING_ID = "_expressionMapping";
- private DozerBeanMapper mapper;
+ private Mapper mapper;
private VariableMapper variableMapper;
private CustomMapper customMapper;
private ExpressionMapper expressionMapper;
@@ -85,7 +84,7 @@ public class DozerEndpoint extends DefaultEndpoint {
return true;
}
- public DozerBeanMapper getMapper() throws Exception {
+ public Mapper getMapper() throws Exception {
return mapper;
}
@@ -123,76 +122,42 @@ public class DozerEndpoint extends DefaultEndpoint {
}
protected void initDozerBeanContainerAndMapper() throws Exception {
+ LOG.info("Configuring {}...", Mapper.class.getName());
- LOG.info("Configuring DozerBeanContainer and DozerBeanMapper");
-
-
- // init the expression engine with a fallback to the impl from glasfish
- initELEngine();
-
- // configure mapper as well
if (mapper == null) {
- if (configuration.getMappingConfiguration() != null) {
- mapper = DozerTypeConverterLoader.createDozerBeanMapper(
- configuration.getMappingConfiguration());
- } else {
- mapper = createDozerBeanMapper();
- }
- configureMapper(mapper);
- }
+ if (configuration.getMappingConfiguration() == null) {
+ URL url = ResourceHelper.resolveMandatoryResourceAsUrl(getCamelContext().getClassResolver(), configuration.getMappingFile());
- }
+ DozerBeanMapperConfiguration config = new DozerBeanMapperConfiguration();
+ config.setCustomConvertersWithId(getCustomConvertersWithId());
+ config.setMappingFiles(Arrays.asList(url.toString()));
- public void initELEngine() {
- String elprop = System.getProperty("javax.el.ExpressionFactory");
- ClassLoader tccl = Thread.currentThread().getContextClassLoader();
- try {
- ClassLoader appcl = getCamelContext().getApplicationContextClassLoader();
- ClassLoader auxcl = appcl != null ? appcl : DozerEndpoint.class.getClassLoader();
- Thread.currentThread().setContextClassLoader(auxcl);
- try {
- Class<?> clazz = auxcl.loadClass("com.sun.el.ExpressionFactoryImpl");
- ExpressionFactory factory = (ExpressionFactory) clazz.newInstance();
- System.setProperty("javax.el.ExpressionFactory", factory.getClass().getName());
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
- LOG.debug("Cannot load glasfish expression engine, using default");
- }
- ELEngine engine = new ELEngine();
- engine.init();
- BeanContainer.getInstance().setElEngine(engine);
- ElementReader reader = new ExpressionElementReader(engine);
- BeanContainer.getInstance().setElementReader(reader);
- } finally {
- Thread.currentThread().setContextClassLoader(tccl);
- if (elprop != null) {
- System.setProperty("javax.el.ExpressionFactory", elprop);
+ configuration.setMappingConfiguration(config);
} else {
- System.clearProperty("javax.el.ExpressionFactory");
+ DozerBeanMapperConfiguration config = configuration.getMappingConfiguration();
+ if (config.getCustomConvertersWithId() == null) {
+ config.setCustomConvertersWithId(getCustomConvertersWithId());
+ } else {
+ config.getCustomConvertersWithId().putAll(getCustomConvertersWithId());
+ }
+
+ if (config.getMappingFiles() == null || config.getMappingFiles().size() <= 0) {
+ URL url = ResourceHelper.resolveMandatoryResourceAsUrl(getCamelContext().getClassResolver(), configuration.getMappingFile());
+ config.setMappingFiles(Arrays.asList(url.toString()));
+ }
}
- }
- }
- private DozerBeanMapper createDozerBeanMapper() throws Exception {
- DozerBeanMapper answer = DozerComponent.createDozerBeanMapper(Collections.<String>emptyList());
- InputStream mapStream = null;
- try {
- LOG.info("Loading Dozer mapping file {}.", configuration.getMappingFile());
- // create the mapper instance and add the mapping file
- mapStream = ResourceHelper.resolveMandatoryResourceAsInputStream(getCamelContext(), configuration.getMappingFile());
- answer.addMapping(mapStream);
- } finally {
- IOHelper.close(mapStream);
+ MapperFactory factory = new MapperFactory(getCamelContext(), configuration.getMappingConfiguration());
+ mapper = factory.create();
}
- return answer;
}
- private void configureMapper(DozerBeanMapper mapper) throws Exception {
- // add our built-in converters
- Map<String, CustomConverter> converters = new HashMap<String, CustomConverter>();
- converters.put(CUSTOM_MAPPING_ID, customMapper);
- converters.put(VARIABLE_MAPPING_ID, variableMapper);
- converters.put(EXPRESSION_MAPPING_ID, expressionMapper);
- converters.putAll(mapper.getCustomConvertersWithId());
- mapper.setCustomConvertersWithId(converters);
+ private Map<String, CustomConverter> getCustomConvertersWithId() {
+ Map<String, CustomConverter> customConvertersWithId = new HashMap<String, CustomConverter>();
+ customConvertersWithId.put(CUSTOM_MAPPING_ID, customMapper);
+ customConvertersWithId.put(VARIABLE_MAPPING_ID, variableMapper);
+ customConvertersWithId.put(EXPRESSION_MAPPING_ID, expressionMapper);
+
+ return customConvertersWithId;
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerBeanMapperConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerBeanMapperConfiguration.java b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerBeanMapperConfiguration.java
index 6257547..e29ca58 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerBeanMapperConfiguration.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerBeanMapperConfiguration.java
@@ -19,9 +19,12 @@ package org.apache.camel.converter.dozer;
import java.util.List;
import java.util.Map;
+import com.sun.org.apache.xpath.internal.operations.Bool;
+
import org.dozer.CustomConverter;
import org.dozer.CustomFieldMapper;
import org.dozer.DozerEventListener;
+import org.dozer.loader.api.BeanMappingBuilder;
public class DozerBeanMapperConfiguration {
@@ -30,6 +33,7 @@ public class DozerBeanMapperConfiguration {
private List<DozerEventListener> eventListeners;
private Map<String, CustomConverter> customConvertersWithId;
private CustomFieldMapper customFieldMapper;
+ private List<BeanMappingBuilder> beanMappingBuilders;
public List<String> getMappingFiles() {
return mappingFiles;
@@ -70,4 +74,12 @@ public class DozerBeanMapperConfiguration {
public void setCustomFieldMapper(CustomFieldMapper customFieldMapper) {
this.customFieldMapper = customFieldMapper;
}
+
+ public List<BeanMappingBuilder> getBeanMappingBuilders() {
+ return beanMappingBuilders;
+ }
+
+ public void setBeanMappingBuilders(List<BeanMappingBuilder> beanMappingBuilders) {
+ this.beanMappingBuilders = beanMappingBuilders;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverter.java b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverter.java
index fffdb62..19e5e20 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverter.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverter.java
@@ -21,7 +21,6 @@ import org.apache.camel.Exchange;
import org.apache.camel.TypeConversionException;
import org.apache.camel.TypeConverter;
import org.apache.camel.support.TypeConverterSupport;
-import org.dozer.DozerBeanMapper;
import org.dozer.Mapper;
import org.dozer.metadata.ClassMappingMetadata;
import org.slf4j.Logger;
@@ -41,13 +40,13 @@ public class DozerTypeConverter extends TypeConverterSupport {
private static final Logger LOG = LoggerFactory.getLogger(DozerTypeConverter.class);
- private final DozerBeanMapper mapper;
+ private final Mapper mapper;
- public DozerTypeConverter(DozerBeanMapper mapper) {
+ public DozerTypeConverter(Mapper mapper) {
this.mapper = mapper;
}
- public DozerBeanMapper getMapper() {
+ public Mapper getMapper() {
return mapper;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
index f9396a9..b967a68 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
@@ -18,8 +18,6 @@ package org.apache.camel.converter.dozer;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -27,19 +25,14 @@ import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.camel.TypeConverter;
-import org.apache.camel.component.dozer.DozerComponent;
import org.apache.camel.spi.ClassResolver;
import org.apache.camel.spi.TypeConverterRegistry;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.ResourceHelper;
-import org.dozer.DozerBeanMapper;
import org.dozer.Mapper;
-import org.dozer.classmap.ClassMap;
-import org.dozer.classmap.MappingFileData;
-import org.dozer.loader.api.BeanMappingBuilder;
-import org.dozer.loader.xml.MappingFileReader;
-import org.dozer.loader.xml.XMLParserFactory;
+import org.dozer.metadata.ClassMappingMetadata;
+import org.dozer.metadata.MappingMetadata;
import org.dozer.util.DozerClassLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,7 +55,7 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
private final Logger log = LoggerFactory.getLogger(getClass());
private CamelContext camelContext;
private transient DozerBeanMapperConfiguration configuration;
- private transient DozerBeanMapper mapper;
+ private transient Mapper mapper;
/**
* Creates a <code>DozerTypeConverter</code> performing no
@@ -73,7 +66,7 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
/**
* Creates a <code>DozerTypeConverter</code> that will search the given
- * {@link CamelContext} for instances of {@link DozerBeanMapper}. Each
+ * {@link CamelContext} for instances of {@link Mapper}. Each
* discovered instance will be wrapped as a {@link DozerTypeConverter} and
* register as a {@link TypeConverter} with the context
*
@@ -106,7 +99,8 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
Thread.currentThread().setContextClassLoader(appcl);
}
log.info("Using DozerBeanMapperConfiguration: {}", configuration);
- DozerBeanMapper mapper = createDozerBeanMapper(configuration);
+ MapperFactory factory = new MapperFactory(camelContext, configuration);
+ Mapper mapper = factory.create();
this.camelContext = camelContext;
this.mapper = mapper;
@@ -121,27 +115,6 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
}
/**
- * Creates a <code>DozerTypeConverter</code> that will wrap the the given
- * {@link DozerBeanMapper} as a {@link DozerTypeConverter} and register it
- * with the given context. It will also search the context for
- *
- * @param camelContext the context to register the
- * {@link DozerTypeConverter} in
- * @param mapper the DozerMapperBean to be wrapped as a type converter.
- */
- @Deprecated
- public DozerTypeConverterLoader(CamelContext camelContext, DozerBeanMapper mapper) {
- this.camelContext = camelContext;
- this.mapper = mapper;
-
- try {
- camelContext.addService(this);
- } catch (Exception e) {
- throw ObjectHelper.wrapRuntimeCamelException(e);
- }
- }
-
- /**
* Doses the actual querying and registration of {@link DozerTypeConverter}s
* with the {@link CamelContext}.
*
@@ -149,7 +122,7 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
* {@link DozerTypeConverter} in
* @param mapper the DozerMapperBean to be wrapped as a type converter.
*/
- public void init(CamelContext camelContext, DozerBeanMapper mapper) {
+ public void init(CamelContext camelContext, Mapper mapper) {
this.camelContext = camelContext;
if (mapper != null) {
this.mapper = mapper;
@@ -162,7 +135,7 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
Thread.currentThread().setContextClassLoader(appcl);
}
- Map<String, DozerBeanMapper> mappers = lookupDozerBeanMappers();
+ Map<String, Mapper> mappers = lookupDozerBeanMappers();
// only add if we do not already have it
if (mapper != null && !mappers.containsValue(mapper)) {
mappers.put("parameter", mapper);
@@ -185,13 +158,12 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
}
if (configurations != null) {
- if (configurations.size() > 1) {
- log.warn("Loaded " + configurations.size() + " Dozer configurations from Camel registry."
- + " Dozer is most efficient when there is a single mapper instance. Consider amalgamating instances.");
- }
for (Map.Entry<String, DozerBeanMapperConfiguration> entry : configurations.entrySet()) {
String id = entry.getKey();
- DozerBeanMapper beanMapper = createDozerBeanMapper(entry.getValue());
+
+ MapperFactory factory = new MapperFactory(getCamelContext(), entry.getValue());
+ Mapper beanMapper = factory.create();
+
// only add if we do not already have it
if (!mappers.containsValue(beanMapper)) {
mappers.put(id, beanMapper);
@@ -199,20 +171,20 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
}
}
- if (mappers.size() > 1) {
- log.warn("Loaded " + mappers.size() + " Dozer mappers from Camel registry."
- + " Dozer is most efficient when there is a single mapper instance. Consider amalgamating instances.");
- } else if (mappers.size() == 0) {
- log.warn("No Dozer mappers found in Camel registry. You should add Dozer mappers as beans to the registry of the type: "
- + DozerBeanMapper.class.getName());
- }
+ log.info("Loaded {} Dozer mappers from Camel registry.", mappers.size());
+ if (mappers.size() == 0) {
+ log.warn("No Dozer mappers found in Camel registry. You should add Dozer mappers as beans to the registry of the type: {}", Mapper.class.getName());
+ }
TypeConverterRegistry registry = camelContext.getTypeConverterRegistry();
- for (Map.Entry<String, DozerBeanMapper> entry : mappers.entrySet()) {
+ for (Map.Entry<String, Mapper> entry : mappers.entrySet()) {
String mapperId = entry.getKey();
- DozerBeanMapper dozer = entry.getValue();
- List<ClassMap> all = loadMappings(camelContext, mapperId, dozer);
+ Mapper dozer = entry.getValue();
+
+ MappingMetadata meta = dozer.getMappingMetadata();
+
+ List<ClassMappingMetadata> all = meta.getClassMappings();
registerClassMaps(registry, mapperId, dozer, all);
}
@@ -222,38 +194,10 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
}
/**
- * Creates a {@link DozerBeanMapper} from the given configuration.
- *
- * @param configuration the dozer bean mapper configuration.
- * @return the created mapper
+ * Lookup the dozer {@link Mapper} to be used.
*/
- public static DozerBeanMapper createDozerBeanMapper(DozerBeanMapperConfiguration configuration) {
- DozerBeanMapper mapper;
- if (configuration.getMappingFiles() != null) {
- mapper = DozerComponent.createDozerBeanMapper(configuration.getMappingFiles());
- } else {
- mapper = DozerComponent.createDozerBeanMapper(Collections.<String>emptyList());
- }
- if (configuration.getCustomConverters() != null) {
- mapper.setCustomConverters(configuration.getCustomConverters());
- }
- if (configuration.getEventListeners() != null) {
- mapper.setEventListeners(configuration.getEventListeners());
- }
- if (configuration.getCustomConvertersWithId() != null) {
- mapper.setCustomConvertersWithId(configuration.getCustomConvertersWithId());
- }
- if (configuration.getCustomFieldMapper() != null) {
- mapper.setCustomFieldMapper(configuration.getCustomFieldMapper());
- }
- return mapper;
- }
-
- /**
- * Lookup the dozer {@link DozerBeanMapper} to be used.
- */
- protected Map<String, DozerBeanMapper> lookupDozerBeanMappers() {
- return new HashMap<String, DozerBeanMapper>(camelContext.getRegistry().findByTypeWithName(DozerBeanMapper.class));
+ protected Map<String, Mapper> lookupDozerBeanMappers() {
+ return new HashMap<String, Mapper>(camelContext.getRegistry().findByTypeWithName(Mapper.class));
}
/**
@@ -263,13 +207,14 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
return new HashMap<String, DozerBeanMapperConfiguration>(camelContext.getRegistry().findByTypeWithName(DozerBeanMapperConfiguration.class));
}
- protected void registerClassMaps(TypeConverterRegistry registry, String dozerId, DozerBeanMapper dozer, List<ClassMap> all) {
+ protected void registerClassMaps(TypeConverterRegistry registry, String dozerId, Mapper dozer, List<ClassMappingMetadata> all) {
DozerTypeConverter converter = new DozerTypeConverter(dozer);
- for (ClassMap map : all) {
- addDozerTypeConverter(registry, converter, dozerId, map.getSrcClassToMap(), map.getDestClassToMap());
+ for (ClassMappingMetadata map : all) {
+ addDozerTypeConverter(registry, converter, dozerId, map.getSourceClass(), map.getDestinationClass());
+
// if not one way then add the other way around also
- if (map.getType() != ONE_WAY) {
- addDozerTypeConverter(registry, converter, dozerId, map.getDestClassToMap(), map.getSrcClassToMap());
+ if (map.getMappingDirection() != ONE_WAY) {
+ addDozerTypeConverter(registry, converter, dozerId, map.getDestinationClass(), map.getSourceClass());
}
}
}
@@ -278,55 +223,13 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
String dozerId, Class<?> to, Class<?> from) {
if (log.isInfoEnabled()) {
if (dozerId != null) {
- log.info("Added Dozer: {} as Camel type converter: {} -> {}", new Object[]{dozerId, from, to});
+ log.info("Added Dozer: {} as Camel type converter: {} -> {}", new Object[] {dozerId, from, to});
} else {
- log.info("Added Dozer as Camel type converter: {} -> {}", new Object[]{from, to});
+ log.info("Added Dozer as Camel type converter: {} -> {}", new Object[] {from, to});
}
}
- registry.addTypeConverter(from, to, converter);
- }
-
- private List<ClassMap> loadMappings(CamelContext camelContext, String mapperId, DozerBeanMapper mapper) {
- List<ClassMap> answer = new ArrayList<ClassMap>();
- // load the class map using the class resolver so we can load from classpath in OSGi
- MappingFileReader reader = new MappingFileReader(XMLParserFactory.getInstance());
- List<String> mappingFiles = mapper.getMappingFiles();
- if (mappingFiles == null) {
- return Collections.emptyList();
- }
-
- for (String name : mappingFiles) {
- URL url = loadMappingFile(camelContext.getClassResolver(), name);
- if (url != null) {
- MappingFileData data = reader.read(url);
- answer.addAll(data.getClassMaps());
- }
- }
-
- return answer;
- }
-
- /**
- * Registers Dozer <code>BeanMappingBuilder</code> in current mapper instance.
- * This method should be called instead of direct <code>mapper.addMapping()</code> invocation for Camel
- * being able to register given type conversion.
- *
- * @param beanMappingBuilder api-based mapping builder
- */
- public void addMapping(BeanMappingBuilder beanMappingBuilder) {
- if (mapper == null) {
- log.warn("No mapper instance provided to " + this.getClass().getSimpleName()
- + ". Mapping has not been registered!");
- return;
- }
-
- mapper.addMapping(beanMappingBuilder);
- MappingFileData mappingFileData = beanMappingBuilder.build();
- TypeConverterRegistry registry = camelContext.getTypeConverterRegistry();
- List<ClassMap> classMaps = new ArrayList<ClassMap>();
- classMaps.addAll(mappingFileData.getClassMaps());
- registerClassMaps(registry, null, mapper, classMaps);
+ registry.addTypeConverter(from, to, converter);
}
public CamelContext getCamelContext() {
@@ -336,7 +239,7 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
/**
* Sets the {@link CamelContext} <b>and also</b> initializes this loader.
* <p/>
- * The reason why {@link #init(org.apache.camel.CamelContext, org.dozer.DozerBeanMapper)} is also called
+ * The reason why {@link #init(org.apache.camel.CamelContext, org.dozer.Mapper)} is also called
* is because making using Dozer in Spring XML files easier, as no need to use the init-method attribute.
*
* @param camelContext the CamelContext
@@ -352,11 +255,11 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
}
}
- public DozerBeanMapper getMapper() {
+ public Mapper getMapper() {
return mapper;
}
- public void setMapper(DozerBeanMapper mapper) {
+ public void setMapper(Mapper mapper) {
this.mapper = mapper;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/MapperFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/MapperFactory.java b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/MapperFactory.java
new file mode 100644
index 0000000..bc57250
--- /dev/null
+++ b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/MapperFactory.java
@@ -0,0 +1,203 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.converter.dozer;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+
+import javax.el.ExpressionFactory;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.dozer.DozerEndpoint;
+import org.apache.camel.util.ReflectionHelper;
+import org.dozer.CustomConverter;
+import org.dozer.DozerBeanMapperBuilder;
+import org.dozer.DozerEventListener;
+import org.dozer.Mapper;
+import org.dozer.config.BeanContainer;
+import org.dozer.config.GlobalSettings;
+import org.dozer.loader.api.BeanMappingBuilder;
+import org.dozer.loader.xml.ELEngine;
+import org.dozer.loader.xml.ExpressionElementReader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MapperFactory {
+
+ private static final Logger LOG = LoggerFactory.getLogger(MapperFactory.class);
+
+ private final CamelContext camelContext;
+ private final DozerBeanMapperConfiguration configuration;
+
+ public MapperFactory(CamelContext camelContext, DozerBeanMapperConfiguration configuration) {
+ this.camelContext = camelContext;
+ this.configuration = configuration;
+ }
+
+ public Mapper create() {
+ if (camelContext == null) {
+ throw new IllegalStateException("CamelContext is null");
+ }
+
+ return parseConfiguration(configuration);
+ }
+
+ private Mapper parseConfiguration(DozerBeanMapperConfiguration configuration) {
+ DozerBeanMapperBuilder builder = DozerBeanMapperBuilder.create();
+ if (configuration != null) {
+ if (configuration.getMappingFiles() != null) {
+ String[] files = configuration.getMappingFiles().toArray(new String[configuration.getMappingFiles().size()]);
+ builder.withMappingFiles(files);
+ }
+
+ if (configuration.getCustomConverters() != null) {
+ for (CustomConverter current : configuration.getCustomConverters()) {
+ builder.withCustomConverter(current);
+ }
+ }
+ if (configuration.getEventListeners() != null) {
+ for (DozerEventListener current : configuration.getEventListeners()) {
+ builder.withEventListener(current);
+ }
+ }
+
+ if (configuration.getCustomConvertersWithId() != null) {
+ for (Map.Entry<String, CustomConverter> current : configuration.getCustomConvertersWithId().entrySet()) {
+ builder.withCustomConverterWithId(current.getKey(), current.getValue());
+ }
+ }
+
+ if (configuration.getBeanMappingBuilders() != null) {
+ for (BeanMappingBuilder current : configuration.getBeanMappingBuilders()) {
+ builder.withMappingBuilder(current);
+ }
+ }
+
+ if (configuration.getCustomFieldMapper() != null) {
+ builder.withCustomFieldMapper(configuration.getCustomFieldMapper());
+ }
+ }
+
+ Mapper mapper = builder.build();
+
+ configureGlobalSettings(mapper);
+ configureBeanContainer(mapper, configuration);
+
+ mapper.getMappingMetadata();
+
+ return mapper;
+ }
+
+ /**
+ * Sets hidden fields on the mapper and returns an instance
+ * NOTE: https://github.com/DozerMapper/dozer/issues/463
+ *
+ * @param mapper
+ */
+ private void configureGlobalSettings(Mapper mapper) {
+ GlobalSettings settings;
+ try {
+ LOG.info("Attempting to retrieve GlobalSettings from: " + mapper);
+ Field field = mapper.getClass().getDeclaredField("globalSettings");
+ field.setAccessible(true);
+
+ settings = (GlobalSettings)field.get(mapper);
+ } catch (Exception e) {
+ throw new IllegalStateException("Cannot retrieve Dozer GlobalSettings due " + e.getMessage(), e);
+ }
+
+ //Safety check
+ if (settings == null) {
+ throw new IllegalStateException("Cannot retrieve Dozer GlobalSettings due null reflection response");
+ }
+
+ try {
+ LOG.info("Configuring GlobalSettings to use Camel classloader: {}", DozerThreadContextClassLoader.class.getName());
+ Field field = settings.getClass().getDeclaredField("classLoaderBeanName");
+ ReflectionHelper.setField(field, settings, DozerThreadContextClassLoader.class.getName());
+ } catch (Exception e) {
+ throw new IllegalStateException("Cannot configure Dozer GlobalSettings to use DozerThreadContextClassLoader as classloader due " + e.getMessage(), e);
+ }
+
+ try {
+ LOG.info("Configuring GlobalSettings to enable EL");
+ Field field = settings.getClass().getDeclaredField("elEnabled");
+ ReflectionHelper.setField(field, settings, true);
+ } catch (NoSuchFieldException nsfEx) {
+ throw new IllegalStateException("Failed to enable EL in global Dozer settings", nsfEx);
+ }
+ }
+
+ public void configureBeanContainer(Mapper mapper, DozerBeanMapperConfiguration configuration) {
+ String elprop = System.getProperty("javax.el.ExpressionFactory");
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+ try {
+ ClassLoader appcl = camelContext.getApplicationContextClassLoader();
+ ClassLoader auxcl = appcl != null ? appcl : DozerEndpoint.class.getClassLoader();
+ Thread.currentThread().setContextClassLoader(auxcl);
+ try {
+ Class<?> clazz = auxcl.loadClass("com.sun.el.ExpressionFactoryImpl");
+ ExpressionFactory factory = (ExpressionFactory)clazz.newInstance();
+ System.setProperty("javax.el.ExpressionFactory", factory.getClass().getName());
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
+ LOG.debug("Cannot load glasfish expression engine, using default");
+ }
+
+ BeanContainer beanContainer = resolveBeanContainer(mapper);
+ if (beanContainer.getElEngine() == null) {
+ ELEngine engine = new ELEngine();
+ engine.init();
+
+ beanContainer.setElEngine(engine);
+ }
+
+ beanContainer.setElementReader(new ExpressionElementReader(beanContainer.getElEngine()));
+ } finally {
+ Thread.currentThread().setContextClassLoader(tccl);
+ if (elprop == null) {
+ System.clearProperty("javax.el.ExpressionFactory");
+ } else {
+ System.setProperty("javax.el.ExpressionFactory", elprop);
+ }
+ }
+ }
+
+ private BeanContainer resolveBeanContainer(Mapper mapper) {
+ LOG.info("Attempting to retrieve BeanContainer from: " + mapper);
+
+ BeanContainer beanContainer = (BeanContainer)resolveProperty(mapper, "beanContainer");
+ if (beanContainer == null) {
+ throw new IllegalStateException("Cannot retrieve Dozer BeanContainer due null response");
+ }
+
+ return beanContainer;
+ }
+
+ private static Object resolveProperty(Mapper mapper, String fieldName) {
+ Object prop;
+ try {
+ Field field = mapper.getClass().getDeclaredField(fieldName);
+ field.setAccessible(true);
+
+ prop = field.get(mapper);
+ } catch (Exception e) {
+ throw new IllegalStateException("Cannot retrieve DozerBeanMapper." + fieldName + " due " + e.getMessage(), e);
+ }
+
+ return prop;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java
index d0d2959..1147bbb 100644
--- a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java
+++ b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java
@@ -18,17 +18,18 @@ package org.apache.camel.converter.dozer;
import java.util.Arrays;
+import org.apache.camel.CamelContext;
import org.apache.camel.converter.dozer.dto.AddressDTO;
import org.apache.camel.converter.dozer.dto.CustomerDTO;
import org.apache.camel.converter.dozer.model.Address;
import org.apache.camel.converter.dozer.service.Customer;
-import org.dozer.DozerBeanMapper;
+import org.dozer.Mapper;
public final class DozerTestArtifactsFactory {
-
+
private DozerTestArtifactsFactory() {
}
-
+
public static Customer createServiceCustomer() {
return new Customer("Bob", "Roberts", "12345", "1 main st");
}
@@ -41,13 +42,17 @@ public final class DozerTestArtifactsFactory {
return new CustomerDTO("Bob", "Roberts", new AddressDTO("12345", "1 main st"));
}
- public static DozerBeanMapper createMapper() {
- return new DozerBeanMapper(Arrays.asList(new String[]{"mapping.xml"}));
- }
+ public static Mapper createMapper(CamelContext camelContext) {
+ DozerBeanMapperConfiguration config = new DozerBeanMapperConfiguration();
+ config.setMappingFiles(Arrays.asList("mapping.xml"));
- public static DozerBeanMapper createCleanMapper() {
- return new DozerBeanMapper();
+ MapperFactory factory = new MapperFactory(camelContext, config);
+ return factory.create();
}
+ public static Mapper createCleanMapper(CamelContext camelContext) {
+ MapperFactory factory = new MapperFactory(camelContext, null);
+ return factory.create();
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java
index 9d7ad3b..6ec7a49 100644
--- a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java
+++ b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java
@@ -16,16 +16,16 @@
*/
package org.apache.camel.converter.dozer;
+import java.util.Arrays;
+
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.converter.dozer.dto.CustomerDTO;
import org.apache.camel.converter.dozer.model.Customer;
import org.apache.camel.test.junit4.CamelTestSupport;
-import org.dozer.DozerBeanMapper;
import org.dozer.loader.api.BeanMappingBuilder;
import org.junit.Test;
-import static org.apache.camel.converter.dozer.DozerTestArtifactsFactory.createCleanMapper;
import static org.apache.camel.converter.dozer.DozerTestArtifactsFactory.createDtoCustomer;
public class DozerTypeConverterDTOTest extends CamelTestSupport {
@@ -33,14 +33,18 @@ public class DozerTypeConverterDTOTest extends CamelTestSupport {
@Override
public void setUp() throws Exception {
super.setUp();
- DozerBeanMapper mapper = createCleanMapper();
- DozerTypeConverterLoader loader = new DozerTypeConverterLoader(context, mapper);
- loader.addMapping(new BeanMappingBuilder() {
+
+ BeanMappingBuilder beanMappingBuilder = new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(CustomerDTO.class, Customer.class);
}
- });
+ };
+
+ DozerBeanMapperConfiguration config = new DozerBeanMapperConfiguration();
+ config.setBeanMappingBuilders(Arrays.asList(beanMappingBuilder));
+
+ new DozerTypeConverterLoader(context, config);
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java
index 36958f5..8c97b06 100644
--- a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java
+++ b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.converter.dozer;
+import java.util.Arrays;
+
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.converter.dozer.service.Customer;
@@ -31,7 +33,11 @@ public class DozerTypeConverterTest extends CamelTestSupport {
@Override
public void setUp() throws Exception {
super.setUp();
- new DozerTypeConverterLoader(context, createMapper());
+
+ DozerBeanMapperConfiguration config = new DozerBeanMapperConfiguration();
+ config.setMappingFiles(Arrays.asList("mapping.xml"));
+
+ new DozerTypeConverterLoader(context, config);
}
@Override
@@ -56,7 +62,7 @@ public class DozerTypeConverterTest extends CamelTestSupport {
@Test
public void verifyCustomerMapping() throws Exception {
- Mapper mapper = DozerTestArtifactsFactory.createMapper();
+ Mapper mapper = DozerTestArtifactsFactory.createMapper(context);
Customer service = createServiceCustomer();
org.apache.camel.converter.dozer.model.Customer model = mapper.map(service, org.apache.camel.converter.dozer.model.Customer.class);
Customer roundTrip = mapper.map(model, Customer.class);
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/application-context-map-id.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/application-context-map-id.xml b/components/camel-dozer/src/test/resources/application-context-map-id.xml
index a05d7c0..bee16ff 100644
--- a/components/camel-dozer/src/test/resources/application-context-map-id.xml
+++ b/components/camel-dozer/src/test/resources/application-context-map-id.xml
@@ -33,11 +33,19 @@
<bean id="customer-processor" class="org.apache.camel.converter.dozer.CustomerProcessor"/>
<bean id="dozerConverterLoader" class="org.apache.camel.converter.dozer.DozerTypeConverterLoader"/>
- <bean id="mapper" class="org.dozer.DozerBeanMapper">
+ <bean id="mapConfig" class="org.apache.camel.converter.dozer.DozerBeanMapperConfiguration">
<property name="mappingFiles">
<list>
<value>mapping-map-id.xml</value>
</list>
</property>
</bean>
-</beans>
\ No newline at end of file
+
+ <bean id="mapperFactory" class="org.apache.camel.converter.dozer.MapperFactory">
+ <constructor-arg index="0" ref="camel"/>
+ <constructor-arg index="1" ref="mapConfig"/>
+ </bean>
+
+ <bean id="mapper" class="org.dozer.Mapper" factory-bean="mapperFactory" factory-method="create"/>
+
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/application-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/application-context.xml b/components/camel-dozer/src/test/resources/application-context.xml
index 5c69a49..51366fc 100644
--- a/components/camel-dozer/src/test/resources/application-context.xml
+++ b/components/camel-dozer/src/test/resources/application-context.xml
@@ -33,11 +33,19 @@
<bean id="customer-processor" class="org.apache.camel.converter.dozer.CustomerProcessor"/>
<bean id="dozerConverterLoader" class="org.apache.camel.converter.dozer.DozerTypeConverterLoader"/>
- <bean id="mapper" class="org.dozer.DozerBeanMapper">
- <property name="mappingFiles">
- <list>
- <value>mapping.xml</value>
- </list>
- </property>
+ <bean id="mapConfig" class="org.apache.camel.converter.dozer.DozerBeanMapperConfiguration">
+ <property name="mappingFiles">
+ <list>
+ <value>mapping.xml</value>
+ </list>
+ </property>
</bean>
-</beans>
\ No newline at end of file
+
+ <bean id="mapperFactory" class="org.apache.camel.converter.dozer.MapperFactory">
+ <constructor-arg index="0" ref="camel"/>
+ <constructor-arg index="1" ref="mapConfig"/>
+ </bean>
+
+ <bean id="mapper" class="org.dozer.Mapper" factory-bean="mapperFactory" factory-method="create"/>
+
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/bean-to-bean-dozer-mappings.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/bean-to-bean-dozer-mappings.xml b/components/camel-dozer/src/test/resources/bean-to-bean-dozer-mappings.xml
index 422bc0a..00db0a7 100644
--- a/components/camel-dozer/src/test/resources/bean-to-bean-dozer-mappings.xml
+++ b/components/camel-dozer/src/test/resources/bean-to-bean-dozer-mappings.xml
@@ -17,8 +17,9 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<mapping>
<class-a>org.apache.camel.converter.dozer.model.CustomerA</class-a>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/bean-to-map-dozer-mappings.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/bean-to-map-dozer-mappings.xml b/components/camel-dozer/src/test/resources/bean-to-map-dozer-mappings.xml
index 2b4fec8..c8d0177 100644
--- a/components/camel-dozer/src/test/resources/bean-to-map-dozer-mappings.xml
+++ b/components/camel-dozer/src/test/resources/bean-to-map-dozer-mappings.xml
@@ -17,8 +17,9 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<mapping>
<class-a>org.apache.camel.converter.dozer.model.Customer</class-a>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/mapping-map-id.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/mapping-map-id.xml b/components/camel-dozer/src/test/resources/mapping-map-id.xml
index 71b011f..db8abaa 100644
--- a/components/camel-dozer/src/test/resources/mapping-map-id.xml
+++ b/components/camel-dozer/src/test/resources/mapping-map-id.xml
@@ -17,8 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<mapping map-id="foo">
<class-a>org.apache.camel.converter.dozer.service.Customer</class-a>
<class-b>org.apache.camel.converter.dozer.model.Customer</class-b>
@@ -31,4 +33,4 @@
<b>address.zipCode</b>
</field>
</mapping>
-</mappings>
\ No newline at end of file
+</mappings>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/mapping.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/mapping.xml b/components/camel-dozer/src/test/resources/mapping.xml
index 3028c1b..1085282 100644
--- a/components/camel-dozer/src/test/resources/mapping.xml
+++ b/components/camel-dozer/src/test/resources/mapping.xml
@@ -17,8 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<mapping>
<class-a>org.apache.camel.converter.dozer.service.Customer</class-a>
<class-b>org.apache.camel.converter.dozer.model.Customer</class-b>
@@ -31,4 +33,4 @@
<b>address.zipCode</b>
</field>
</mapping>
-</mappings>
\ No newline at end of file
+</mappings>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/customMapping.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/customMapping.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/customMapping.xml
index 74f12c1..fe41e40 100644
--- a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/customMapping.xml
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/customMapping.xml
@@ -17,7 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<mapping>
<class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
<class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/dozerBeanMapping.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/dozerBeanMapping.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/dozerBeanMapping.xml
index 5bc3a4f..03e6d73 100644
--- a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/dozerBeanMapping.xml
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/dozerBeanMapping.xml
@@ -17,7 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<mapping>
<class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
<class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMapping.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMapping.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMapping.xml
index 3e36fa9..1640e25 100644
--- a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMapping.xml
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMapping.xml
@@ -17,7 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<mapping>
<class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
<class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
index a55d6db..5c303ab 100644
--- a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
@@ -17,7 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<mapping>
<class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
<class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
index f7b65ef..40859bf 100644
--- a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
@@ -17,7 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<mapping>
<class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
<class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/variableMapping.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/variableMapping.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/variableMapping.xml
index d13f040..978b907 100644
--- a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/variableMapping.xml
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/variableMapping.xml
@@ -17,7 +17,10 @@
limitations under the License.
-->
-<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">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
+
<configuration>
<variables>
<variable name="CUST_ID">ACME-SALES</variable>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 516033f..8717913 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -186,7 +186,7 @@
<docker-java-bundle-version>3.0.12_1</docker-java-bundle-version>
<docker-maven-plugin-version>0.21.0</docker-maven-plugin-version>
<dom4j-bundle-version>1.6.1_5</dom4j-bundle-version>
- <dozer-version>6.0.0</dozer-version>
+ <dozer-version>6.1.0</dozer-version>
<drools-version>6.5.0.Final</drools-version>
<dropbox-version>1.8.2</dropbox-version>
<easymock-version>3.4</easymock-version>
http://git-wip-us.apache.org/repos/asf/camel/blob/b1f8b6f9/platforms/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 7cc182d..df4b31b 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -511,6 +511,7 @@
<feature version='${project.version}'>camel-core</feature>
<feature>war</feature>
<bundle dependency='true'>mvn:com.github.dozermapper/dozer-core/${dozer-version}</bundle>
+ <bundle dependency='true'>mvn:com.github.dozermapper/dozer-schema/${dozer-version}</bundle>
<bundle dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle>
<bundle dependency='true'>mvn:commons-collections/commons-collections/${commons-collections-version}</bundle>
<bundle dependency='true'>mvn:commons-beanutils/commons-beanutils/${commons-beanutils-version}</bundle>