package com.fasterxml.jackson.failing;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
public class KevinFail1410Test extends BaseMapTest
{
enum EnvironmentEventSource { BACKEND; }
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="source")
@JsonSubTypes({
@JsonSubTypes.Type(value = BackendEvent.class, name = "BACKEND")
})
static abstract class EnvironmentEvent {
private String environmentName;
private String message;
protected EnvironmentEvent() { } // for deserializer
protected EnvironmentEvent(String env, String msg) {
environmentName = env;
message = msg;
}
public String getEnvironmentName() { return environmentName; }
public abstract EnvironmentEventSource getSource();
public String getMessage() { return message; }
}
static class BackendEvent extends EnvironmentEvent {
private String status;
private Object resultData;
protected BackendEvent() {} // for deserializer
public BackendEvent(String envName, String message, String status, Object results)
{
super(envName, message);
this.status = status;
resultData = results;
}
public static BackendEvent create(String environmentName, String message,
String status, Object results)
{
return new BackendEvent(environmentName, message,
status, results);
}
@Override
public EnvironmentEventSource getSource() {
return EnvironmentEventSource.BACKEND;
}
public String getStatus() {
return status;
}
public Object getResultData() {
return resultData;
}
@Override
public String toString() {
return String.format("(%s): %s", status, getMessage());
}
}
public void testDupProps() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
EnvironmentEvent event = new BackendEvent("foo", "hello", "bar", null);
String ser = mapper
.writerWithDefaultPrettyPrinter()
.writeValueAsString(event);
mapper.readValue(ser, EnvironmentEvent.class);
assertNotNull(ser);
}
}