blob: ac3c25478ad5a6f2ec304f643eaa3f7388f1549e [file] [log] [blame]
package com.fasterxml.jackson.failing;
import java.util.Objects;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
// Not sure if [databind#2572] is actually a bug, but behavior in 2.9 was
// different from 2.10 in that no exception thrown and databind quietly just
// left `null` for Beans as `null` even if "EMPTY" was indicated by configuration.
public class JsonSetter2572Test extends BaseMapTest
{
static class Outer {
@JsonProperty("inner")
final Inner inner;
@JsonCreator
public Outer(@JsonProperty("inner") Inner inner) {
this.inner = Objects.requireNonNull(inner, "inner");
}
}
static class Inner {
@JsonProperty("field")
final String field;
@JsonCreator
public Inner(@JsonProperty("field") String field) {
this.field = field;
}
}
public void testSetterWithEmpty() throws Exception {
/*
ObjectMapper mapper = newObjectMapper()
.setDefaultSetterInfo(JsonSetter.Value.construct(Nulls.AS_EMPTY, Nulls.AS_EMPTY));
*/
ObjectMapper mapper = jsonMapperBuilder()
.defaultSetterInfo(JsonSetter.Value.construct(Nulls.AS_EMPTY, Nulls.AS_EMPTY))
.build();
String json = mapper.writeValueAsString(new Outer(new Inner("inner")));
Outer result = mapper.readValue(json, Outer.class);
assertNotNull(result);
assertNotNull(result.inner); // converted to "empty" bean
//System.err.println("Final -> "+mapper.writeValueAsString(result));
}
}