Adding unit test for [JACKSON-709]
diff --git a/src/test/org/codehaus/jackson/map/convert/TestBeanConversions.java b/src/test/org/codehaus/jackson/map/convert/TestBeanConversions.java index 14437fd..8ce0623 100644 --- a/src/test/org/codehaus/jackson/map/convert/TestBeanConversions.java +++ b/src/test/org/codehaus/jackson/map/convert/TestBeanConversions.java
@@ -12,6 +12,14 @@ public int x, y; public int z = -13; + + public Point() { } + public Point(int a, int b, int c) + { + x = a; + y = b; + z = c; + } } static class PointStrings { @@ -40,7 +48,7 @@ public Object getData() { return data; } public void setData(Object data) { this.data = data; } - } + } /* /********************************************************** @@ -87,4 +95,18 @@ ObjectWrapper a2 = mapper.convertValue(b2.getData(), ObjectWrapper.class); assertEquals("foo", a2.getData()); } + + // [JACKSON-710]: should work regardless of wrapping... + public void testWrapping() throws Exception + { + ObjectMapper wrappingMapper = new ObjectMapper(); + wrappingMapper.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE); + wrappingMapper.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE); + Point input = new Point(1, 2, 3); + // conversion is ok, even if it's bogus one + Point output = wrappingMapper.convertValue(input, Point.class); + assertEquals(1, output.x); + assertEquals(2, output.y); + assertEquals(3, output.z); + } }
diff --git a/src/test/org/codehaus/jackson/node/TestConversions.java b/src/test/org/codehaus/jackson/node/TestConversions.java index 1feeebd..677b21d 100644 --- a/src/test/org/codehaus/jackson/node/TestConversions.java +++ b/src/test/org/codehaus/jackson/node/TestConversions.java
@@ -7,6 +7,7 @@ import org.codehaus.jackson.*; import org.codehaus.jackson.map.*; import org.codehaus.jackson.map.annotate.JsonDeserialize; +import org.junit.Assert; /** * Unit tests for verifying functionality of {@link JsonNode} methods that @@ -122,4 +123,30 @@ } } } + + static class Issue709Bean { + public byte[] data; + } + + /** + * Simple test to verify that byte[] values can be handled properly when + * converting, as long as there is metadata (from POJO definitions). + */ + public void testIssue709() throws Exception + { + ObjectMapper mapper = new ObjectMapper(); + byte[] inputData = new byte[] { 1, 2, 3 }; + ObjectNode node = mapper.createObjectNode(); + node.put("data", inputData); + Issue709Bean result = mapper.readValue(node, Issue709Bean.class); + String json = mapper.writeValueAsString(node); + Issue709Bean resultFromString = mapper.readValue(json, Issue709Bean.class); + Issue709Bean resultFromConvert = mapper.convertValue(node, Issue709Bean.class); + + // all methods should work equally well: + Assert.assertArrayEquals(inputData, resultFromString.data); + Assert.assertArrayEquals(inputData, resultFromConvert.data); + Assert.assertArrayEquals(inputData, result.data); + } } +