Vlad Bailescu created SLING-7207: ------------------------------------ Summary: Get rid of runtime reflection in HTL expression evaluation Key: SLING-7207 URL: https://issues.apache.org/jira/browse/SLING-7207 Project: Sling Issue Type: Improvement Components: Scripting Affects Versions: Scripting HTL Engine 1.0.42, Scripting HTL Java Compiler 1.0.14, Scripting HTL Compiler 1.0.14 Reporter: Vlad Bailescu Fix For: Scripting HTL Java Compiler 1.0.16, Scripting HTL Engine 1.0.44
At the moment the following expression {code} <sly data-sly-use.obj="com.my.Obj">${obj.message}</sly> {code} generates this Java code: {code} Object _global_obj = null; _global_obj = renderContext.call("use", "com.my.Obj", obj()); { Object var_0 = renderContext.call("xss", renderContext.getObjectModel().resolveProperty(_global_obj, "message"), "text"); out.write(renderContext.getObjectModel().toString(var_0)); } {code} Resolving the property is done via reflection at runtime. Given the fact that for most use providers (JS is an exception) we know the type of {{_global_obj}} we could determine the right method to call at compile time. Resulting code might look something like: {code} com.my.Obj _global_obj = renderContext.call("use", "com.my.Obj", obj()); { Object var_0 = renderContext.call("xss", _global_obj.getMessage()), "text"); out.write(renderContext.getObjectModel().toString(var_0)); } {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)