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 2015/10/19 13:18:59 UTC
[2/2] camel git commit: [CAMEL-9235] No type converter available when
destination is super typ
[CAMEL-9235] No type converter available when destination is super typ
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/36649348
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/36649348
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/36649348
Branch: refs/heads/camel-2.16.x
Commit: 366493489b8e932de8c7a7a78b1194bf53d9dd03
Parents: f350181
Author: Thomas Diesler <th...@jboss.com>
Authored: Mon Oct 19 12:48:59 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Oct 19 13:21:21 2015 +0200
----------------------------------------------------------------------
.../converter/dozer/DozerTypeConverter.java | 14 +++++++++--
.../converter/dozer/DozerBeanMappingTest.java | 26 ++++++++++++++++++++
2 files changed, 38 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/36649348/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 0505a64..e1576f8 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
@@ -70,8 +70,7 @@ public class DozerTypeConverter extends TypeConverterSupport {
String mapId = null;
if (value != null) {
Class<?> sourceType = value.getClass();
- Class<?> destType = type;
- ClassMappingMetadata metadata = mapper.getMappingMetadata().getClassMapping(sourceType, destType);
+ ClassMappingMetadata metadata = getClassMappingMetadata(sourceType, type);
if (metadata != null) {
mapId = metadata.getMapId();
}
@@ -88,4 +87,15 @@ public class DozerTypeConverter extends TypeConverterSupport {
return result;
}
+
+ private ClassMappingMetadata getClassMappingMetadata(Class<?> sourceType, Class<?> destType) {
+ ClassMappingMetadata result = null;
+ for (ClassMappingMetadata aux : mapper.getMappingMetadata().getClassMappingsBySource(sourceType)) {
+ if (destType.isAssignableFrom(aux.getDestinationClass())) {
+ result = aux;
+ break;
+ }
+ }
+ return result;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/36649348/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerBeanMappingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerBeanMappingTest.java b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerBeanMappingTest.java
index f714418..a21a158 100644
--- a/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerBeanMappingTest.java
+++ b/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerBeanMappingTest.java
@@ -59,6 +59,32 @@ public class DozerBeanMappingTest {
}
@Test
+ public void testMarshalToInterfaceViaDozer() throws Exception {
+
+ CamelContext context = new DefaultCamelContext();
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").convertBodyTo(Map.class);
+ }
+ });
+
+ DozerBeanMapperConfiguration mconfig = new DozerBeanMapperConfiguration();
+ mconfig.setMappingFiles(Arrays.asList("bean-to-map-dozer-mappings.xml"));
+ new DozerTypeConverterLoader(context, mconfig);
+
+ context.start();
+ try {
+ ProducerTemplate producer = context.createProducerTemplate();
+ Map<?, ?> result = producer.requestBody("direct:start", new Customer("John", "Doe", null), Map.class);
+ Assert.assertEquals("John", result.get("firstName"));
+ Assert.assertEquals("Doe", result.get("lastName"));
+ } finally {
+ context.stop();
+ }
+ }
+
+ @Test
public void testBeanMapping() throws Exception {
CamelContext context = new DefaultCamelContext();