Hi:

I am new to HiveMind, though relatively familiar with component
frameworks in general.  I am currently working on a new application
and have a question about best practices.

Part of this application is being built using MVC-2 patterns (i.e.,
"push" MVC).  In other words, I would like to use services to build up
a set of data, then "push" that data to a templating service (in this
case, Velocity, but that could change) to be rendered for the client.

To accomplish this, I have created a generic TemplateEngine interface
and a specific implementation called VelocityTemplateEngine.

When the VelocityTemplateEngine is instantiated it needs to determine
the location of the Velocity configuration file.  The location of this
file is neither static nor absolute -- the file is typically found at
runtime as a resource relative to the WAR file it is deployed in.

If I were *not* writing a HiveMind service, I would simply use the
getResourceAsStream method on the ServetContext to load the
appropriate Velocity configuration at runtime based on the servlet's
context.

However, since I am using HiveMind, I would like to create a more
flexible and reusable VelocityTemplateEngine.  Ideally, the service
instance would be able to determine, upon instantiation, whether or
not it was running in the context of a servlet.  If it was (i.e., it
had access to a ServletContext), then it would load the resources
accordingly.  If not, then it would fall back on default paths or on
simple configuration values from HiveMind (ApplicationDefaults,
perhaps?).

My question is this:  what is the best way for the
VelocityTemplateEngine instance to be made aware of a global context?

It feels wrong to explicitly pass the ServletContext to a generic
TemplateEngine, which might not be running in a servlet at all.  Is it
possible for the calling code to "contribute" the ServletContext to a
configuration point for the TemplateEngine?  If so, how?

This pattern will likely apply in more scenarios than simply the
template example, so I want to make sure I understand the correct way
to proceed.

Thanks in advance!

-DeWitt

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

Reply via email to