package com.fasterxml.jackson.failing;

import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.databind.*;

public class TestNonStaticInnerClassInList32 extends BaseMapTest
{
    public static class Dog2
    {
        public String name;
        public List<Leg> legs;

        // NOTE: non-static on purpose!
        public class Leg {
            public int length;
        }
    }
    
    /*
    /**********************************************************
    /* Tests
    /**********************************************************
     */
    
    // core/[Issue#32]
    public void testInnerList() throws Exception
    {
        Dog2 dog = new Dog2();
        dog.name = "Spike";
        dog.legs = new ArrayList<Dog2.Leg>();
        dog.legs.add(dog.new Leg());
        dog.legs.add(dog.new Leg());
        dog.legs.get(0).length = 5;
        dog.legs.get(1).length = 4;

        ObjectMapper mapper = new ObjectMapper();

        String dogJson = mapper.writeValueAsString(dog);
//        System.out.println(dogJson);
      // output: {"name":"Spike","legs":[{length: 5}, {length: 4}]}

        // currently throws JsonMappingException
        Dog2 dogCopy = mapper.readValue(dogJson, Dog2.class);
        assertEquals(dogCopy.legs.get(1).length, 4);
        // prefer fully populated Dog instance
    }
}


