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]

Répondre à