Re: Problem with static classes and chained contexts
Nathan Bubna <[email protected]>
| Newsgroups | gmane.comp.jakarta.velocity.user |
|---|---|
| Message-ID | <CAFyaDjGRrmoHpX4jhkjhLvJ9p9xBLjCC-z+xe2hXHBqL+2PcnQ@mail.gmail.com> |
Yeah, i'd call that a bug. Would you mind filing it in JIRA? As for performance gains, i would operate under the assumption that the gains are small. Yes, you cut down on map puts and short-term memory churn, but each reference insertion has an extra lookup step now. Unless the default context objects are significant in terms of init-time or memory usage (which does not appear to be the case from your example, i would expect the return to be negligible. On Thu, Jun 7, 2012 at 7:53 AM, Steve O'Hara <[email protected]> wrote: > Hi All, > > Has anyone else noticed a problem with chained contexts and static classes? > As a performance improvement, I decided to put all our static context objects into a context that would be the basis of all new contexts e.g. > > private static Context chainedContext; > static { > chainedContext = Z_getDefaultVelocityContext(); > } > > private static Context Z_getDefaultVelocityContext() { > Context context = new VelocityContext(); > context.put("TmpDir", Common.getTemporaryDirectory()); > context.put("math", new MathTool()); > context.put("number", new NumberTool()); > context.put("sort", new SortTool()); > context.put("LSQUARE_CHAR", '['); > context.put("RSQUARE_CHAR", ']'); > context.put("LCURLY_CHAR", '{'); > context.put("RCURLY_CHAR", '}'); > context.put("DOT_CHAR", '.'); > context.put("NEWLINE", '\n'); > context.put("HASH", '#'); > context.put("DOLLAR", '$'); > context.put("DQUOTE", '"'); > context.put("Utils", Common.class); > return context; > } > > public static Context getVelocityContext(boolean runtimeMode) { > Context context = new VelocityContext(chainedContext); > context.put("Context", context); > return context; > } > > The problem is that in this configuration, $Utils is not available in the scripts. > All the other instantiated objects are OK. Works fine of course if the static class is added to each outer context. > > I guess it's a bug but actually am I really going to gain much performance with this technique anyway? > > Cheers > Steve > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] >