You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by he...@apache.org on 2015/04/09 22:35:26 UTC

camel git commit: [CAMEL-8554] Jackson mapper can be read from the registry.

Repository: camel
Updated Branches:
  refs/heads/master e4b5ecc4a -> 15cdf38f5


[CAMEL-8554] Jackson mapper can be read from the registry.


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

Branch: refs/heads/master
Commit: 15cdf38f578018aa2b4d86707b03ef44dd965d3c
Parents: e4b5ecc
Author: Henryk Konsek <he...@gmail.com>
Authored: Thu Apr 9 22:35:19 2015 +0200
Committer: Henryk Konsek <he...@gmail.com>
Committed: Thu Apr 9 22:35:19 2015 +0200

----------------------------------------------------------------------
 components/camel-jackson/pom.xml                |  5 ++++
 .../converter/JacksonTypeConverters.java        | 14 ++++++++-
 .../jackson/JacksonConversionsSimpleTest.java   | 31 +++++++++++++++++---
 3 files changed, 45 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/15cdf38f/components/camel-jackson/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-jackson/pom.xml b/components/camel-jackson/pom.xml
index a5eb9a8..8c7445e 100644
--- a/components/camel-jackson/pom.xml
+++ b/components/camel-jackson/pom.xml
@@ -70,6 +70,11 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/camel/blob/15cdf38f/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java
index 123cb2d..345c9b8 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java
@@ -17,14 +17,18 @@
 package org.apache.camel.component.jackson.converter;
 
 import java.util.Map;
+import java.util.Set;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.camel.Exchange;
 import org.apache.camel.FallbackConverter;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.TypeConverterRegistry;
 
 public final class JacksonTypeConverters {
 
+    private static final ObjectMapper DEFAULT_MAPPER = new ObjectMapper();
+
     private JacksonTypeConverters() {
     }
 
@@ -35,7 +39,7 @@ public final class JacksonTypeConverters {
         }
 
         if (value instanceof Map) {
-            ObjectMapper mapper = new ObjectMapper();
+            ObjectMapper mapper = resolveObjectMapper(exchange.getContext().getRegistry());
             if (mapper.canSerialize(type)) {
                 return mapper.convertValue(value, type);
             }
@@ -53,4 +57,12 @@ public final class JacksonTypeConverters {
         return isString || isNumber;
     }
 
+    private static ObjectMapper resolveObjectMapper(Registry registry) {
+        Set<ObjectMapper> mappers = registry.findByType(ObjectMapper.class);
+        if (mappers.size() == 1) {
+            return mappers.iterator().next();
+        }
+        return DEFAULT_MAPPER;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/15cdf38f/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConversionsSimpleTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConversionsSimpleTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConversionsSimpleTest.java
index 868ebab..53e0fb6 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConversionsSimpleTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConversionsSimpleTest.java
@@ -18,29 +18,52 @@ package org.apache.camel.component.jackson;
 
 import java.util.HashMap;
 
-import org.apache.camel.component.jackson.converter.JacksonTypeConverters;
+import static java.util.Collections.singleton;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.camel.Exchange;
 import org.junit.Assert;
 import org.junit.Test;
 
+import static org.apache.camel.component.jackson.converter.JacksonTypeConverters.convertTo;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
 public class JacksonConversionsSimpleTest extends Assert {
 
     @Test
     public void shouldNotConvertMapToString() {
-        Object convertedObject = JacksonTypeConverters.convertTo(String.class, null, new HashMap<String, String>(), null);
+        Object convertedObject = convertTo(String.class, null, new HashMap<String, String>(), null);
         assertNull(convertedObject);
     }
 
     @Test
     public void shouldNotConvertMapToNumber() {
-        Object convertedObject = JacksonTypeConverters.convertTo(Long.class, null, new HashMap<String, String>(), null);
+        Object convertedObject = convertTo(Long.class, null, new HashMap<String, String>(), null);
         assertNull(convertedObject);
     }
 
     @Test
     public void shouldNotConvertMapToPrimitive() {
-        Object convertedObject = JacksonTypeConverters.convertTo(long.class, null, new HashMap<String, String>(), null);
+        Object convertedObject = convertTo(long.class, null, new HashMap<String, String>(), null);
         assertNull(convertedObject);
     }
 
+    @Test
+    public void shouldResolveMapperFromRegistry() {
+        // Given
+        Exchange exchange = mock(Exchange.class, RETURNS_DEEP_STUBS);
+        ObjectMapper mapper = mock(ObjectMapper.class);
+        given(exchange.getContext().getRegistry().findByType(eq(ObjectMapper.class))).willReturn(singleton(mapper));
+
+        // When
+        convertTo(TestPojo.class, exchange, new HashMap<String, String>(), null);
+
+        // Then
+        verify(mapper).canSerialize(TestPojo.class);
+    }
 
 }