Le Sat, 30 May 2009 12:09:39 +0200, Benjamin POUSSIN <poussin@codelutin.com> a écrit :
On Thu, 28 May 2009 15:46:16 +0200 Arnaud Thimel <thimel@codelutin.com> wrote:
Salut,
Dans une application nous ouvrons plusieurs 'rootContext'. Ils sont différenciés car l'objet Properties utilisé pour la récupération du context varie. Il varie, mais tous les rootContext pointent sur la même base. Est-ce que ça ne peut pas être source à problème ?
D'autre part, dans le TopiaContextFactory, j'ai trouvé ça : static public TopiaContext getContext(Properties config) throws TopiaNotFoundException { TopiaContextImpl result = contextCache.get(config); if (result == null || result.isClosed()) { result = new TopiaContextImpl(config); contextCache.put((Properties) config.clone(), result); } }
Comme le "equals" de Properties fait un "deep equals", j'ai l'impression que le .clone() ne sert à rien ?
En fait le .clone sert surtout a etre sur qu'aucun code externe va modifier le properties a l'exterieur ce qui impliquerait des problemes pour le TopiaContextFactory.
Si vous souhaitez 2 root contexte vraiment different et que vous avez exactement le meme fichier de propriete. Je pense que le mieux est d'ajoute une entre dans le fichier de configuration genre.
dans le 1er fichier de propriete context.number=1 et dans le deuxieme context.number=2
de cette facon, le TopiaContextFactory ne retournera pas le meme TopiaContext pour les deux fichiers de propriete.
Mais je ne sais pas si je repond exactement au probleme :(
Pour revenir 2s sur le clone, je me demande s'il ne devrait pas etre fait plus tot (avant l'appel du new TopiaContextImpl (a bien reflechir)
Dans ObServe, je fais un clone avant de récupérer un rootContext pour être sûr d'être bien isolé de tout changement dans le properties. On devrait rajouter dans la javadoc de la méthode de TopiaContextFactory une note technique pour indiquer ce clone.
-- Benjamin -------------------- 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 _______________________________________________ Topia-devel mailing list Topia-devel@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/topia-devel
-- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 email: chemit@codelutin.com http://www.codelutin.com