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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.