-
Type: Bug
-
Status: Resolved
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: 5.4.2
-
Fix Version/s: 5.5
-
Component/s: Dashboard / OpenSocial (deprecated)
The Gadgeti18n#supportedLang initialization is not thread-safe and after being wrapped in the Freemarker wrapper class we randomly end up with the following stacktrace when loading the OpenSocial dashboard:
freemarker.core.InvalidReferenceException: Expression lang is undefined on line 2, column 23 in dynamic-translations.ftl. at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124) at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134) at freemarker.core.Dot._getAsTemplateModel(Dot.java:78) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179) at freemarker.core.Environment.visit(Environment.java:415) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.Environment.include(Environment.java:1477) at freemarker.core.Include.accept(Include.java:169) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.Environment.process(Environment.java:188) at org.nuxeo.ecm.platform.rendering.fm.FreemarkerEngine.render(FreemarkerEngine.java:183) at org.nuxeo.opensocial.webengine.gadgets.render.GadgetSpecView.render(GadgetSpecView.java:187) at org.nuxeo.opensocial.webengine.gadgets.GadgetResource.getGadgetFile(GadgetResource.java:63) ... 2011-09-29 03:24:30,752 ERROR [freemarker.runtime] Expression lang is undefined on line 2, column 23 in dynamic-translations.ftl. The problematic instruction: ---------- ==> ${lang.language} [on line 2, column 21 in dynamic-translations.ftl] in include "dynamic-translations.ftl" [on line 11, column 5 in gadget://userworkspaces] ----------
The supportedLang field can be statically initialized to avoid this issue.