Adding New Scripting VariablesPage added by Justin EdelsonAs of r902947, Sling Scripting allows bundles to contribute objects to the variables available to scripts. This is done by implementing the interface org.apache.sling.scripting.api.BindingsValuesProvider and exposing the implementation as an OSGi Service. Implementations are able to add one or more name/value pairs to the javax.script.Bindings object, but they cannot overwrite or remove any of the default scripting variables (defined here: Scripting variables). These custom bindings can be configured to apply to any scripting language or a specific scripting language. An example of the binding of a custom object can be found in the commons.json bundle (source):
import javax.script.Bindings; import org.apache.sling.commons.json.groovy.JSONGroovyBuilder; import org.apache.sling.scripting.api.BindingsValuesProvider; /** * BindingsValuesProvider which binds an instance of JSONGroovyBuilder. * * @scr.component immediate="true" metatype="no" * @scr.service * * @scr.property name="service.description" value="JSONGroovyBuilder BindingsValuesProvider" * @scr.property name="service.vendor" value="The Apache Software Foundation" * * @scr.property name="javax.script.name" value="groovy" */ public class JSONGroovyBuilderBindingsValuesProvider implements BindingsValuesProvider { /** * {...@inheritdoc} */ public void addBindings(Bindings bindings) { bindings.put("jsonBuilder", new JSONGroovyBuilder()); } } In this example, the jsonBuilder key is bound to an instance of JSONGroovyBuilder only for Groovy scripts.
Change Notification Preferences
View Online
|
Add Comment
|
- [CONF] Apache Sling > Adding New Scripting Variables confluence