Après plusieurs tests, notamment l'API de RequestFactory de Google, on s'en sort pas à utiliser Wikitty en GWT, du coup on change notre fusil d'épaule. L'idée c'est de créer un module wikitty-dto. Ce module comprendrais un générateur pour un DTO et un helper qui fait les transformations entre Wikitty et DTO. Le module s'occupe de faire la génération du modèle de l'API en utilisant son générateur. L'idée c'est de n'utiliser les DTOs que si nécessaire et donc de ne pas les mettre dans l'API Wikitty. Ensuite un projet qui veut utiliser les DTOs, dans la configuration du plugin EUGene, devra mettre en dépendance les générateurs de wikitty-generators et ceux de wikitty-dto. Bonne idée, mauvaise idée ?
Le 18/11/2010 18:36, Jean Couteau a écrit :
Bonne idée, mauvaise idée ?
Après les premiers essais, ça semble être une bonne idée mais : nos DTOs doivent implanter leur interface qui étends BusinessEntity. BusinessEntity a une méthode qui retourne un Wikitty donc je doit importer Wikitty, qui doit importer FieldType et WikittyExtension (et CloneNotSupportedException, mais on peut gérer), qui doit importer... Bref, on va encore se retrouver à importer la terre. Donc soit en enlève la méthode /** * Return wikitty * * @return the wikitty actually storing the entity's data * @since 2.2.1 */ public Wikitty getWikitty(); sur BusinessEntity, soit on crée des interfaces pour FieldType et WikittyExtension (ça me semble pas trop propre et ça doit impliquer pas mal de changements). D'autres idées, une préférence ?
On Mon, 22 Nov 2010 10:13:43 +0100 Jean Couteau <couteau@codelutin.com> wrote:
Le 18/11/2010 18:36, Jean Couteau a écrit :
Bonne idée, mauvaise idée ?
Après les premiers essais, ça semble être une bonne idée mais :
nos DTOs doivent implanter leur interface qui étends BusinessEntity. WikittyBusinessEntity ?
BusinessEntity a une méthode qui retourne un Wikitty donc je doit importer Wikitty, qui doit importer FieldType et WikittyExtension (et CloneNotSupportedException, mais on peut gérer), qui doit importer...
Bref, on va encore se retrouver à importer la terre.
Donc soit en enlève la méthode
/** * Return wikitty * * @return the wikitty actually storing the entity's data * @since 2.2.1 */ public Wikitty getWikitty();
sur BusinessEntity,
soit on crée des interfaces pour FieldType et WikittyExtension (ça me semble pas trop propre et ça doit impliquer pas mal de changements).
D'autres idées, une préférence ?
Bah si vous faites des DTO, ils doivent complètement neutres et n'embarquer que des données et certainement pas un lien vers un wikitty. Pour moi un DTO c'est un simple pojo avec des propriétés simples. Dans le cas de wikitty, je ne sais pas exactement ce qu'il faut pour s'y retrouver... Des ids + des extensions ? si c'est ça c'est des string donc ca doit marcher. Si y'a des associations alors elles doivent être faites sur d'autres DTO et pas sur des entités. Cela paraît un peu dupliquer des objets pour rien mais c'est je pense une très bonne pratique pour séparer les couches. Pour faire remplir les DTOs y'a des librairies pour ça, dans Topia on a tenté de le faire nous même et on tombe vite sur des problèmes lors des transferts d'associations. Dozer semblait selon Benjamin bien coller au besoin, j'avais regardé et avait pris un peu peur, mais faudrait peut-être recreuser cette piste.
_______________________________________________ Wikitty-devel mailing list Wikitty-devel@list.nuiton.org http://list.nuiton.org/cgi-bin/mailman/listinfo/wikitty-devel
-- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 email: chemit@codelutin.com http://www.codelutin.com
On Mon, 22 Nov 2010 10:20:59 +0100 chemit <chemit@codelutin.com> wrote:
Donc soit en enlève la méthode
/** * Return wikitty * * @return the wikitty actually storing the entity's data * @since 2.2.1 */ public Wikitty getWikitty();
sur BusinessEntity,
soit on crée des interfaces pour FieldType et WikittyExtension (ça me semble pas trop propre et ça doit impliquer pas mal de changements).
D'autres idées, une préférence ?
Bah si vous faites des DTO, ils doivent complètement neutres et n'embarquer que des données et certainement pas un lien vers un wikitty.
Je pense que retirer la methode getWikitty c la bonne solution. Ensuite on ajoute sur le proxy (?) la methode getWikitty(BusinessEntity):Wikitty Si on a un WikittyImpl on cast pour appeler le getWikitty qui retournera le wikitty interne. Si on a autre chose (ex un DTO), le proxy fait une demande au serveur pour avoir le wikitty (mais il ne sera pas synchro avec le DTO :() donc il faudrait ensuite mettre a jour le wikitty avec les données du DTO avant de le retourner. -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
participants (3)
-
Benjamin POUSSIN -
chemit -
Jean Couteau