| package org.codehaus.jackson.map.mixins; |
| |
| import java.io.*; |
| import java.util.*; |
| |
| import org.codehaus.jackson.annotate.*; |
| import org.codehaus.jackson.map.*; |
| |
| public class TestMixinDeserForMethods |
| extends BaseMapTest |
| { |
| /* |
| /********************************************************** |
| /* Helper bean classes |
| /********************************************************** |
| */ |
| |
| static class BaseClass |
| { |
| protected HashMap<String,Object> values = new HashMap<String,Object>(); |
| |
| public BaseClass() { } |
| |
| protected void addValue(String key, Object value) { |
| values.put(key, value); |
| } |
| } |
| |
| interface MixIn |
| { |
| @JsonAnySetter void addValue(String key, Object value); |
| } |
| |
| /* |
| /********************************************************** |
| /* Unit tests |
| /********************************************************** |
| */ |
| |
| /** |
| * Unit test that verifies that we can mix in @JsonAnySetter |
| * annotation, as expected. |
| */ |
| public void testWithAnySetter() throws IOException |
| { |
| ObjectMapper m = new ObjectMapper(); |
| m.getDeserializationConfig().addMixInAnnotations(BaseClass.class, MixIn.class); |
| BaseClass result = m.readValue("{ \"a\" : 3, \"b\" : true }", BaseClass.class); |
| assertNotNull(result); |
| assertEquals(2, result.values.size()); |
| assertEquals(Integer.valueOf(3), result.values.get("a")); |
| assertEquals(Boolean.TRUE, result.values.get("b")); |
| } |
| } |