J'ai deux schémas qui sont traitées à l'aide de JAXB. Le premier schéma est analysée et les informations de ce est utilisé à l'aide d'un épisode de fichier (suite http://www.java.net/blog/2006/09/05/separate-compilation-jaxb-ri-21). Le deuxième schéma, les importations de la première, et de nouveau à l'aide de jaxb, est traitée. Tout cela fonctionne comme prévu.
Mais maintenant, j'ai un élément dans le premier schéma, qui est utilisé dans la seconde à l'aide d'une référence.
Schéma:
<schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Test/">
<element name="type" type="test:MyType"></element>
Schéma b:
<schema elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:second="http://www.example.org/Second/"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Second/">
<import namespace="http://www.example.org/Test/" />
<complexType name="SomeType">
<sequence>
<element ref="test:type" minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
Pendant le traitement, rien n'est mauvais, mais le code généré pour les deux schémas fournissent la même méthode:
public JAXBElement<EventType> createType(TypeType value)
Au moment de l'exécution, le message d'erreur suivant:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of
IllegalAnnotationExceptions
The element name {http://www.example.org/Type/}type has more than one mapping.
Comment puis-je empêcher JAXB de la création de la double createType méthodes?
Merci à l'avance!
Mise à jour: j'ai posé cette même question sur le JAXB liste de diffusion, sur cette liste, j'ai aussi posté un exemple de travail. Le fil et l'exemple peut être trouvé à: http://java.net/projects/jaxb/lists/users/archive/2011-03/message/18
Sur cette liste, j'ai suggéré une solution de contournement, et maintenant je peux utiliser les schémas de la façon dont je l'aime. Mais je pense toujours que JAXB ne doivent pas créer de supplémentaires de "créer" la méthode, car il doit déjà être dans l'épisode de fichier.