Frédéric Glorieux wrote:
Bonjour,
Je cherche à avoir un générateur xmldb cacheable.
J'utilise Exist.
Dans certains cas, Exist sait donner une date de modification (quand
on demande une ressource précise). Il est possible que ceci puisse
s'étendre aux collections, et donc aux requêtes effectuées sur une
collection.
Je fais marcher, mais je ne sais pas si c'est optimal.
Comme je vois que Sylvain à toucher à XMLDBSource il y a moins de 3
semaines
http://svn.apache.org/viewcvs.cgi/cocoon/blocks/xmldb/trunk/java/org/apache/cocoon/components/source/impl/
Mes questions ont peut être un peu d'actualité.
(Je m'en suis d'ailleurs aperçu un peu tard. Je travaillais sur une
vieille version de la classe, beaucoup moins bien factorisée)
J'ai surchargé
XMLDBSource.getValidity()
pour qu'il renvoit un TimeStampValidity(lastModified) quand il est
possible de récupérer un long lastModified.
ça marche.
J'ai vu ces méthodes complémentaires sur l'interface EXistResource qu'il
serait bien pratique d'utiliser pour avoir une implémentation plus
complète de l'interface Source. Malheureusement, la license d'Exist
interdit ces extensions spécifiques d'être utilisées dans le code
disponible chez Apache...
(Je le vérifie avec une xsl qui me tagge le xml généré avec une date.
Tant que je n'ai pas touché à la ressource Exist (ou à une xsl du
tuyau) la date ne change pas, et si je modifie la ressource exist,
tout est regénéré )
Maintenant, les questions que je me pose
* Faut il fabriquer un TimeStampValidity à chaque fois que
getValidity() est appelé ?
Oui. La création d'un petit objet n'est pas coûteuse, et si on le
gardait dans l'objet Source, cela complexifierait inutilement le code
pour la gestion d'état.
* C'est certainement une mauvaise pratique, mais j'ai eu besoin d'un
getter sur user:password, cela me permet de reprendre la connexion
configurée en cocoon.xconf depuis ailleurs
Ca n'est pas forcément une mauvaise pratique. Lorsqu'on est sûr de
l'implémentation concrète de Source qu'on utilise, des méthodes
supplémentaires peuvent faciliter la vie. FileSource par exemple, permet
d'accéder au File sous-jacent. Je pensais d'ailleurs mettre un accès
public à la ressource et la collection dans XMLDBSource. Ca pourrait aider?
* J'imagine que tant que l'api xmldb ne proposera pas un équivalent
de getLastModified() ce ne serait pas une bonne pratique de mettre ce
genre de choses selon chaque implémentation xmldb ?
C'est plus une question de licence que de bonne pratique...
Sylvain
--
Sylvain Wallez Anyware Technologies
http://bluxte.net http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]