package com.fasterxml.jackson.databind.deser;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.*;
public class TestInnerClass extends BaseMapTest
{
static class Dog
{
public String name;
public Brain brain;
public Dog() { }
public Dog(String n, boolean thinking) {
name = n;
brain = new Brain();
brain.isThinking = thinking;
}
// note: non-static
public class Brain {
@JsonProperty("brainiac")
public boolean isThinking;
public String parentName() { return name; }
}
}
/*
/**********************************************************
/* Tests
/**********************************************************
*/
public void testSimpleNonStaticInner() throws Exception
{
// Let's actually verify by first serializing, then deserializing back
ObjectMapper mapper = new ObjectMapper();
Dog input = new Dog("Smurf", true);
String json = mapper.writeValueAsString(input);
Dog output = mapper.readValue(json, Dog.class);
assertEquals("Smurf", output.name);
assertNotNull(output.brain);
assertTrue(output.brain.isThinking);
// and verify correct binding...
assertEquals("Smurf", output.brain.parentName());
output.name = "Foo";
assertEquals("Foo", output.brain.parentName());
// also, null handling
input.brain = null;
output = mapper.readValue(mapper.writeValueAsString(input), Dog.class);
assertNull(output.brain);
}
}