blob: e4e70f90f86f4416c8f440f54907d70de9c76dbb [file] [log] [blame]
package org.codehaus.jackson.jaxb;
import java.util.*;
import javax.xml.bind.annotation.*;
import org.codehaus.jackson.jaxb.TestJaxbPolymorphic.Animal;
import org.codehaus.jackson.jaxb.TestJaxbPolymorphic.Buffalo;
import org.codehaus.jackson.jaxb.TestJaxbPolymorphic.Cow;
import org.codehaus.jackson.jaxb.TestJaxbPolymorphic.Emu;
import org.codehaus.jackson.jaxb.TestJaxbPolymorphic.Whale;
import org.codehaus.jackson.map.ObjectMapper;
/**
* Tests for handling of type-related JAXB annotations
*
* @since 1.5
*/
public class TestJaxbPolymorphicMaps
extends BaseJaxbTest
{
/*
/**********************************************************
/* Helper beans
/**********************************************************
*/
static class MapBean
{
@XmlElements({
@XmlElement(type=Buffalo.class, name="beefalot"),
@XmlElement(type=Whale.class, name="whale")
})
public Map<Integer,Animal> animals;
@XmlElementRefs({
@XmlElementRef(type=Emu.class),
@XmlElementRef(type=Cow.class)
})
public Map<Integer,Animal> otherAnimals;
public MapBean() {
animals = new HashMap<Integer,Animal>();
otherAnimals = new HashMap<Integer,Animal>();
}
public void add(Integer key, Animal value) { animals.put(key, value); }
public void addOther(Integer key, Animal value) { otherAnimals.put(key, value); }
}
/*
/**********************************************************
/* Tests
/**********************************************************
*/
public void testPolymorphicMap() throws Exception
{
ObjectMapper mapper = getJaxbMapper();
Animal a = new Whale("Jaska", 3000);
Animal b = new Whale("Arska", 2000);
Animal c = new Whale("Pena", 1500);
MapBean input = new MapBean();
input.add(1, a);
input.add(2, b);
input.add(3, c);
String str = mapper.writeValueAsString(input);
MapBean result = mapper.readValue(str, MapBean.class);
Map<Integer,Animal> map = result.animals;
assertEquals(3, map.size());
assertEquals("Jaska", ((Whale) map.get(Integer.valueOf(1))).nickname);
assertEquals("Arska", ((Whale) map.get(Integer.valueOf(2))).nickname);
assertEquals("Pena", ((Whale) map.get(Integer.valueOf(3))).nickname);
}
/*
public void testPolymorphicMapElementRefs() throws Exception
{
ObjectMapper mapper = getJaxbMapper();
Animal a = new Cow("Jaska", 3000);
Animal b = new Cow("Arska", 2000);
Animal c = new Cow("Pena", 1500);
MapBean input = new MapBean();
input.addOther(1, a);
input.addOther(2, b);
input.addOther(3, c);
String str = mapper.writeValueAsString(input);
MapBean result = mapper.readValue(str, MapBean.class);
Map<Integer,Animal> map = result.otherAnimals;
assertEquals(3, map.size());
assertEquals("Jaska", ((Cow) map.get(Integer.valueOf(1))).nickname);
assertEquals("Arska", ((Cow) map.get(Integer.valueOf(2))).nickname);
assertEquals("Pena", ((Cow) map.get(Integer.valueOf(3))).nickname);
}
*/
}