This is precisely the stuff I've been working on for the past few weeks.
I too am successful with pulling templates from a DB and so far, so
good.
I'll need to dive back into the code to see if there's a way to do a
template parse and be able to catch an exception if there's an error.
in fact today I was hammering out ideas for the "svn-like" versioning/
staging stuff.
-mike
On Jan 18, 2008, at 8:03 PM, Daniel Jue wrote:
dangerous ideas....
This could be an interesting way of running an application straight
from a DB backend, where the DB can act as a versioning system if
needed. A new updated class or template is uploaded to the DB, and
the flushCache() causes the CTS service to pick up the newest template
versions. This could provide CMS type "publishing" of individual
pieces (components/pages) by version. Then you can still roll back to
a previous version of a class/template if you want, all via a web UI.
Kind of like SVN.
Can the flushCache() flush only specific classes/templates? Or does
it flush everything?
On Jan 18, 2008 6:14 PM, Howard Lewis Ship <[EMAIL PROTECTED]> wrote:
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]