You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/08/01 14:07:45 UTC

git commit: CAMEL-6598: camel-dozer if mapping type is one way then dont add 2nd converter.

Updated Branches:
  refs/heads/master b24f380c1 -> 59ff5faad


CAMEL-6598: camel-dozer if mapping type is one way then dont add 2nd converter.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/59ff5faa
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/59ff5faa
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/59ff5faa

Branch: refs/heads/master
Commit: 59ff5faade9067e6c1789e487a53f83cd58be64d
Parents: b24f380
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Aug 1 14:07:38 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Aug 1 14:07:38 2013 +0200

----------------------------------------------------------------------
 .../dozer/DozerTypeConverterLoader.java         | 32 ++++++++++++++------
 1 file changed, 22 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/59ff5faa/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 e5a8385..dc42c94 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
@@ -42,6 +42,8 @@ import org.dozer.util.DozerClassLoader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.dozer.classmap.MappingDirection.ONE_WAY;
+
 /**
  * <code>DozerTypeConverterLoader</code> provides the mechanism for registering
  * a Dozer {@link Mapper} as {@link TypeConverter} for a {@link CamelContext}.
@@ -122,9 +124,11 @@ public class DozerTypeConverterLoader implements CamelContextAware {
         }
 
         TypeConverterRegistry registry = camelContext.getTypeConverterRegistry();
-        for (DozerBeanMapper dozer : mappers.values()) {
-            List<ClassMap> all = loadMappings(camelContext, dozer);
-            registerClassMaps(registry, dozer, all);
+        for (Map.Entry<String, DozerBeanMapper> entry : mappers.entrySet()) {
+            String mapperId = entry.getKey();
+            DozerBeanMapper dozer = entry.getValue();
+            List<ClassMap> all = loadMappings(camelContext, mapperId, dozer);
+            registerClassMaps(registry, mapperId, dozer, all);
         }
     }
 
@@ -135,22 +139,30 @@ public class DozerTypeConverterLoader implements CamelContextAware {
         return new HashMap<String, DozerBeanMapper>(camelContext.getRegistry().findByTypeWithName(DozerBeanMapper.class));
     }
 
-    protected void registerClassMaps(TypeConverterRegistry registry, DozerBeanMapper dozer, List<ClassMap> all) {
+    protected void registerClassMaps(TypeConverterRegistry registry, String dozerId, DozerBeanMapper dozer, List<ClassMap> all) {
         DozerTypeConverter converter = new DozerTypeConverter(dozer);
         for (ClassMap map : all) {
-            addDozerTypeConverter(registry, converter, map.getMapId(), map.getSrcClassToMap(), map.getDestClassToMap());
+            addDozerTypeConverter(registry, converter, dozerId, map.getSrcClassToMap(), map.getDestClassToMap());
+            // if not one way then add the other way around also
+            if (map.getType() != ONE_WAY) {
+                addDozerTypeConverter(registry, converter, dozerId, map.getDestClassToMap(), map.getSrcClassToMap());
+            }
         }
     }
 
-    protected void addDozerTypeConverter(TypeConverterRegistry registry, DozerTypeConverter converter, String mapId, Class<?> to, Class<?> from) {
+    protected void addDozerTypeConverter(TypeConverterRegistry registry, DozerTypeConverter converter,
+                                         String dozerId, Class<?> to, Class<?> from) {
         if (log.isInfoEnabled()) {
-            log.info("Added Dozer map id {} as Camel type converter {} <-> {}", new Object[]{mapId, from, to});
+            if (dozerId != null) {
+                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});
+            }
         }
         registry.addTypeConverter(from, to, converter);
-        registry.addTypeConverter(to, from, converter);
     }
 
-    private List<ClassMap> loadMappings(CamelContext camelContext, DozerBeanMapper mapper) {
+    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
@@ -190,7 +202,7 @@ public class DozerTypeConverterLoader implements CamelContextAware {
         TypeConverterRegistry registry = camelContext.getTypeConverterRegistry();
         List<ClassMap> classMaps = new ArrayList<ClassMap>();
         classMaps.addAll(mappingFileData.getClassMaps());
-        registerClassMaps(registry, mapper, classMaps);
+        registerClassMaps(registry, null, mapper, classMaps);
     }
 
     public CamelContext getCamelContext() {