Bonjour,
Je me casse les dents sur la création d'un transformer générique.
Mon but est d'avoir une classe unique, qui transforme tout type d'objet.
La partie mapping se fait via dozer , dans l'exemple via l'objet "dozerMapper", et fait de la recopie de bean de l'objet source vers l'objet cible, tout marche bien sur ce point la.
Pour l'instant j'arrive à transformer un objet unique:
exemple de récupération d'un dto via web service et appel du transformer
méthode de transformation d'un objet dans le transformer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 MonDTO monDTO = monWebService.findObjetById(x); MonObjet monObjet = (MonObjet) MonTransformer.transform( monDTO ,new MonObjet());
Par contre j'ai du mal sur la transformation d'une liste d'objets:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public static Object transform(Object objetSource,Object objetCible) { dozerMapper.map(objetSource, objetCible); return objetCible; }
et le transformer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 List<MonDTO > liste = monWebService.lister(); List<MonObjet> liste2 = (List<MonObjet>) MonTransformer .transformList(liste, new MonObjet());
Bien sur ça ne marche pas , la même instance est ajoutée à chaque fois dans la liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static List transformList(List listeSource, Object objetCible) { List<Object> liste = new ArrayList<Object>(); for (Object objetSource : listeSource) { liste.add(transform(objetSource, objetCible)); } return liste; }
J'aimerai spécifier un type dans les paramètres de la méthode, pour pouvoir instancier un nouvel objet du type désiré à chaque passage dans la boucle, mais je ne vois pas comment faire
merci
Partager