эта проблема действительно сводит меня с ума.
У меня есть класс в качестве оболочки:
@XmlRootElement(name = "Wrapper")
public class Wrapper
{
private Map<String, DetailSuperClass> messages = new HashMap<String, DetailSuperClass>();
@XmlElementWrapper(name = "messages")
@XmlElement(name = "message")
public Map<String, DetailSuperClass> getMessages()
{
return messages;
}
public void setMessages(Map<String, DetailSuperClass> messages)
{
this.messages = messages;
}
}
DetailSuperClass выглядит следующим образом:
@XmlSeeAlso({Details1.class, Details2.class})
public class DetailSuperClass implements Serializable
{ ... }
Подклассы:
public class Details1 extends DetailSuperClass
{ private List<DTOA> someDTOAObjects = new ArrayList<DTOA>();}
public class Details2 extends DetailSuperClass
{ private List<DTOB> someDTOBObjects = ArrayList<DTOB>();}
Маршалл для объекта с сообщениями типа Details1 или Details 2 работает нормально.XML-файл имеет атрибут xsi: type, и это нормально для меня.
Проблема в том, что есть пара xml-файлов без xsi: type, которые необходимо разобрать.Из-за аннотации XmlSeeAlso я получаю объекты типа DetailSuperClass, но мне нужно по умолчанию Details1.
Кто-нибудь знает, как я могу сказать JAXB, что нужно использовать подкласс по умолчанию, если не указан xsi: type?
Заранее спасибо!