You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2016/04/15 17:19:02 UTC

svn commit: r1739317 - /sling/site/trunk/content/documentation/bundles/scripting/scripting-sightly.mdtext

Author: radu
Date: Fri Apr 15 15:19:01 2016
New Revision: 1739317

URL: http://svn.apache.org/viewvc?rev=1739317&view=rev
Log:
CMS commit to sling by radu

Added:
    sling/site/trunk/content/documentation/bundles/scripting/scripting-sightly.mdtext   (with props)

Added: sling/site/trunk/content/documentation/bundles/scripting/scripting-sightly.mdtext
URL: http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/bundles/scripting/scripting-sightly.mdtext?rev=1739317&view=auto
==============================================================================
--- sling/site/trunk/content/documentation/bundles/scripting/scripting-sightly.mdtext (added)
+++ sling/site/trunk/content/documentation/bundles/scripting/scripting-sightly.mdtext Fri Apr 15 15:19:01 2016
@@ -0,0 +1,80 @@
+Title: Sightly Scripting Engine
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+The Apache Sling Sightly Scripting Engine is the Java reference implementation of the [Sightly HTML Templating Language](https://github.com/Adobe-Marketing-Cloud/sightly-spec), passing all the tests defined by the [Sightly Technology Compatibility Kit](https://github.com/Adobe-Marketing-Cloud/sightly-tck).
+
+[TOC]
+
+# Modules
+
+The Sling implementation is comprised of the following modules:
+
+1. [`org.apache.sling.scripting.sightly`](https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/engine) - the core Sightly Scripting Engine bundle
+2. [`org.apache.sling.scripting.sightly.js.provider`](https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/js-use-provider) - the Sightly JavaScript Use Provider, implementing support for the `use` JavaScript function
+3. [`org.apache.sling.scripting.sightly.models.provider`](https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/models-use-provider) - [Sling Models](https://sling.apache.org/documentation/bundles/models.html) Use Provider
+4. [`org.apache.sling.scripting.sightly.repl`](https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/repl) - Sightly Read-Eval-Print Loop Environment (REPL)
+
+# The Use-API
+
+The [Sightly HTML Templating Language Specification](https://github.com/Adobe-Marketing-Cloud/sightly-spec/blob/1.2/SPECIFICATION.md#4-use-api) explicitly defines two ways of implementing support for business logic objects:
+
+1. Java Use-API, through POJOs, that may optionally implement an `init` method:
+
+        /**
+         * Initialises the Use bean.
+         *
+         * @param bindings All bindings available to the Sightly scripts.
+         **/ 
+        public void init(javax.script.Bindings bindings);
+
+
+2. JavaScript Use-API, by using a standardised use function
+
+        /**
+         * In the following example '/libs/dep1.js' and 'dep2.js' are optional
+         * dependencies needed for this script's execution. Dependencies can
+         * be specified using an absolute path or a relative path to this
+         * script's own path.
+         *
+         * If no dependencies are needed the dependencies array can be omitted.
+         */
+        use(['dep1.js', 'dep2.js'], function (Dep1, Dep2) {
+            // implement processing
+        
+            // define this Use object's behaviour
+            return {
+                propertyName: propertyValue
+                functionName: function () {}
+            }
+        });
+        
+The Sightly implementation from Sling provides the basic POJO support through the [`org.apache.sling.scripting.sightly.pojo.Use`](https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/pojo/Use.java) interface and the [`org.apache.sling.scripting.sightly.impl.engine.extension.use.JavaUseProvider`](https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java), whereas the `use` function is implemented by the `org.apache.sling.scripting.sightly.js.provider` bundle.
+
+However, the Sling implementation provides a few extensions to the Use-API.
+
+## Sling-specific Use-API Extensions
+
+A full Sightly installation provides the following Use Providers, in the order of their priority:
+
+| Use Provider  | Bundle    | Service Ranking   | Functionality     |Observations|
+|-------------- |--------   |-----------------  |---------------    |----------- |
+|`org.apache.sling.scripting.sightly.impl.engine.extension.use.RenderUnitProvider`|`org.apache.sling.scripting.sightly`|100|support for loading Sightly templates through `data-sly-use`||
+|`org.apache.sling.scripting.sightly.models.impl.SlingModelsUseProvider`|`org.apache.sling.scripting.sightly.models.provider`|95|support for loading Sling Models||
+|`org.apache.sling.scripting.sightly.impl.engine.extension.use.JavaUseProvider`|`org.apache.sling.scripting.sightly`|90|support for loading Java objects such as: <ol><li>OSGi services</li><li>POJOs adaptable from `SlingHttpServletRequest` or `Resource`</li><li>POJOs that implement `Use`</li></ol>||
+|`org.apache.sling.scripting.sightly.js.impl.JsUseProvider`|`org.apache.sling.scripting.sightly.js.provider`|80|support for loading objects defined in JavaScript||
+|`org.apache.sling.scripting.sightly.impl.engine.extension.use.ScriptUseProvider`|`org.apache.sling.scripting.sightly`|0|support for loading objects returned by scripts interpreted by other Script Engines available on the platform||

Propchange: sling/site/trunk/content/documentation/bundles/scripting/scripting-sightly.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native