Можно ли определить пользовательский адаптер сортировки JAXB для члена коллекции? - PullRequest
2 голосов
/ 04 ноября 2011

У меня есть основной класс:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Foo {
  @XmlAnyElement
  public Collection<Object> items;
}

Теперь я добавляю новый элемент в эту коллекцию items во время выполнения:

@XmlJavaTypeAdapter(ItemAdapter.class)
public class Item {
}

И я ожидаю вызова на marshal(Item) в ItemAdapter во время сортировки Foo:

public class ItemAdapter extends XmlAdapter<String, Item> {
  @Override
  public String marshal(final Item item) {
    return "hello";
  }
}

Но этого вызова не происходит, вместо этого я получаю следующее исключение:

[com.sun.istack.SAXException2: unable to marshal type "Item" as 
an element because it is missing an @XmlRootElement annotation]

Что я делаю не так? Помните, что Foo.items может содержать элементы других типов, а не только Item.

...