UnwrappedEmptyAsNull1709Test.java
package tools.jackson.databind.struct;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.annotation.*;
import tools.jackson.databind.DeserializationFeature;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.testutil.DatabindTestUtil;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
// https://github.com/FasterXML/jackson-databind/issues/1709
public class UnwrappedEmptyAsNull1709Test extends DatabindTestUtil
{
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
static class Container1709 {
public String name;
@JsonUnwrapped
public Unwrapped1709 u;
}
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
static class Unwrapped1709 {
public String s;
public Integer n;
}
private final ObjectMapper MAPPER_ENABLED = jsonMapperBuilder()
.enable(DeserializationFeature.USE_NULL_FOR_EMPTY_UNWRAPPED)
.build();
private final ObjectMapper MAPPER_DISABLED = jsonMapperBuilder()
.disable(DeserializationFeature.USE_NULL_FOR_EMPTY_UNWRAPPED)
.build();
/*
/**********************************************************************
/* Tests with USE_NULL_FOR_EMPTY_UNWRAPPED enabled
/**********************************************************************
*/
@Test
public void testEmptyUnwrappedAsNull() throws Exception {
String json = a2q("{'name':'test'}");
Container1709 result = MAPPER_ENABLED.readValue(json, Container1709.class);
assertNotNull(result);
assertEquals("test", result.name);
assertNull(result.u);
}
@Test
public void testEmptyJsonEmptyUnwrappedAsNull() throws Exception {
Container1709 result = MAPPER_ENABLED.readValue("{}", Container1709.class);
assertNotNull(result);
assertNull(result.name);
assertNull(result.u);
}
@Test
public void testNonNullUnwrappedPreserved() throws Exception {
String json = a2q("{'name':'test','s':'value'}");
Container1709 result = MAPPER_ENABLED.readValue(json, Container1709.class);
assertNotNull(result);
assertEquals("test", result.name);
assertNotNull(result.u);
assertEquals("value", result.u.s);
}
@Test
public void testPartialNonNullUnwrappedPreserved() throws Exception {
String json = a2q("{'s':'value'}");
Container1709 result = MAPPER_ENABLED.readValue(json, Container1709.class);
assertNotNull(result);
assertNotNull(result.u);
assertEquals("value", result.u.s);
assertNull(result.u.n);
}
/*
/**********************************************************************
/* Tests with USE_NULL_FOR_EMPTY_UNWRAPPED disabled
/**********************************************************************
*/
@Test
public void testEmptyUnwrappedAsNullWhenDisabled() throws Exception {
String json = a2q("{'name':'test'}");
Container1709 result = MAPPER_DISABLED.readValue(json, Container1709.class);
assertNotNull(result);
assertEquals("test", result.name);
assertNotNull(result.u);
assertNull(result.u.s);
assertNull(result.u.n);
}
@Test
public void testEmptyJsonEmptyUnwrappedAsNullWhenDisabled() throws Exception {
Container1709 result = MAPPER_DISABLED.readValue("{}", Container1709.class);
assertNotNull(result);
assertNull(result.name);
assertNotNull(result.u);
assertNull(result.u.s);
assertNull(result.u.n);
}
@Test
public void testNonNullUnwrappedPreservedWhenDisabled() throws Exception {
String json = a2q("{'name':'test','s':'value'}");
Container1709 result = MAPPER_DISABLED.readValue(json, Container1709.class);
assertNotNull(result);
assertEquals("test", result.name);
assertNotNull(result.u);
assertEquals("value", result.u.s);
}
@Test
public void testPartialNonNullUnwrappedPreservedWhenDisabled() throws Exception {
String json = a2q("{'s':'value'}");
Container1709 result = MAPPER_DISABLED.readValue(json, Container1709.class);
assertNull(result.u.n);
}
}