Obviously, we can't predict every possible use case ahead of time.


On Jan 16, 2008 2:56 PM, David Kendall <[EMAIL PROTECTED]> wrote:
> I would like to have a way to force tapestry to flush/reload its caches
> and I am wondering how best to get such functionality incorporated into
> the Tapestry 5 framework. I am not sure what the best forum is to post
> suggestions around T5 so I thought I would start here. If there is a
> more appropriate venue please point me in the right direction.
>
> My specific use case is that I have built functionality to load some
> templates from a content repository. I basically do this through a
> custom class loader - so the source of the templates is largely
> transparent to tapestry. However - when a template in the repository
> changes I need a way to tell tapestry to reload. This is much like the
> existing logic that reloads the caches when a template file changes.
>
> In attempting to implement this I decorated the ComponentTemplateSource
> service with logic to query the content repository for changes. However
> - my implementation was blocked by the fact that the UrlChangeTracker is
> constructed directly by the ComponentTemplateSourceImpl class. This
> means I have no way to force the ComponentTemplateSourceImpl to flush
> its cache. It seems that UrlChangeTracker might easily be implemented as
> an IOC service which would make it available to other services that need
> to handle loading of templates. Such services could then force a cache
> flush through the forceChange() method. An alternative approach might be
> to add a forceChange method to the ComponentTemplateSource interface.
>

Different instances of URLChangeTracker do track different things; a
single shared service
would not be ideal.

> We are very successfully using Tapestry 5 for the next generation user
> interface of our product. We love how flexible and customizable the
> framework is. It fits in very well with our need to be able to customize
> and co-brand our UI.
>
> I am somewhat new to active participation in open source and am
> wondering if there a best practice around lobbying for a feature request
> in a project like tapestry. I am pretty familiar with the tapestry
> source by now - so one option would be for me to code the update I would
> like to see and submit a patch. However - I am sure there are multiple
> approaches to build the functionality I want to see - so it would be
> helpful if someone familiar with the internals of the caching logic
> could provide some feedback if my approach is the optimal.

Supporting your situation could be accomplished by addining a new
method, flushCache(), to the ComponentTemplateSource interface.

Alternatively, you may be able to replace the CTS service with your
own.  A contribution to the Alias service will replace Tapestry's
built-in implementation with one of your own.  You can re-use the
implementation class, but pass in an URLChangeTracker explicitly, so
that you can use the  forceChange() method.

Tricky stuff, but doable.

>
> If there are other strategies that people here find effective please
> suggest them.
>
> Thanks.
>
> David Kendall
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to