JsonIncludeForArray5515Test.java
package tools.jackson.databind.tofix;
import com.fasterxml.jackson.annotation.JsonInclude;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.testutil.DatabindTestUtil;
import org.junit.jupiter.api.Test;
import tools.jackson.databind.testutil.failure.JacksonTestFailureExpected;
import static org.junit.jupiter.api.Assertions.assertEquals;
// [databind#5515] Need to support JsonInclude for Arrays as well
public class JsonIncludeForArray5515Test
extends DatabindTestUtil
{
/*
/**********************************************************
/* Filters
/**********************************************************
*/
static class Foo5515Filter {
@Override
public boolean equals(Object other) {
if (other == null) {
return false;
}
return "foo".equals(other);
}
}
/*
/**********************************************************
/* POJOs ��� one per array type
/**********************************************************
*/
static class ObjectArray5155Pojo {
@JsonInclude(content = JsonInclude.Include.CUSTOM,
contentFilter = Foo5515Filter.class)
public Object[] values;
ObjectArray5155Pojo(Object... v) {
values = v;
}
}
static class StringArray5515Pojo {
@JsonInclude(content = JsonInclude.Include.CUSTOM,
contentFilter = Foo5515Filter.class)
public String[] values;
StringArray5515Pojo(String... v) {
values = v;
}
}
static class BooleanArray5515Pojo {
@JsonInclude(content = JsonInclude.Include.NON_DEFAULT)
public boolean[] values;
BooleanArray5515Pojo(boolean... v) {
values = v;
}
}
static class IntArray5515Pojo {
@JsonInclude(content = JsonInclude.Include.NON_DEFAULT)
public int[] values;
IntArray5515Pojo(int... v) {
values = v;
}
}
static class LongArray5515Pojo {
@JsonInclude(content = JsonInclude.Include.NON_DEFAULT)
public long[] values;
LongArray5515Pojo(long... v) {
values = v;
}
}
static class DoubleArray5515Pojo {
@JsonInclude(content = JsonInclude.Include.NON_DEFAULT)
public double[] values;
DoubleArray5515Pojo(double... v) {
values = v;
}
}
/*
/**********************************************************
/* Mapper
/**********************************************************
*/
private final ObjectMapper MAPPER = jsonMapperBuilder()
// We need something like this.
// .enable(SerializationFeature.APPLY_JSON_INCLUDE_FOR_ARRAYS)
.build();
/*
/**********************************************************
/* Tests ��� reference arrays (expect filtering, FAIL today)
/**********************************************************
*/
@JacksonTestFailureExpected
@Test
public void testCustomFilterWithObjectArray() throws Exception {
ObjectArray5155Pojo input = new ObjectArray5155Pojo(
"1", "foo", "2"
);
// EXPECT foo to be filtered out ��� FAILS today
assertEquals(
a2q("{'values':['1','2']}"),
MAPPER.writeValueAsString(input)
);
}
@JacksonTestFailureExpected
@Test
public void testCustomFilterWithStringArray() throws Exception {
StringArray5515Pojo input = new StringArray5515Pojo(
"1", "foo", "2"
);
// EXPECT foo to be filtered out ��� FAILS today
assertEquals(
a2q("{'values':['1','2']}"),
MAPPER.writeValueAsString(input)
);
}
/*
/**********************************************************
/* Tests ��� primitive arrays (expect NON_DEFAULT filtering, FAIL today)
/**********************************************************
*/
@JacksonTestFailureExpected
@Test
public void testNonDefaultWithBooleanArray() throws Exception {
BooleanArray5515Pojo input = new BooleanArray5515Pojo(
true, false, true
);
// EXPECT default 'false' to be filtered out ��� FAILS today
assertEquals(
a2q("{'values':[true,true]}"),
MAPPER.writeValueAsString(input)
);
}
@JacksonTestFailureExpected
@Test
public void testNonDefaultWithIntArray() throws Exception {
IntArray5515Pojo input = new IntArray5515Pojo(
0, 1, 0, 2
);
// EXPECT default '0' to be filtered out ��� FAILS today
assertEquals(
a2q("{'values':[1,2]}"),
MAPPER.writeValueAsString(input)
);
}
@JacksonTestFailureExpected
@Test
public void testNonDefaultWithLongArray() throws Exception {
LongArray5515Pojo input = new LongArray5515Pojo(
0L, 1L, 0L, 2L
);
// EXPECT default '0L' to be filtered out ��� FAILS today
assertEquals(
a2q("{'values':[1,2]}"),
MAPPER.writeValueAsString(input)
);
}
@JacksonTestFailureExpected
@Test
public void testNonDefaultWithDoubleArray() throws Exception {
DoubleArray5515Pojo input = new DoubleArray5515Pojo(
0.0, 1.5, 0.0
);
// EXPECT default '0.0' to be filtered out ��� FAILS today
assertEquals(
a2q("{'values':[1.5]}"),
MAPPER.writeValueAsString(input)
);
}
}