SetterlessProperties501Test.java
package com.fasterxml.jackson.databind.tofix;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.testutil.DatabindTestUtil;
import com.fasterxml.jackson.databind.testutil.NoCheckSubTypeValidator;
import com.fasterxml.jackson.databind.testutil.failure.JacksonTestFailureExpected;
import static org.junit.jupiter.api.Assertions.*;
class SetterlessProperties501Test extends DatabindTestUtil {
static class Poly {
public int id;
public Poly(int id) {
this.id = id;
}
protected Poly() {
this(0);
}
}
static class Issue501Bean {
protected Map<String, Poly> m = new HashMap<String, Poly>();
protected List<Poly> l = new ArrayList<Poly>();
protected Issue501Bean() {
}
public Issue501Bean(String key, Poly value) {
m.put(key, value);
l.add(value);
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
public List<Poly> getList() {
return l;
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
public Map<String, Poly> getMap() {
return m;
}
// public void setMap(Map<String,Poly> m) { this.m = m; }
// public void setList(List<Poly> l) { this.l = l; }
}
// For [databind#501]
@JacksonTestFailureExpected
@Test
void setterlessWithPolymorphic() throws Exception {
Issue501Bean input = new Issue501Bean("a", new Poly(13));
ObjectMapper m = new ObjectMapper();
assertTrue(m.isEnabled(MapperFeature.USE_GETTERS_AS_SETTERS));
m.activateDefaultTyping(NoCheckSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL);
String json = m.writerWithDefaultPrettyPrinter().writeValueAsString(input);
Issue501Bean output = m.readValue(json, Issue501Bean.class);
assertNotNull(output);
assertEquals(1, output.l.size());
assertEquals(1, output.m.size());
assertEquals(13, output.l.get(0).id);
Poly p = output.m.get("a");
assertNotNull(p);
assertEquals(13, p.id);
}
}