Je suis la définition d'une méthode d'usine statique:méthodes d'usine statiques dans JAXB Moxy
@XmlType(factoryClass=DummyFactory.class, factoryMethod="createNew")
public abstract MyClass() {
}
La raison pour laquelle je suis en utilisant des méthodes d'usine est que MyClass
est abstraite, et comment obtenir une instance de celui-ci dépend de certaines annotations de la classe. Cette logique est intégrée dans la méthode d'usine createNew
.
En outre, la classe d'usine DummyFactory
est abstraite. Autant que je comprends les classes d'usine n'ont pas besoin de fournir un constructeur par défaut si leur méthode d'usine est statique (http://download.oracle.com/javaee/6/api/javax/xml/bind/annotation/XmlType.html).
Ceci est une simplification brute de la façon dont la classe d'usine ressemble à:
public abstract class DummyFactory {
public static MyClass createNew() {
// code for returning a new instance of MyClass
}
}
Cependant, lorsque je tente de désorganiser un document XML, je reçois l'exception suivante:
Exception [EclipseLink-171] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The factory class does not define a public default constructor, or the constructor raised an exception.
Internal Exception: java.lang.InstantiationException
Première Je pensais que je n'avais pas obtenu quelque chose correctement dans l'explication des classes et des méthodes d'usine, mais ensuite j'ai essayé avec JAXB RI et cela fonctionne bien là. Donc ma question est:
Existe-t-il un moyen de faire fonctionner MOXy avec des classes d'usine abstraites?
(JAXB RI me donne d'autres types de problèmes, c'est la raison pour laquelle je préférerais ne pas l'utiliser).
Je suis le chef de file Moxy et cela semble être un bug. Pourriez-vous entrer un bogue pour ce problème: https://bugs.eclipse.org/bugs/enter_bug.cgi?product=EclipseLink. Nous devrions être en mesure d'obtenir une solution sur Moday. –
Terminé. Bug soumis: https://bugs.eclipse.org/bugs/show_bug.cgi?id=362984. Merci beaucoup pour la réponse rapide. – Sergio
Nous avons trouvé la solution, nous avons juste besoin de débusquer les tests. Je pense que nous allons vérifier le correctif demain. –