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

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());
méthode de transformation d'un objet dans le transformer:

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;
 
	}
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
 
List<MonDTO > liste =  monWebService.lister();
List<MonObjet> liste2 = (List<MonObjet>) MonTransformer
				.transformList(liste, new MonObjet());
et le transformer :

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;
	}
Bien sur ça ne marche pas , la même instance est ajoutée à chaque fois dans la 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