JAXB unmarshalling de documentos “genéricos” do mundo real
Temos um grande conjunto de documentos de configuração do estilo
<foo>
<bar class="com.diedel.Gnarf">
...more content
</bar>
<bar class="de.doedel.Bork">
..more content
</bar>
...
</foo>
As classes de implementação genérica são todas mapeadas usando o próprio Jaxb.
Antes de eu finalmente reverter para o Xstream, uma pergunta para a comunidade: Existe uma maneira (sem truques) de conseguir isso sem ser feito em Jaxb? O que nós tentamos até agora é a desobstrução "aninhada" usando um @ XMLAdapter, onde o campo "bar" obtém um Elemento, obtém a classe alvo e chama outro ciclo "unmarshall". Essa abordagem tem sido a) bem lenta e b) é quebrada com a mudança para o Java 7, onde alguns ThreadLocal mágicos destroem o contexto ao retornar da unmarshall interna.
Descobri que o MOXy pode suportar isso usando @XmlDiscriminatorNode - isso parece uma boa solução e eu realmente gosto da entrada muito boa do Blaise - mas adicionar uma biblioteca de 7MB apenas por diversão não é uma opção.
Outras ideias?