On Sun, Aug 5, 2012 at 12:03 AM, Claude Brisson <cla...@renegat.net> wrote:

> > > Could this example be more generic? For instance, context could be
> > > read from a flat properties file.
> > >
> >
> > I think you meant the javax.script.ScriptContext used in this code
> > which can be get from ScriptEngine. This cannot obtain from a
> > properties file. Because this is how JSR 223 API is expected to
> > behave. And once you obtain the context from the engine you can
> > modify it by adding attributes, writers, readers and removing them.
>
> No, sorry, I meant the Velocity context. For instance, if I have a flat
> file that contains
>   foo = bar
> this would typically call velocityScriptEngine.put("foo","bar").
>
> > >> Also, concerning ScriptEngine.eval(String): the String argument
> > >> should be the content of the script itself, not the filename of
> > >> the script.
> > >>
> > >> This can be done I think. I will do the necessary changes and
> > >> commit when
> > > all tests get passed.
> > >
> >
> > One question. This has fixed (I have the patch but not comited yet)
> > except for the velocity tooling related scenario .Suppose we pass a
> > script of the .vm file to engine.
> > But internally how to obtain the template.
> > (velocityEngine.getTemplate(String)) . This method should provide the
> > template name(assuming script is in the classspath).
> > How do we deal with this when we provide the script itself ?
>


> >
>
> By use of the appropriate velocityEngine.evaluate() method that takes
> the template as a String. It will bypass Velocity's internal cache, but
> our first goal is to respect the API, then to try to optimize.
>
> Speaking about it, since the engine has access to the filename, we
> could try to still use the cache. Velocity's cache is here to not
> only bypass the actual reading of the file, but also the parsing
> process - and since the OS will already cache the file in memory,
> it's the parsing of the template which is the most interesting to
> avoid via the caching mechanism. Here, we're given the content of the
> file at the same time as its name (via the special property
> "javax.script.filename"). So we can still do some caching, by just
> ignoring the newly provided content when the filename is present in the
> cache.
>
> For this to work properly, we may have to implement our own
> Velocity ResourceLoader.w
>

So what you basically intending is to provide an additional context
parameter which has the file name of the template(so that to read it inside
evaluate method and use that for velocityEngine.getTemplate(filename)
) while providing the script it self to the evaluate method ?

>
> Did you follow my idea, Dishara? Are you ok with it?
>
>
>   Claude
>
>
>


-- 
Thanks
/Dishara

Reply via email to