2010-03-26 8 views
0

J'ai récemment généré deux versions de classes Java générées par JAXB. Donc, je reçois deux paquets: V1_0 et V2_0Comment générer plusieurs versions de classes Java générées par JAXB?

Je remarque que j'ai seulement une ObjectFactory générée. Le problème est que cette ObjectFactory est spécifique à une version (ici c'est spécifique à ma version v1_0). Donc la question est: Puis-je configurer JAXB pour permettre de faire une ObjectFactory pour chaque version?

Merci beaucoup.

Répondre

0

Une usine d'objets pour les deux versions? Non, ce n'est pas possible. Vous obtenez deux ensembles de classes dans deux packages - il n'est pas possible qu'une fabrique d'objets les serve tous les deux.

+0

Non, je voulais dire une usine d'objets pour CHAQUE version. Je voudrais que JAXB génère deux fabriques d'objets dans deux paquets différents. Ainsi, un objectFactory peut toujours être spécifique à V1_0 ou V2_0 sans problème. Merci beaucoup. –

+0

Je ne suis pas sûr de comprendre le problème alors. XJC génère normalement une fabrique d'objets par paquet. Comment générez-vous exactement ces deux versions? – lexicore

1

Si les deux versions de l'API sont dans le même espace de noms, c'est horrible! Vous aurez l'usine d'objets d'un cycle de génération écrasant l'usine objet produite par l'autre (ou inhibant, j'oublie ce que fait effectivement xjc). C'est aussi horrible pour les clients de l'API puisqu'ils ne sauront pas quelle version de l'API ils traitent (sauf si vous faites d'autres trucs désagréables, ce qui devrait être découragé, s'ils sont dans le même espace de noms qu'ils devraient être la même API). La solution consiste à placer les deux API dans des espaces de noms différents afin qu'ils soient générés dans différents packages avec différentes fabriques d'objets. (Méfiez-vous également de toute utilisation de the -p option to xjc, qui peut causer des choses à entrer dans le même espace de nom et vous donner ces maux de tête d'écrasement.)