package com.fasterxml.jackson.databind.deser.merge; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.*; public class UpdateValueTest extends BaseMapTest { static class Bean { private String a; private String b; @JsonCreator public Bean(@JsonProperty("a") String a, @JsonProperty("b") String b) { this.a = a; this.b = b; } String getA() { return a; } void setA(String a) { this.a = a; } String getB() { return b; } void setB(String b) { this.b = b; } } private final ObjectMapper MAPPER = newObjectMapper(); // [databind#318] (and Scala module issue #83] public void testValueUpdateWithCreator() throws Exception { Bean bean = new Bean("abc", "def"); MAPPER.readerFor(Bean.class).withValueToUpdate(bean).readValue("{\"a\":\"ghi\",\"b\":\"jkl\"}"); assertEquals("ghi", bean.getA()); assertEquals("jkl", bean.getB()); } public void testValueUpdateOther() throws Exception { Bean bean = new Bean("abc", "def"); ObjectReader r = MAPPER.readerFor(Bean.class).withValueToUpdate(bean); // but, changed our minds, no update r = r.withValueToUpdate(null); // should be safe to read regardless Bean result = r.readValue(aposToQuotes("{'a':'x'}")); assertNotNull(result); } }