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);
+ }
}