2009-10-17 6 views
1

Est-il même possible de lier un objet racine avec des super-champs? J'ai une entité assez compliquée (entités) à lier. Je suis déjà perdu avec elle :)Liaison JiBX - l'objet racine étend un objet

Ceci est ma situation de code:

public class CoreRestWrapper { 
    private Integer page; 
    private Integer perPage; 
} 

public class UserWrapper extends CoreRestWrapper { 
    private Collection<UserCVO> users; 
} 

public class UserCVO { 
    private UserVO userVO; 
    private Map<String, UserMeta> meta; 
} 

public class UserVO extends BaseVO { 
    //nothing here 
} 

public class BaseVO { 
    private Integer id; 
    private String mainName; 
} 

public class UserMeta extends Meta { 
    //nothing here 
} 

public class Meta { 
    private String key; 
    private Object value; 
    private String type; //String, Integer, Boolean, Date 
} 

UserWrapper est mon objet racine. Je voudrais avoir ma réponse xml ressemble à ceci:

<users> 
    <page>1</page> 
    <perPage>2</perPage> 
    <user> 
     <id>1</id> 
     <main>test</main> 
     <meta type="String" key="wtf">just for fun</meta> 
     <meta type="Integer" key="age">99</meta> 
    </user> 
    <user> 
     <id>2</id> 
     <main>test</main> 
     <meta type="String" key="wtf">fooooo</meta> 
     <meta type="Integer" key="age">101</meta> 
    </user> 
</users> 

Ou peut-être même <users page="1" perPage="2"> puis seulement les balises utilisateur ...

Est-ce même possible (pour un débutant en JiBX gérer)?

Répondre

1

Vous pouvez, mais vous devez définir des mappages pour tout dans la hiérarchie. Je suis tombé sur la même chose. Il s'est avéré assez complexe que j'ai trouvé plus simple de simplement créer un objet wrapper JIBX pour mapper (par exemple UserJibxWrapper), puis écrire un petit code pour mapper cela dans les objets internes.

Dans votre cas, cependant, les objets eux-mêmes sont assez simples, vous pouvez donc générer tous les mappages nécessaires. Je travaillerais de haut en bas. Prenez la classe de base et mappez-la, faites fonctionner ce mapping, puis ajoutez une sous-classe et modifiez vos mappages selon vos besoins, et continuez à travailler de cette façon. Puisque JIBX a besoin de tout savoir dans la hiérarchie pour la cartographie, il est plus facile de cartographier le haut vers le bas que vers le bas.

+0

Je l'ai fait exactement comme vous l'avez écrit. J'ai juste besoin de deux jours pour comprendre les reliures de mappage JiBX et la mise en place des costumes. Et oui - mon problème était que j'ai commencé en bas, c'est pourquoi je me suis perdu :) – Trick

+0

Félicitations :). Ce n'est certainement pas facile, mais une fois que vous avez appris certaines des bizarreries dans les mappages, c'est une façon plutôt agréable de gérer la conversion des objets XML. À certains égards, cela m'a rappelé la courbe d'apprentissage dans la création de mappages Hibernate. –

Questions connexes