J'essaye de faire fonctionner JAXB avec une classe groovy, cependant, il semble que ça ne marche pas mais la version java fonctionne. Voici le code ...Comment faire pour que Groovy et JAXB jouent bien ensemble
Voici les scénarios:
Si 2 et 3 sont décommentée il fonctionne très bien.
Si 1 et 4 sont décommenté je reçois:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:
2 counts of IllegalAnnotationExceptions
groovy.lang.MetaClass is an interface, and JAXB can't handle interfaces.
Si 1 et 5 sont décommentée je reçois:
javax.xml.bind.JAXBException: class org.oclc.presentations.simplejaxb.PlayerGroovy
nor any of its super class is known to this context.
Toutes les idées?
Java:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Player {
}
Groovy:
import javax.xml.bind.annotation.XmlRootElement
@XmlRootElement
public class PlayerGroovy {
}
Test:
import org.junit.Test
import javax.xml.bind.JAXBContext
import javax.xml.bind.Marshaller
import org.junit.Assert
class PlayerTest {
@Test
public void testJaXB(){
//1 PlayerGroovy player = new PlayerGroovy()
//2 Player player = new Player()
StringWriter writer = new StringWriter();
//3 JAXBContext context = JAXBContext.newInstance(Player.class);
//4 JAXBContext context = JAXBContext.newInstance(PlayerGroovy.class);
//5 JAXBContext context = JAXBContext.newInstance(PlayerGroovy.getClass());
Marshaller m = context.createMarshaller();
m.marshal(player, writer);
println(writer)
Assert.assertTrue(true)
}
}
+1 excellente réponse – skaffman