DefaultTypingOverride1391Test.java
package tools.jackson.databind.jsontype;
import java.util.Collection;
import java.util.Collections;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import tools.jackson.databind.*;
import tools.jackson.databind.testutil.DatabindTestUtil;
import tools.jackson.databind.testutil.NoCheckSubTypeValidator;
import static org.junit.jupiter.api.Assertions.assertEquals;
// for [databind#1391]: should allow disabling of default typing
// via explicit {@link JsonTypeInfo}
class DefaultTypingOverride1391Test extends DatabindTestUtil {
static class ListWrapper {
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
public Collection<String> stuff = Collections.emptyList();
}
@Test
void collectionWithOverride() throws Exception
{
ObjectMapper mapper = jsonMapperBuilder()
.activateDefaultTypingAsProperty(NoCheckSubTypeValidator.instance,
DefaultTyping.OBJECT_AND_NON_CONCRETE,
"$type")
.build();
String json = mapper.writeValueAsString(new ListWrapper());
assertEquals(a2q("{'stuff':[]}"), json);
// And verify deserialization works too
ListWrapper result = mapper.readValue(json, ListWrapper.class);
assertEquals(0, result.stuff.size());
}
}