Oops. double negative :)

/but the compiled handlebars function may not be MT-unsafe./

should have been

"but the compiled handlebars function may not be MT-safe".

-Sundar

On Tuesday 26 May 2015 11:15 AM, A. Sundararajan wrote:
Actually either the Handlebars.compile or the compiled function could be MT-unsafe. FWIW, I tried the following change to handlebars's render.js script:

function renderHandlebars(template, model) {

    // Create a real Javascript Object from the model Map

    var data = {};
    for (var k in model) {
        // Convert Java Iterable and List to real Javascript arrays

        if (model[k] instanceof Java.type("java.lang.Iterable")) {
            data[k] = Java.from(model[k]);
        } else {
            data[k] = model[k];
        }
    }
    // TODO Manage compiled template cache
    var compiledTemplate = Handlebars.compile(template);

    // call compiled template function as synchronized
    // use Handlebars object as lock

    return Java.synchronized(function(data) {
        compiledTemplate(data);
    }, Handlebars);
}

With that change, it appears handlebars MT-usage seems fine [i.e., no exception seen]. This suggests that the Handlebars.compile itself is MT-safe but the compiled handlebars function may not be MT-unsafe. FYI.

Reply via email to