Christian Haul wrote:
This is a big problem, indeed. Since many of those actually build their private cache from a source, I have started a SourceCache in the scratchpad block but got distracted :-( Still, maybe it could be useful when cleaning up the private caches.
The only implementation (SoftSourceCache) uses a ReferenceMap from JCCol that could at least be cleaned by the garbage collector when memory is low. Using a store would surely be better, though. But it's only a first cut :-)
I was thinking to introduce some helper class to handle source-related store entries, along the lines of XSLTProcessor.TransformerHandlerAndValidity. Your SourceCache goes that way, but IMO it should be "just" a helper class rather than a component. Also, it manages its own cache ;-)
:-) I've chosen a component since I have anticipated different implementations. Eg implementations could differ on how they hangle validities. One implementation might chose to ignore validities for example. However, by using excalibur store as back-end and doing modifications of the cache validity at the source a helper class is fine as well.
Just another thought on "transient": A good example for a transient store is IMO a request attribute. Here, transient relates to the life span of a request. The store content is present while the current request is processed and afterwards the store is cleaned up. But this is too Cocoon specific to be introduced into avalon :-)
Chris.
