Problem with static classes and chained contexts
Steve O'Hara <[email protected]>
| Newsgroups | gmane.comp.jakarta.velocity.user |
|---|---|
| Message-ID | <E799462310B3114D89FAEEDFA856A083838927B2@psmail1.pivotal-solutions.co.uk> |
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