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

svn commit: r996521 - in /websites/staging/sling/trunk/content: ./ documentation/bundles/ documentation/bundles/scripting/ documentation/development/ news/

Author: buildbot
Date: Fri Sep  2 15:08:28 2016
New Revision: 996521

Log:
Staging update by buildbot for sling

Added:
    websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-htl.html
Removed:
    websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-sightly.html
Modified:
    websites/staging/sling/trunk/content/   (props changed)
    websites/staging/sling/trunk/content/documentation/bundles/scripting.html
    websites/staging/sling/trunk/content/documentation/development/ide-tooling.html
    websites/staging/sling/trunk/content/news/sling-ide-tooling-11-released.html
    websites/staging/sling/trunk/content/news/sling-launchpad-8-released.html
    websites/staging/sling/trunk/content/sitemap.html

Propchange: websites/staging/sling/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Sep  2 15:08:28 2016
@@ -1 +1 @@
-1758949
+1758970

Modified: websites/staging/sling/trunk/content/documentation/bundles/scripting.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/scripting.html (original)
+++ websites/staging/sling/trunk/content/documentation/bundles/scripting.html Fri Sep  2 15:08:28 2016
@@ -131,14 +131,14 @@ h2:hover > .headerlink, h3:hover > .head
 <li>Python *</li>
 <li>Ruby *</li>
 <li>Scala *</li>
-<li><a href="/documentation/bundles/scripting/scripting-sightly.html">Sightly</a></li>
+<li><a href="/documentation/bundles/scripting/scripting-htl.html">HTL</a></li>
 <li><a href="/documentation/bundles/scripting/scripting-thymeleaf.html">Thymeleaf</a> *</li>
 <li>Velocity *</li>
 <li>XProc *</li>
 </ul>
 <p>* in contrib</p>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
-        Rev. 1739945 by radu on Tue, 19 Apr 2016 15:18:10 +0000
+        Rev. 1758970 by radu on Fri, 2 Sep 2016 15:07:59 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project

Added: websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-htl.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-htl.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-htl.html Fri Sep  2 15:08:28 2016
@@ -0,0 +1,649 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!--
+
+    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.
+-->
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Apache Sling - HTL Scripting Engine</title>
+    <link rel="icon" href="/res/favicon.ico">
+    <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
+    <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
+  </head>
+  <body>
+    <div class="title">
+      <div class="logo">
+        <a href="//sling.apache.org/">
+          <img border="0" alt="Apache Sling" src="/res/logo.png">
+        </a>
+      </div>
+      <div class="header">
+        <a href="//www.apache.org/">
+          <img border="0" alt="Apache" src="/res/apache.png">
+        </a>
+      </div>
+    </div>
+    
+    <div class="menu"> 
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+<a href="/documentation/getting-started.html">Getting Started</a> <br />
+<a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
+<a href="/documentation/development.html">Development</a> <br />
+<a href="/documentation/bundles.html">Bundles</a> <br />
+<a href="/documentation/tutorials-how-tos.html">Tutorials &amp; How-Tos</a> <br />
+<a href="/documentation/configuration.html">Configuration</a>   </p>
+<p><a href="http://s.apache.org/sling.wiki">Wiki</a> <br />
+<a href="http://s.apache.org/sling.faq">FAQ</a>   </p>
+<p><strong>API Docs</strong>  <br />
+<a href="/apidocs/sling8/index.html">Sling 8</a> <br />
+<a href="/apidocs/sling7/index.html">Sling 7</a> <br />
+<a href="/apidocs/sling6/index.html">Sling 6</a> <br />
+<a href="/apidocs/sling5/index.html">Sling 5</a> <br />
+<a href="/javadoc-io.html">Archive at javadoc.io</a>   </p>
+<p><strong>Project info</strong> <br />
+<a href="/downloads.cgi">Downloads</a> <br />
+<a href="http://www.apache.org/licenses/">License</a> <br />
+<a href="/contributing.html">Contributing</a> <br />
+<a href="/news.html">News</a> <br />
+<a href="/links.html">Links</a> <br />
+<a href="/project-information.html">Project Information</a> <br />
+<a href="https://issues.apache.org/jira/browse/SLING">Issue Tracker</a> <br />
+<a href="http://ci.apache.org/builders/sling-trunk">Build Server</a> <br />
+<a href="/project-information/security.html">Security</a>   </p>
+<p><strong>Source</strong> <br />
+<a href="http://svn.apache.org/viewvc/sling/trunk">Subversion</a> <br />
+<a href="git://git.apache.org/sling.git">Git</a> <br />
+<a href="https://github.com/apache/sling">Github Mirror</a>   </p>
+<p><strong>Sponsorship</strong> <br />
+<a href="http://www.apache.org/foundation/thanks.html">Thanks</a> <br />
+<a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a> <br />
+<a href="http://www.apache.org/foundation/buy_stuff.html">Buy Stuff</a>   </p>
+<p><strong><a href="/sitemap.html">Site Map</a></strong></p>
+<!-- no valid ads for now, we'll  reactivate this when needed
+<iframe 
+    src="http://www.apache.org/ads/button.html"
+    style="border-width:0; float: left" frameborder="0" 
+    scrolling="no"
+    width="135" 
+    height="135">
+</iframe>
+-->
+    </div>
+    
+    <div class="main">
+      <div class="breadcrump" style="font-size: 80%;">
+        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/bundles.html">Bundles</a>&nbsp;&raquo&nbsp;<a href="/documentation/bundles/scripting.html">Sling Scripting</a>
+      </div>
+
+      
+      
+      <h1>HTL Scripting Engine</h1>
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p>The Apache Sling HTL Scripting Engine is the reference implementation of the <a href="https://github.com/Adobe-Marketing-Cloud/htl-spec">HTML Template Language</a>.</p>
+<div class="toc">
+<ul>
+<li><a href="#modules">Modules</a></li>
+<li><a href="#the-use-api">The Use-API</a><ul>
+<li><a href="#sling-specific-use-api-extensions">Sling-specific Use-API Extensions</a><ul>
+<li><a href="#global-objects">Global Objects</a></li>
+<li><a href="#sling-models-use-provider">Sling Models Use Provider</a><ul>
+<li><a href="#passing-parameters">Passing parameters</a></li>
+</ul>
+</li>
+<li><a href="#java-use-provider">Java Use Provider</a><ul>
+<li><a href="#resource-backed-java-classes">Resource-backed Java classes</a></li>
+<li><a href="#passing-parameters_1">Passing parameters</a></li>
+</ul>
+</li>
+<li><a href="#javascript-use-provider">JavaScript Use Provider</a><ul>
+<li><a href="#global-objects_1">Global Objects</a></li>
+<li><a href="#passing-parameters_2">Passing parameters</a></li>
+<li><a href="#caveats">Caveats</a></li>
+</ul>
+</li>
+<li><a href="#script-use-provider">Script Use Provider</a></li>
+<li><a href="#picking-the-best-use-provider-for-a-project">Picking the best Use Provider for a project</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<h1 id="modules">Modules<a class="headerlink" href="#modules" title="Permanent link">&para;</a></h1>
+<p>The Sling implementation is comprised of the following modules:</p>
+<ol>
+<li><a href="https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/engine"><code>org.apache.sling.scripting.sightly</code></a> - the core HTL Scripting Engine bundle</li>
+<li><a href="https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/js-use-provider"><code>org.apache.sling.scripting.sightly.js.provider</code></a> - the HTL JavaScript Use Provider, implementing support for the <code>use</code> JavaScript function</li>
+<li><a href="https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/models-use-provider"><code>org.apache.sling.scripting.sightly.models.provider</code></a> - <a href="https://sling.apache.org/documentation/bundles/models.html">Sling Models</a> Use Provider</li>
+<li><a href="https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/repl"><code>org.apache.sling.scripting.sightly.repl</code></a> - HTL Read-Eval-Print Loop Environment (REPL), useful for quickly prototyping scripts</li>
+</ol>
+<h1 id="the-use-api">The Use-API<a class="headerlink" href="#the-use-api" title="Permanent link">&para;</a></h1>
+<p>The <a href="https://github.com/Adobe-Marketing-Cloud/htl-spec/blob/1.2/SPECIFICATION.md#4-use-api">HTML Template Language Specification</a> explicitly defines two ways of implementing support for business logic objects:</p>
+<ol>
+<li>
+<p>Java Use-API, through POJOs, that may optionally implement an <code>init</code> method:</p>
+<div class="codehilite"><pre><span class="cm">/**</span>
+<span class="cm"> * Initialises the Use bean.</span>
+<span class="cm"> *</span>
+<span class="cm"> * @param bindings All bindings available to the HTL scripts.</span>
+<span class="cm"> **/</span>
+<span class="n">public</span> <span class="k">void</span> <span class="n">init</span><span class="p">(</span><span class="n">javax</span><span class="p">.</span><span class="n">script</span><span class="p">.</span><span class="n">Bindings</span> <span class="n">bindings</span><span class="p">);</span>
+</pre></div>
+
+
+</li>
+<li>
+<p>JavaScript Use-API, by using a standardised use function</p>
+<div class="codehilite"><pre><span class="cm">/**</span>
+<span class="cm"> * In the following example &#39;/libs/dep1.js&#39; and &#39;dep2.js&#39; are optional</span>
+<span class="cm"> * dependencies needed for this script&#39;s execution. Dependencies can</span>
+<span class="cm"> * be specified using an absolute path or a relative path to this</span>
+<span class="cm"> * script&#39;s own path.</span>
+<span class="cm"> *</span>
+<span class="cm"> * If no dependencies are needed the dependencies array can be omitted.</span>
+<span class="cm"> */</span>
+<span class="k">use</span><span class="p">([&#39;</span><span class="n">dep1</span><span class="p">.</span><span class="n">js</span><span class="p">&#39;,</span> <span class="p">&#39;</span><span class="n">dep2</span><span class="p">.</span><span class="n">js</span><span class="p">&#39;],</span> <span class="k">function</span> <span class="p">(</span><span class="n">Dep1</span><span class="p">,</span> <span class="n">Dep2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// implement processing</span>
+
+    <span class="c1">// define this Use object&#39;s behaviour</span>
+    <span class="k">return</span> <span class="p">{</span>
+        <span class="nl">propertyName:</span> <span class="n">propertyValue</span>
+        <span class="nl">functionName:</span> <span class="k">function</span> <span class="p">()</span> <span class="p">{}</span>
+    <span class="p">}</span>
+<span class="p">});</span>
+</pre></div>
+
+
+</li>
+</ol>
+<p>The HTL implementation from Sling provides the basic POJO support through the <a href="https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/pojo/Use.java"><code>org.apache.sling.scripting.sightly.pojo.Use</code></a> interface and the <a href="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"><code>JavaUseProvider</code></a>, whereas the <code>use</code> function is implemented by the <code>org.apache.sling.scripting.sightly.js.provider</code> bundle.</p>
+<p>However, the Sling implementation provides a few extensions to the Use-API.</p>
+<h2 id="sling-specific-use-api-extensions">Sling-specific Use-API Extensions<a class="headerlink" href="#sling-specific-use-api-extensions" title="Permanent link">&para;</a></h2>
+<p>A full HTL installation provides the following Use Providers, in the order of their priority (the higher the service ranking value, the higher the priority):</p>
+<table class="table">
+<thead>
+<tr>
+<th>Service Ranking</th>
+<th>Use Provider</th>
+<th>Bundle</th>
+<th>Functionality</th>
+<th>Observations</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>100</td>
+<td><a href="https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java"><code>RenderUnitProvider</code></a></td>
+<td><code>org.apache.sling.scripting.sightly</code></td>
+<td>support for loading HTL templates through <code>data-sly-use</code></td>
+<td></td>
+</tr>
+<tr>
+<td>95</td>
+<td><a href="https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/models-use-provider/src/main/java/org/apache/sling/scripting/sightly/models/impl/SlingModelsUseProvider.java"><code>SlingModelsUseProvider</code></a></td>
+<td><code>org.apache.sling.scripting.sightly.models.provider</code></td>
+<td>support for loading <a href="https://sling.apache.org/documentation/bundles/models.html">Sling Models</a></td>
+<td></td>
+</tr>
+<tr>
+<td>90</td>
+<td><a href="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"><code>JavaUseProvider</code></a></td>
+<td><code>org.apache.sling.scripting.sightly</code></td>
+<td>support for loading Java objects such as: <ol><li>OSGi services</li><li>POJOs adaptable from <code>SlingHttpServletRequest</code> or <code>Resource</code></li><li>POJOs that implement <code>Use</code></li></ol></td>
+<td>The POJOs can be exported by bundles or can be backed by <code>Resources</code>. In the latter case the POJOs' package names should correspond to the backing resource's path; invalid Java characters which are valid path elements should be replaced by an underscore - <code>_</code>.</td>
+</tr>
+<tr>
+<td>80</td>
+<td><a href="https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/js-use-provider/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java"><code>JsUseProvider</code></a></td>
+<td><code>org.apache.sling.scripting.sightly.js.provider</code></td>
+<td>support for loading objects defined through the JavaScript <code>use</code> function</td>
+<td>The <code>org.apache.sling.scripting.sightly.js.provider</code> also provides a trimmed down <a href="https://github.com/apache/sling/tree/trunk/bundles/scripting/sightly/js-use-provider/src/main/resources/SLING-INF/libs/sling/sightly/js">asynchronous implementation</a> of the <code>Resource</code> API. However this was deprecated in <a href="https://issues.apache.org/jira/browse/SLING-4964">SLING-4964</a> (version 1.0.8 of the bundle) in favour of the synchronous API provided by the <code>org.apache.sling.scripting.javascript</code> bundle.</td>
+</tr>
+<tr>
+<td>0</td>
+<td><a href="https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/ScriptUseProvider.java"><code>ScriptUseProvider</code></a></td>
+<td><code>org.apache.sling.scripting.sightly</code></td>
+<td>support for loading objects returned by scripts interpreted by other Script Engines available on the platform</td>
+<td></td>
+</tr>
+</tbody>
+</table>
+<p>The <code>service.ranking</code> value of each Use Provider is configurable, allowing for fine tuning of the order in which the providers are queried when <code>data-sly-use</code> is called. However, in order to not affect core functionality the <code>RenderUnitProvider</code> should always have the highest ranking. If you need to configure the providers' service ranking head over to the configuration console at <a href="http://localhost:8080/system/console/configMgr">http://localhost:8080/system/console/configMgr</a>.</p>
+<h3 id="global-objects">Global Objects<a class="headerlink" href="#global-objects" title="Permanent link">&para;</a></h3>
+<p>The following global objects are available to all Use objects, either as a request attribute or as a property made available in the <code>javax.script.Bindings</code> map or attached to the <code>this</code> context of the <code>use</code> function:</p>
+<div class="codehilite"><pre>    <span class="n">currentNode</span>         <span class="o">//</span> <span class="n">javax</span><span class="p">.</span><span class="n">jcr</span><span class="p">.</span><span class="n">Node</span>
+    <span class="n">currentSession</span>      <span class="o">//</span> <span class="n">javax</span><span class="p">.</span><span class="n">jcr</span><span class="p">.</span><span class="n">Session</span>
+    <span class="nb">log</span>                 <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">slf4j</span><span class="p">.</span><span class="n">Logger</span>
+    <span class="n">out</span>                 <span class="o">//</span> <span class="n">java</span><span class="p">.</span><span class="n">io</span><span class="p">.</span><span class="n">PrintWriter</span>
+    <span class="k">properties</span>          <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">resource</span><span class="p">.</span><span class="n">ValueMap</span>
+    <span class="n">reader</span>              <span class="o">//</span> <span class="n">java</span><span class="p">.</span><span class="n">io</span><span class="p">.</span><span class="n">BufferedReader</span>
+    <span class="n">request</span>             <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">SlingHttpServletRequest</span>
+    <span class="n">resolver</span>            <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">resource</span><span class="p">.</span><span class="n">ResourceResolver</span>
+    <span class="n">resource</span>            <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">resource</span><span class="p">.</span><span class="n">Resource</span>
+    <span class="n">response</span>            <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">SlingHttpServletResponse</span>
+    <span class="n">sling</span>               <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">scripting</span><span class="p">.</span><span class="n">SlingScriptHelper</span>
+</pre></div>
+
+
+<h3 id="sling-models-use-provider">Sling Models Use Provider<a class="headerlink" href="#sling-models-use-provider" title="Permanent link">&para;</a></h3>
+<p>Loading a Sling Model can be done with the following code:</p>
+<div class="codehilite"><pre>    <span class="nt">&lt;div</span> <span class="err">data-sly-use.</span><span class="na">model3=</span><span class="s">&quot;org.example.models.Model3&quot;</span><span class="nt">&gt;</span>
+        <span class="cp">${</span><span class="n">model3</span><span class="o">.</span><span class="n">shine</span><span class="cp">}</span>
+    <span class="nt">&lt;/div&gt;</span>
+</pre></div>
+
+
+<p>Depending on the implementation the above code would either load the implementation with the highest service ranking of <code>Model3</code> if <code>org.example.models.Model3</code> is an interface, or would load the model <code>org.example.models.Model3</code> if this is a concrete implementation.</p>
+<p>It's important to note that this use provider will only load models that are adaptable from <code>SlingHttpServletRequest</code> or <code>Resource</code>.</p>
+<h4 id="passing-parameters">Passing parameters<a class="headerlink" href="#passing-parameters" title="Permanent link">&para;</a></h4>
+<p>Passed parameters will be made available to the Sling Model as request attributes. Assuming the following markup:</p>
+<div class="codehilite"><pre>    <span class="nt">&lt;div</span> <span class="err">data-sly-use.</span><span class="na">model3=</span><span class="s">&quot;</span><span class="cp">${</span><span class="s">&#39;org.example.models.Model3&#39;</span> <span class="err">@</span> <span class="n">colour</span><span class="o">=</span><span class="s">&#39;red&#39;</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">resource</span><span class="o">.</span><span class="n">path</span><span class="cp">}</span><span class="s">&quot;</span><span class="nt">&gt;</span>
+        <span class="cp">${</span><span class="n">model3</span><span class="o">.</span><span class="n">shine</span><span class="cp">}</span>
+    <span class="nt">&lt;/div&gt;</span>
+</pre></div>
+
+
+<p>the model would retrieve the parameters using the following constructs:</p>
+<div class="codehilite"><pre>    <span class="p">@</span><span class="n">Model</span><span class="p">(</span><span class="n">adaptables</span><span class="p">=</span><span class="n">SlingHttpServletRequest</span><span class="p">.</span><span class="n">class</span><span class="p">)</span>
+    <span class="n">public</span> <span class="n">class</span> <span class="n">Model3</span> <span class="p">{</span>
+
+        <span class="p">@</span><span class="n">Inject</span>
+        <span class="n">private</span> <span class="n">String</span> <span class="n">colour</span><span class="p">;</span>
+
+        <span class="p">@</span><span class="n">Inject</span>
+        <span class="n">private</span> <span class="n">String</span> <span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+</pre></div>
+
+
+<h3 id="java-use-provider">Java Use Provider<a class="headerlink" href="#java-use-provider" title="Permanent link">&para;</a></h3>
+<p>The Java Use Provider can be used to load OSGi services, objects exported by bundles or backed by a <code>Resource</code>.</p>
+<h4 id="resource-backed-java-classes">Resource-backed Java classes<a class="headerlink" href="#resource-backed-java-classes" title="Permanent link">&para;</a></h4>
+<p>When objects are backed by <code>Resources</code> the Java Use Provider will automatically handle the compilation of these classes. The classes' package names should correspond to the path of the backing resource, making sure to replace illegal Java characters with underscores - <code>_</code>.</p>
+<p><strong>Example:</strong>
+Assuming the following content structure:</p>
+<div class="codehilite"><pre>    └── <span class="n">apps</span>
+        └── <span class="n">my</span><span class="o">-</span><span class="n">project</span>
+            └── <span class="n">components</span>
+                └── <span class="n">page</span>
+                    ├── <span class="n">PageBean</span><span class="p">.</span><span class="n">java</span>
+                    └── <span class="n">page</span><span class="p">.</span><span class="n">html</span>
+</pre></div>
+
+
+<p><code>page.html</code> could load <code>PageBean</code> either like:</p>
+<div class="codehilite"><pre>    <span class="cp">&lt;!DOCTYPE html&gt;</span>
+    <span class="nt">&lt;html</span> <span class="na">data-sly-use.page=</span><span class="s">&quot;apps.my_project.components.page.PageBean&quot;</span><span class="nt">&gt;</span>
+    ...
+    <span class="nt">&lt;/html&gt;</span>
+</pre></div>
+
+
+<p>or like:</p>
+<div class="codehilite"><pre>    <span class="cp">&lt;!DOCTYPE html&gt;</span>
+    <span class="nt">&lt;html</span> <span class="na">data-sly-use.page=</span><span class="s">&quot;PageBean&quot;</span><span class="nt">&gt;</span>
+    ...
+    <span class="nt">&lt;/html&gt;</span>
+</pre></div>
+
+
+<p>The advantage of loading a bean using just the simple class name (e.g. <code>data-sly-use.page="PageBean"</code>) is that an inheriting component can overlay the <code>PageBean.java</code> file and provide a different logic. In this case the package name of the <code>PageBean</code> class will automatically be derived from the calling script's parent path (e.g. <code>apps.my_project.components.page</code>) - the bean doesn't even have to specify it. However, keep in mind that loading a bean this way is slower than providing the fully qualified class name, since the provider has to check if there is a backing resource. At the same time, loading an object using its fully qualified class name will not allow overriding it by inheriting components.</p>
+<h4 id="passing-parameters_1">Passing parameters<a class="headerlink" href="#passing-parameters_1" title="Permanent link">&para;</a></h4>
+<p>Passed parameters will be made available to the Use object as request attributes and, if the object implements the <a href="https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/pojo/Use.java"><code>org.apache.sling.scripting.sightly.pojo.Use</code></a> interface, through the <code>javax.script.Bindings</code> passed to the <code>init</code> method. Assuming the following markup:</p>
+<div class="codehilite"><pre>    <span class="nt">&lt;div</span> <span class="err">data-sly-use.</span><span class="na">useObject=</span><span class="s">&quot;</span><span class="cp">${</span><span class="s">&#39;org.example.use.MyUseObject&#39;</span> <span class="err">@</span> <span class="n">colour</span><span class="o">=</span><span class="s">&#39;red&#39;</span><span class="p">,</span> <span class="n">year</span><span class="o">=</span><span class="mi">2016</span><span class="cp">}</span><span class="s">&quot;</span><span class="nt">&gt;</span>
+        <span class="cp">${</span><span class="n">useObject</span><span class="o">.</span><span class="n">shine</span><span class="cp">}</span>
+    <span class="nt">&lt;/div&gt;</span>
+</pre></div>
+
+
+<p>the object implementing <code>Use</code> would be able to retrieve the parameters using the following constructs:</p>
+<div class="codehilite"><pre>    <span class="n">package</span> <span class="n">org</span><span class="p">.</span><span class="n">example</span><span class="p">.</span><span class="n">use</span><span class="p">.</span><span class="n">MyUseObject</span><span class="p">;</span>
+
+    <span class="n">import</span> <span class="n">javax</span><span class="p">.</span><span class="n">script</span><span class="p">.</span><span class="n">Bindings</span><span class="p">;</span>
+
+    <span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">commons</span><span class="p">.</span><span class="n">osgi</span><span class="p">.</span><span class="n">PropertiesUtil</span><span class="p">;</span>
+    <span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">scripting</span><span class="p">.</span><span class="n">sightly</span><span class="p">.</span><span class="n">pojo</span><span class="p">.</span><span class="n">Use</span><span class="p">;</span>
+
+    <span class="n">public</span> <span class="n">class</span> <span class="n">MyUseObject</span> <span class="n">implements</span> <span class="n">Use</span> <span class="p">{</span>
+
+        <span class="n">private</span> <span class="n">String</span> <span class="n">colour</span><span class="p">;</span>
+        <span class="n">private</span> <span class="n">Integer</span> <span class="n">year</span><span class="p">;</span>
+
+        <span class="n">public</span> <span class="n">void</span> <span class="n">init</span><span class="p">(</span><span class="n">Bindings</span> <span class="n">bindings</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">colour</span> <span class="p">=</span> <span class="n">PropertiesUtil</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">bindings</span><span class="p">.</span><span class="n">get</span><span class="p">(</span>&quot;<span class="n">colour</span>&quot;<span class="p">),</span> &quot;&quot;<span class="p">);</span>
+            <span class="n">year</span> <span class="p">=</span> <span class="n">PropertiesUtil</span><span class="p">.</span><span class="n">toInteger</span><span class="p">(</span><span class="n">bindings</span><span class="p">.</span><span class="n">get</span><span class="p">(</span>&quot;<span class="n">year</span>&quot;<span class="p">),</span> <span class="n">Calendar</span><span class="p">.</span><span class="n">getInstance</span><span class="p">().</span><span class="n">get</span><span class="p">(</span><span class="n">Calendar</span><span class="p">.</span><span class="n">YEAR</span><span class="p">));</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+</pre></div>
+
+
+<p>or, if the object is adaptable from a <code>SlingHttpServletRequest</code>, through its <code>AdapterFactory</code>:</p>
+<div class="codehilite"><pre><span class="n">package</span> <span class="n">org</span><span class="p">.</span><span class="n">example</span><span class="p">.</span><span class="n">use</span><span class="p">;</span>
+
+<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">felix</span><span class="p">.</span><span class="n">scr</span><span class="p">.</span><span class="n">annotations</span><span class="p">.</span><span class="n">Component</span><span class="p">;</span>
+<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">felix</span><span class="p">.</span><span class="n">scr</span><span class="p">.</span><span class="n">annotations</span><span class="p">.</span><span class="n">Properties</span><span class="p">;</span>
+<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">felix</span><span class="p">.</span><span class="n">scr</span><span class="p">.</span><span class="n">annotations</span><span class="p">.</span><span class="n">Property</span><span class="p">;</span>
+<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">felix</span><span class="p">.</span><span class="n">scr</span><span class="p">.</span><span class="n">annotations</span><span class="p">.</span><span class="n">Service</span><span class="p">;</span>
+<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">SlingHttpServletRequest</span><span class="p">;</span>
+<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">adapter</span><span class="p">.</span><span class="n">AdapterFactory</span><span class="p">;</span>
+
+<span class="p">@</span><span class="n">Component</span>
+<span class="p">@</span><span class="n">Service</span>
+<span class="p">@</span><span class="n">Properties</span><span class="p">({</span>
+        <span class="p">@</span><span class="n">Property</span><span class="p">(</span>
+                <span class="n">name</span> <span class="p">=</span> <span class="n">AdapterFactory</span><span class="p">.</span><span class="n">ADAPTABLE_CLASSES</span><span class="p">,</span>
+                <span class="n">value</span> <span class="p">=</span> <span class="p">{</span>
+                        &quot;<span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">SlingHttpServletRequest</span>&quot;
+                <span class="p">}</span>
+        <span class="p">),</span>
+        <span class="p">@</span><span class="n">Property</span><span class="p">(</span>
+                <span class="n">name</span> <span class="p">=</span> <span class="n">AdapterFactory</span><span class="p">.</span><span class="n">ADAPTER_CLASSES</span><span class="p">,</span>
+                <span class="n">value</span> <span class="p">=</span> <span class="p">{</span>
+                        &quot;<span class="n">org</span><span class="p">.</span><span class="n">example</span><span class="p">.</span><span class="n">use</span><span class="p">.</span><span class="n">MyUseObject</span>&quot;
+                <span class="p">}</span>
+        <span class="p">)</span>
+<span class="p">})</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">RequestAdapterFactory</span> <span class="n">implements</span> <span class="n">AdapterFactory</span> <span class="p">{</span>
+
+    <span class="p">@</span><span class="n">Override</span>
+    <span class="n">public</span> <span class="o">&lt;</span><span class="n">AdapterType</span><span class="o">&gt;</span> <span class="n">AdapterType</span> <span class="n">getAdapter</span><span class="p">(</span><span class="n">Object</span> <span class="n">adaptable</span><span class="p">,</span> <span class="n">Class</span><span class="o">&lt;</span><span class="n">AdapterType</span><span class="o">&gt;</span> <span class="n">type</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">type</span> <span class="o">==</span> <span class="n">MyUseObject</span><span class="p">.</span><span class="n">class</span> <span class="o">&amp;&amp;</span> <span class="n">adaptable</span> <span class="n">instanceof</span> <span class="n">SlingHttpServletRequest</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">SlingHttpServletRequest</span> <span class="n">request</span> <span class="p">=</span> <span class="p">(</span><span class="n">SlingHttpServletRequest</span><span class="p">)</span> <span class="n">adaptable</span><span class="p">;</span>
+            <span class="n">String</span> <span class="n">colour</span> <span class="p">=</span> <span class="n">PropertiesUtil</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">getAttribute</span><span class="p">(</span>&quot;<span class="n">colour</span>&quot;<span class="p">),</span> &quot;&quot;<span class="p">);</span>
+            <span class="n">Integer</span> <span class="n">year</span> <span class="p">=</span> <span class="n">PropertiesUtil</span><span class="p">.</span><span class="n">toInteger</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">getAttribute</span><span class="p">(</span>&quot;<span class="n">year</span>&quot;<span class="p">),</span> <span class="n">Calendar</span><span class="p">.</span><span class="n">getInstance</span><span class="p">().</span><span class="n">get</span><span class="p">(</span><span class="n">Calendar</span><span class="p">.</span><span class="n">YEAR</span><span class="p">));</span>
+            <span class="o">/*</span>
+             <span class="o">*</span> <span class="k">for</span> <span class="n">the</span> <span class="n">sake</span> <span class="n">of</span> <span class="n">this</span> <span class="n">example</span> <span class="n">we</span> <span class="n">assume</span> <span class="n">that</span> <span class="n">MyUseObject</span> <span class="n">has</span> <span class="n">this</span> <span class="n">constructor</span>
+             <span class="o">*/</span>
+            <span class="k">return</span> <span class="p">(</span><span class="n">AdapterType</span><span class="p">)</span> <span class="n">new</span> <span class="n">MyUseObject</span><span class="p">(</span><span class="n">colour</span><span class="p">,</span> <span class="n">year</span><span class="p">);</span>
+        <span class="p">}</span>
+        <span class="k">return</span> <span class="n">null</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<h3 id="javascript-use-provider">JavaScript Use Provider<a class="headerlink" href="#javascript-use-provider" title="Permanent link">&para;</a></h3>
+<p>The JavaScript Use Provider allows loading objects created through the <code>use</code> function, by evaluating scripts passed to <code>data-sly-use</code>. The JavaScript files are evaluated server-side by the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino">Rhino</a> scripting engine, through the <code>org.apache.sling.scripting.javascript</code> implementation bundle. This allows you to mix JavaScript API with the Java API exported by the platform. For more details about how you can access Java APIs from within JavaScript please check the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Scripting_Java#Accessing_Java_Packages_and_Classes">Rhino Java Scripting guide</a>.</p>
+<p><strong>Example:</strong>
+Assuming the following content structure:</p>
+<div class="codehilite"><pre>    └── <span class="n">apps</span>
+        └── <span class="n">my</span><span class="o">-</span><span class="n">project</span>
+            └── <span class="n">components</span>
+                └── <span class="n">page</span>
+                    ├── <span class="n">page</span><span class="p">.</span><span class="n">html</span>
+                    └── <span class="n">page</span><span class="p">.</span><span class="n">js</span>
+</pre></div>
+
+
+<p><code>page.html</code> could load <code>page.js</code> either like:</p>
+<div class="codehilite"><pre>    <span class="cp">&lt;!DOCTYPE html&gt;</span>
+    <span class="nt">&lt;html</span> <span class="na">data-sly-use.page=</span><span class="s">&quot;/apps/my-project/components/page/page.js&quot;</span><span class="nt">&gt;</span>
+    ...
+    <span class="nt">&lt;/html&gt;</span>
+</pre></div>
+
+
+<p>or like:</p>
+<div class="codehilite"><pre>    <span class="cp">&lt;!DOCTYPE html&gt;</span>
+    <span class="nt">&lt;html</span> <span class="na">data-sly-use.page=</span><span class="s">&quot;page.js&quot;</span><span class="nt">&gt;</span>
+    ...
+    <span class="nt">&lt;/html&gt;</span>
+</pre></div>
+
+
+<p>Similar to the Java Use Provider, loading the script using a relative path allows inheriting components to overlay just the Use script, without having to also overlay the calling HTL script.</p>
+<h4 id="global-objects_1">Global Objects<a class="headerlink" href="#global-objects_1" title="Permanent link">&para;</a></h4>
+<p>Besides the global objects available to all Use Providers, the JavaScript Use Provider also provides the following global objects available in the context of the <code>use</code> function:</p>
+<div class="codehilite"><pre><span class="n">console</span>         <span class="o">//</span> <span class="n">basic</span> <span class="n">wrapper</span> <span class="n">on</span> <span class="n">top</span> <span class="n">of</span> <span class="nb">log</span><span class="p">,</span> <span class="n">but</span> <span class="n">without</span> <span class="n">formatting</span> <span class="o">/</span> <span class="n">throwable</span> <span class="n">support</span>
+<span class="n">exports</span>         <span class="o">//</span> <span class="n">basic</span> <span class="n">Java</span> <span class="n">implementation</span> <span class="n">of</span> <span class="n">CommonJS</span> <span class="o">-</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">requirejs</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">docs</span><span class="o">/</span><span class="n">commonjs</span><span class="p">.</span><span class="n">html</span>
+<span class="n">module</span>          <span class="o">//</span> <span class="n">basic</span> <span class="n">Java</span> <span class="n">implementation</span> <span class="n">of</span> <span class="n">CommonJS</span> <span class="o">-</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">requirejs</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">docs</span><span class="o">/</span><span class="n">commonjs</span><span class="p">.</span><span class="n">html</span>
+<span class="n">setImmediate</span>    <span class="o">//</span> <span class="n">Java</span> <span class="n">implementation</span> <span class="n">of</span> <span class="n">the</span> <span class="n">Node</span><span class="p">.</span><span class="n">js</span> <span class="n">setImmediate</span> <span class="k">function</span>
+<span class="n">setTimeout</span>      <span class="o">//</span> <span class="n">Java</span> <span class="n">implementation</span> <span class="n">of</span> <span class="n">the</span> <span class="n">Node</span><span class="p">.</span><span class="n">js</span> <span class="n">setTimeout</span> <span class="k">function</span>
+<span class="n">sightly</span>         <span class="o">//</span> <span class="n">the</span> <span class="n">namespace</span> <span class="n">object</span> <span class="n">under</span> <span class="n">which</span> <span class="n">the</span> <span class="n">asynchronous</span> <span class="n">Resource</span><span class="o">-</span><span class="n">API</span> <span class="n">implemented</span> <span class="n">by</span>
+                <span class="o">//</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sling</span><span class="p">.</span><span class="n">scripting</span><span class="p">.</span><span class="n">sightly</span><span class="p">.</span><span class="n">js</span><span class="p">.</span><span class="n">provider</span> <span class="n">is</span> <span class="n">made</span> <span class="n">available</span> <span class="n">to</span> <span class="n">consumers</span>
+<span class="n">use</span>             <span class="o">//</span> <span class="n">the</span> <span class="n">use</span> <span class="k">function</span>
+</pre></div>
+
+
+<p>With the exception of the <code>console</code> and <code>use</code> objects, all the other global objects implemented by the JavaScript Use Provider are present in order to support the asynchronous Resource-API implemented by <code>org.apache.sling.scripting.sightly.js.provider</code>. However, this was deprecated starting with version 1.0.8 - see <a href="https://issues.apache.org/jira/browse/SLING-4964">SLING-4964</a>.</p>
+<h4 id="passing-parameters_2">Passing parameters<a class="headerlink" href="#passing-parameters_2" title="Permanent link">&para;</a></h4>
+<p>Passed parameters will be made available to the Use object as properties of <code>this</code>. Assuming the following markup:</p>
+<div class="codehilite"><pre>    <span class="nt">&lt;div</span> <span class="err">data-sly-use.</span><span class="na">logic=</span><span class="s">&quot;</span><span class="cp">${</span><span class="s">&#39;logic.js&#39;</span> <span class="err">@</span> <span class="n">colour</span><span class="o">=</span><span class="s">&#39;red&#39;</span><span class="p">,</span> <span class="n">year</span><span class="o">=</span><span class="mi">2017</span><span class="cp">}</span><span class="s">&quot;</span><span class="nt">&gt;</span>
+        My colour is <span class="cp">${</span><span class="n">logic</span><span class="o">.</span><span class="n">colour</span> <span class="err">?</span> <span class="n">logic</span><span class="o">.</span><span class="n">colour</span> <span class="p">:</span> <span class="s">&#39;not important&#39;</span><span class="cp">}</span> and I&#39;m from <span class="cp">${</span><span class="n">logic</span><span class="o">.</span><span class="n">year</span><span class="cp">}</span>
+    <span class="nt">&lt;/div&gt;</span>
+</pre></div>
+
+
+<p>the object would be able to access the parameters like:</p>
+<div class="codehilite"><pre>    <span class="n">use</span><span class="p">(</span><span class="k">function</span><span class="p">()</span> <span class="p">{</span>
+        <span class="s">&#39;use strict&#39;</span><span class="p">;</span>
+
+        <span class="n">var</span> <span class="n">colour</span> <span class="p">=</span> <span class="n">this</span><span class="p">.</span><span class="n">colour</span> <span class="o">||</span> <span class="s">&#39;&#39;</span><span class="p">;</span>
+        <span class="n">var</span> <span class="n">year</span> <span class="p">=</span> <span class="n">this</span><span class="p">.</span><span class="n">year</span> <span class="o">||</span> <span class="n">new</span> <span class="n">Date</span><span class="p">().</span><span class="n">getFullYear</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="p">{</span>
+            <span class="n">colour</span><span class="p">:</span> <span class="n">colour</span><span class="p">,</span>
+            <span class="n">year</span><span class="p">:</span> <span class="n">year</span>
+        <span class="p">}</span>
+    <span class="p">});</span>
+</pre></div>
+
+
+<h4 id="caveats">Caveats<a class="headerlink" href="#caveats" title="Permanent link">&para;</a></h4>
+<p>Since these scripts are evaluated server-side, by compiling JavaScript to Java, you need to pay attention when comparing primitive objects using the strict equal operator (<code>===</code>) since comparisons between JavaScript and Java objects with the same apparent value will return <code>false</code> (this also applies to the strict not-equal operator - <code>!==</code>).</p>
+<p>Assuming the following HTL script:</p>
+<div class="codehilite"><pre>    <span class="nt">&lt;ol</span> <span class="err">data-sly-use.</span><span class="na">obj=</span><span class="s">&quot;logic.js&quot;</span> <span class="na">data-sly-list=</span><span class="s">&quot;</span><span class="cp">${</span><span class="n">obj</span><span class="cp">}</span><span class="s">&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;li&gt;</span>
+           Code <span class="nt">&lt;code&gt;</span><span class="cp">${</span><span class="n">item</span><span class="o">.</span><span class="n">code</span><span class="cp">}</span><span class="nt">&lt;/code&gt;</span> evaluates to <span class="nt">&lt;code&gt;</span><span class="cp">${</span><span class="n">item</span><span class="o">.</span><span class="n">result</span><span class="cp">}</span><span class="nt">&lt;/code&gt;</span>
+        <span class="nt">&lt;/li&gt;</span>
+    <span class="nt">&lt;/ol&gt;</span>
+</pre></div>
+
+
+<p>and the following JavaScript file:</p>
+<div class="codehilite"><pre>    <span class="n">use</span><span class="p">(</span><span class="k">function</span><span class="p">()</span> <span class="p">{</span>
+
+        <span class="k">return</span> <span class="p">[</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.String(&quot;apples&quot;) === &quot;apples&quot;&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> <span class="o">==</span><span class="p">=</span> &quot;<span class="n">apples</span>&quot;
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.String(&quot;apples&quot;) == &quot;apples&quot;&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> <span class="o">==</span> &quot;<span class="n">apples</span>&quot;
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.String(&quot;apples&quot;) !== &quot;apples&quot;&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> !<span class="o">==</span> &quot;<span class="n">apples</span>&quot;
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.String(&quot;apples&quot;) != &quot;apples&quot;&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> !<span class="p">=</span> &quot;<span class="n">apples</span>&quot;
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.Integer(1) === 1&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> <span class="o">==</span><span class="p">=</span> 1
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.Integer(1) == 1&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> <span class="o">==</span> 1
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.Integer(1) !== 1&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> !<span class="o">==</span> 1
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;new java.lang.Integer(1) != 1&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> !<span class="p">=</span> 1
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;java.lang.Boolean.TRUE === true&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> <span class="o">==</span><span class="p">=</span> <span class="n">true</span>
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;java.lang.Boolean.TRUE == true&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> <span class="o">==</span> <span class="n">true</span>
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;java.lang.Boolean.TRUE !== true&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> !<span class="o">==</span> <span class="n">true</span>
+            <span class="p">},</span>
+            <span class="p">{</span>
+                <span class="n">code</span><span class="p">:</span> <span class="s">&#39;java.lang.Boolean.TRUE != true&#39;</span><span class="p">,</span>
+                <span class="n">result</span><span class="p">:</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> !<span class="p">=</span> <span class="n">true</span>
+            <span class="p">}</span>
+        <span class="p">];</span>
+    <span class="p">});</span>
+</pre></div>
+
+
+<p>the output would be:</p>
+<div class="codehilite"><pre>     1<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> <span class="o">==</span><span class="p">=</span> &quot;<span class="n">apples</span>&quot; <span class="n">evaluates</span> <span class="n">to</span> <span class="n">false</span>
+     2<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> <span class="o">==</span> &quot;<span class="n">apples</span>&quot; <span class="n">evaluates</span> <span class="n">to</span> <span class="n">true</span>
+     3<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> !<span class="o">==</span> &quot;<span class="n">apples</span>&quot; <span class="n">evaluates</span> <span class="n">to</span> <span class="n">true</span>
+     4<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">String</span><span class="p">(</span>&quot;<span class="n">apples</span>&quot;<span class="p">)</span> !<span class="p">=</span> &quot;<span class="n">apples</span>&quot; <span class="n">evaluates</span> <span class="n">to</span> <span class="n">false</span>
+     5<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> <span class="o">==</span><span class="p">=</span> 1 <span class="n">evaluates</span> <span class="n">to</span> <span class="n">false</span>
+     6<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> <span class="o">==</span> 1 <span class="n">evaluates</span> <span class="n">to</span> <span class="n">true</span>
+     7<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> !<span class="o">==</span> 1 <span class="n">evaluates</span> <span class="n">to</span> <span class="n">true</span>
+     8<span class="p">.</span> <span class="n">Code</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Integer</span><span class="p">(</span>1<span class="p">)</span> !<span class="p">=</span> 1 <span class="n">evaluates</span> <span class="n">to</span> <span class="n">false</span>
+     9<span class="p">.</span> <span class="n">Code</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> <span class="o">==</span><span class="p">=</span> <span class="n">true</span> <span class="n">evaluates</span> <span class="n">to</span> <span class="n">false</span>
+    10<span class="p">.</span> <span class="n">Code</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> <span class="o">==</span> <span class="n">true</span> <span class="n">evaluates</span> <span class="n">to</span> <span class="n">true</span>
+    11<span class="p">.</span> <span class="n">Code</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> !<span class="o">==</span> <span class="n">true</span> <span class="n">evaluates</span> <span class="n">to</span> <span class="n">true</span>
+    12<span class="p">.</span> <span class="n">Code</span> <span class="n">java</span><span class="p">.</span><span class="n">lang</span><span class="p">.</span><span class="n">Boolean</span><span class="p">.</span><span class="n">TRUE</span> !<span class="p">=</span> <span class="n">true</span> <span class="n">evaluates</span> <span class="n">to</span> <span class="n">false</span>
+</pre></div>
+
+
+<p>Evaluations of Java objects in JavaScript constructs where the operand is automatically type coerced will work, but Rhino might complain about the Java objects not correctly calling the Rhino helper function <code>Context.javaToJS()</code>. In order to avoid these warnings it's better to explicitly perform your comparisons like in the following example:</p>
+<div class="codehilite"><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">myObject</span><span class="p">)</span> <span class="p">{</span>
+        <span class="p">...</span>
+    <span class="p">}</span>
+    <span class="o">//</span> <span class="n">should</span> <span class="n">be</span> <span class="n">replaced</span> <span class="n">by</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">myObject</span> !<span class="p">=</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>
+       <span class="p">...</span>
+    <span class="p">}</span>
+
+    <span class="n">myObject</span> ? <span class="s">&#39;this&#39;</span> <span class="p">:</span> <span class="s">&#39;that&#39;</span>
+    <span class="o">//</span><span class="n">should</span> <span class="n">be</span> <span class="n">replaced</span> <span class="n">by</span>
+    <span class="n">myObject</span> !<span class="p">=</span> <span class="n">null</span> ? <span class="s">&#39;this&#39;</span> <span class="p">:</span> <span class="s">&#39;that&#39;</span>
+</pre></div>
+
+
+<h3 id="script-use-provider">Script Use Provider<a class="headerlink" href="#script-use-provider" title="Permanent link">&para;</a></h3>
+<p>The Script Use Provider allows loading objects evaluated by other script engines available on the platform. The same loading considerations as for the Java and JavaScript Use Providers apply.</p>
+<h3 id="picking-the-best-use-provider-for-a-project">Picking the best Use Provider for a project<a class="headerlink" href="#picking-the-best-use-provider-for-a-project" title="Permanent link">&para;</a></h3>
+<p>The following table summarises the pros and cons for each Use Provider, with the obvious exception of the Render Unit Use Provider.</p>
+<table>
+    <tr>
+       <th>Use Provider</th>
+       <th>Advantages</th>
+       <th>Disadvantages</th>
+    </tr>
+    <tr>
+        <td>Sling Models Use Provider</td>
+        <td><ul><li>convenient injection annotations for data retrieval</li><li>easy to extend from other Sling Models</li><li>simple setup for unit testing</li></ul></td>
+        <td><ul><li>lacks flexibility in terms of component overlaying, relying on <code>service.ranking</code> configurations</li></ul></td>
+    </tr>
+    <tr>
+        <td>Java Use Provider</td>
+        <td>
+            <p>Use-objects provided through bundles:</p>
+            <ul>
+                <li>faster to initialise and execute than Sling Models for similar code</li>
+                <li>easy to extend from other similar Use-objects</li>
+                <li>simple setup for unit testing</li>
+            </ul>
+            <p>Use-objects backed by <code>Resources</code>:</p>
+            <ul>
+                <li>faster to initialise and execute than Sling Models for similar code</li>
+                <li>easy to override from inheriting components through search path overlay or by using the <code>sling:resourceSuperType</code> property, allowing for greater flexibility</li>
+                <li>business logic for components sits next to the HTL scripts where the objects are used</li>
+            </ul>
+        </td>
+        <td>
+            <p>Use-objects provided through bundles:</p>
+            <ul>
+                <li>lacks flexibility in terms of component overlaying</li>
+            </ul>
+
+            <p>Use-objects backed by <code>Resources</code>:</p>
+            <ul>
+                <li>cannot extend other Java objects</li>
+                <li>the Java project might need a different setup to allow running unit tests, since the objects will be deployed like content</li>
+            </ul>
+        </td>
+    </tr>
+    <tr>
+        <td>JavaScript Use Provider</td>
+        <td>
+            <ul>
+                <li>allows JavaScript developers to develop component logic</li>
+                <li>can be reused through the dependency mechanism provided by the <code>use</code> function</li>
+            </ul>
+        </td>
+        <td>
+            <ul>
+                <li>harder to test and debug, relying mostly on end-to-end testing and console logging</li>
+                <li>slower to execute than both Sling Models and Java Use-API objects</li>
+            </ul>
+        </td>
+    </tr>
+    <tr>
+        <td>Script Use Provider</td>
+        <td>
+            <ul>
+                <li>allows the usage of Use objects evaluated by other Script Engines available in the platform</li>
+            </ul>
+        </td>
+        <td>
+            <ul>
+                <li>like in the case of the JavaScript Use Provider, the performance is influenced by the Script Engine's implementation</li>
+            </ul>
+        </td>
+    </tr>
+</table>
+      <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+        Rev. 1758970 by radu on Fri, 2 Sep 2016 15:07:59 +0000
+      </div>
+      <div class="trademarkFooter"> 
+        Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project
+        logo are trademarks of The Apache Software Foundation. All other marks mentioned
+        may be trademarks or registered trademarks of their respective owners.
+      </div>
+    </div>
+  </body>
+</html>

Modified: websites/staging/sling/trunk/content/documentation/development/ide-tooling.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/development/ide-tooling.html (original)
+++ websites/staging/sling/trunk/content/documentation/development/ide-tooling.html Fri Sep  2 15:08:28 2016
@@ -146,7 +146,7 @@ h2:hover > .headerlink, h3:hover > .head
 <li><a href="#deploying-projects-on-the-server_1">Deploying projects on the server</a></li>
 </ul>
 </li>
-<li><a href="#sightly-support">Sightly support</a></li>
+<li><a href="#htl-support">HTL support</a></li>
 <li><a href="#debugging">Debugging</a></li>
 <li><a href="#troubleshooting">Troubleshooting</a><ul>
 <li><a href="#gathering-debug-information">Gathering debug information</a></li>
@@ -274,17 +274,17 @@ h2:hover > .headerlink, h3:hover > .head
 <p>To deploy a project on the server, open the Servers view and use the Add and Remove... dialog to add one or more modules.</p>
 <p><img alt="Add and Remove projects from server" src="ide-tooling/add-remove-projects.png" /></p>
 <p>After OSGi bundle projects are deployed, each change will cause the bundle to be redeployed on the server.</p>
-<h2 id="sightly-support">Sightly support<a class="headerlink" href="#sightly-support" title="Permanent link">&para;</a></h2>
+<h2 id="htl-support">HTL support<a class="headerlink" href="#htl-support" title="Permanent link">&para;</a></h2>
 <p><em>Available with Sling IDE Tooling for Eclipse 1.1 or newer</em></p>
-<p>Sightly support has been added through an additional, optional, feature named <em>Sling IDE Tools - Sightly Integration</em>.</p>
+<p>Support for HTL (formerly known as Sightly) has been added through an additional, optional, feature named <em>Sling IDE Tools - Sightly Integration</em>.</p>
 <p>This feature provides the following enhancements:</p>
 <ul>
 <li>auto-completion of tag named and attributes names in the HTML Editor</li>
-<li>wizards for creating new Sightly scripts and Use Classes ( Java and Javascript )</li>
-<li>Sightly-aware validation for HTML files</li>
+<li>wizards for creating new HTL scripts and Use Classes ( Java and Javascript )</li>
+<li>HTL-aware validation for HTML files</li>
 </ul>
-<p><img alt="Sightly Editor" src="ide-tooling/sightly-editor.png" /></p>
-<p>These enhancements are enabled once the Sightly facet is added to a project. This is done automatically when converting a project to content project, but can also be done manually via the project properties, under the <em>Project Facets</em> page.</p>
+<p><img alt="HTL Editor" src="ide-tooling/sightly-editor.png" /></p>
+<p>These enhancements are enabled once the HTL facet is added to a project. This is done automatically when converting a project to content project, but can also be done manually via the project properties, under the <em>Project Facets</em> page.</p>
 <h2 id="debugging">Debugging<a class="headerlink" href="#debugging" title="Permanent link">&para;</a></h2>
 <p><em>Available with Sling IDE Tooling for Eclipse 1.1 or newer</em></p>
 <p>When first connecting to a Sling instance in debug mode, the IDE tooling tries to bind all the sources associated with the bundles deployed on the server and retrieves the associated source artifacts using Maven. Therefore, the debug classpath is as close as possible to sources used to build the bundles deployed on the server.</p>
@@ -313,7 +313,7 @@ h2:hover > .headerlink, h3:hover > .head
 <li><a href="https://issues.apache.org/jira/browse/SLING-3644">SLING-3644 - Improve handling of binary properties outside nt:file file nodes</a> . Currently there is no workaround, but in practice this is not an often-encountered situation.</li>
 </ul>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
-        Rev. 1734894 by rombert on Mon, 14 Mar 2016 08:57:27 +0000
+        Rev. 1758970 by radu on Fri, 2 Sep 2016 15:07:59 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project

Modified: websites/staging/sling/trunk/content/news/sling-ide-tooling-11-released.html
==============================================================================
--- websites/staging/sling/trunk/content/news/sling-ide-tooling-11-released.html (original)
+++ websites/staging/sling/trunk/content/news/sling-ide-tooling-11-released.html Fri Sep  2 15:08:28 2016
@@ -115,16 +115,17 @@ h2:hover > .headerlink, h3:hover > .head
 }
 h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
 <p>Here are some of the more noteworthy things available in this release.</p>
-<h1 id="sightly-support">Sightly support<a class="headerlink" href="#sightly-support" title="Permanent link">&para;</a></h1>
-<p>Sightly support has been added through an additional, optional, feature named <em>Sling IDE Tools - Sightly Integration</em>.</p>
+<h1 id="htl-support">HTL support<a class="headerlink" href="#htl-support" title="Permanent link">&para;</a></h1>
+<p>Support for HTL (formerly known as Sightly) has been added through an additional, optional, feature named
+<em>Sling IDE Tools - Sightly Integration</em>.</p>
 <p>This feature provides the following enhancements:</p>
 <ul>
 <li>auto-completion of tag named and attributes names in the HTML Editor</li>
-<li>wizards for creating new Sightly scripts and Use Classes ( Java and Javascript )</li>
-<li>Sightly-aware validation for HTML files</li>
+<li>wizards for creating new HTL scripts and Use Classes ( Java and Javascript )</li>
+<li>HTL-aware validation for HTML files</li>
 </ul>
-<p><img alt="Sightly Editor" src="../documentation/development/ide-tooling/sightly-editor.png" /></p>
-<p>These enhancements are enabled once the Sightly facet is added to a project. This is done automatically when converting a project to content project, but can also be done manually via the project properties, under the <em>Project Facets</em> page.</p>
+<p><img alt="HTL Editor" src="../documentation/development/ide-tooling/sightly-editor.png" /></p>
+<p>These enhancements are enabled once the HTL facet is added to a project. This is done automatically when converting a project to content project, but can also be done manually via the project properties, under the <em>Project Facets</em> page.</p>
 <h1 id="automatic-configuration-of-debug-classpath-based-on-the-bundles-deployed-on-the-server">Automatic configuration of debug classpath based on the bundles deployed on the server<a class="headerlink" href="#automatic-configuration-of-debug-classpath-based-on-the-bundles-deployed-on-the-server" title="Permanent link">&para;</a></h1>
 <p>When first connecting to a Sling instance, the IDE tooling tries to bind all the sources associated with the bundles deployed on the server and retrieves the associated source artifacts using Maven. Therefore, the debug classpath is as close as possible to sources used to build the bundles deployed on the server.</p>
 <p><img alt="Debugging" src="../documentation/development/ide-tooling/debug.png" /></p>
@@ -138,7 +139,7 @@ h2:hover > .headerlink, h3:hover > .head
 <li>When connecting to a server, all support bundles are automatically installed</li>
 </ul>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
-        Rev. 1736697 by radu on Sat, 26 Mar 2016 15:42:18 +0000
+        Rev. 1758970 by radu on Fri, 2 Sep 2016 15:07:59 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project

Modified: websites/staging/sling/trunk/content/news/sling-launchpad-8-released.html
==============================================================================
--- websites/staging/sling/trunk/content/news/sling-launchpad-8-released.html (original)
+++ websites/staging/sling/trunk/content/news/sling-launchpad-8-released.html Fri Sep  2 15:08:28 2016
@@ -119,15 +119,19 @@ h2:hover > .headerlink, h3:hover > .head
 <p>The Sling launchpad has switched from Apache Jackrabbit 2.7.5 to Apache Jackrabbit Oak 1.3.7 as a persistence engine. Apache Jackrabbit Oak is now supported in Sling with two persistence modes: SegmentNodeStore ( file-based ) and DocumentNodeStore ( MongoDB-based ). See <a href="http://jackrabbit.apache.org/oak/docs/index.html">the Oak documentation</a> for more details about the Oak persistence modes and <a href="https://sling.apache.org/documentation/the-sling-engine/the-sling-launchpad.html#launchpad-app-and-launchpad-webapp">the Sling Launchpad documentation</a> for details about configuring the persistence mode.</p>
 <h2 id="provisioning-model">Provisioning model<a class="headerlink" href="#provisioning-model" title="Permanent link">&para;</a></h2>
 <p>Sling is now provisioned using a simple, text-based, model. See See <a href="http://sling.apache.org/documentation/development/slingstart.html">the Sling Provisioning Model documentation</a> for details.</p>
-<h2 id="sightly">Sightly<a class="headerlink" href="#sightly" title="Permanent link">&para;</a></h2>
-<p>Sightly is an HTML templating language, similar to JSP (Java Server Pages) and ESP (ECMAScript Server Pages). The name “Sightly” (meaning “pleasing to the eye”) highlights its focus on keeping your markup beautiful, and thus maintainable, once made dynamic.</p>
-<p>The cornerstones of Sightly are:</p>
+<h2 id="htl">HTL<a class="headerlink" href="#htl" title="Permanent link">&para;</a></h2>
+<p>The HTML Template Language, similar to JSP (Java Server Pages) and ESP (ECMAScript Server Pages), is a new server-side templating language
+whose purpose is to offer a highly productive enterprise-level web framework that increases security, and allows web developers without
+Java knowledge to better participate in Sling projects.</p>
+<p>The cornerstones of HTL are:</p>
 <ul>
-<li>Secure by default: Sightly automatically filters and escapes all variables being output to the presentation layer to prevent cross-site-scripting (XSS) vulnerabilities</li>
-<li>Supports separation of concerns: The expressiveness of the Sightly template language is purposely limited, in order to make sure that a real programming language is used to express the corresponding presentation logic</li>
-<li>Built on HTML 5: A Sightly file is itself a valid HTML5 file. All Sightly-specific syntax is expressed either within a data attribute, or within HTML text.</li>
+<li>Secure by default: HTL automatically filters and escapes all variables being output to the presentation layer to prevent
+cross-site-scripting (XSS) vulnerabilities</li>
+<li>Supports separation of concerns: The expressiveness of the HTL template language is purposely limited, in order to make sure that a real programming language is used to express the corresponding presentation logic</li>
+<li>Built on HTML 5: An HTL file is itself a valid HTML5 file. All HTL-specific syntax is expressed either within a data attribute, or within
+HTML text.</li>
 </ul>
-<p>See <a href="https://github.com/Adobe-Marketing-Cloud/sightly-spec/blob/master/SPECIFICATION.md">the Sightly HTML Templating Language Specification</a> for details.</p>
+<p>See <a href="https://github.com/Adobe-Marketing-Cloud/htl-spec/blob/master/SPECIFICATION.md">the HTML Template Language Specification</a> for details.</p>
 <h2 id="versioning-support-in-the-resource-api">Versioning support in the Resource API<a class="headerlink" href="#versioning-support-in-the-resource-api" title="Permanent link">&para;</a></h2>
 <p>The Java Resource API and the HTTP API are now able to work with versioned resources. See <a href="https://issues.apache.org/jira/browse/SLING-848">SLING-848 - Support getting versioned resources by using uri path parameters</a> for more details.</p>
 <h2 id="improved-testing-tools">Improved testing tools<a class="headerlink" href="#improved-testing-tools" title="Permanent link">&para;</a></h2>
@@ -144,7 +148,7 @@ h2:hover > .headerlink, h3:hover > .head
 <li>Apache HttpClient 4.4 has been added</li>
 </ul>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
-        Rev. 1708946 by rombert on Fri, 16 Oct 2015 10:10:58 +0000
+        Rev. 1758970 by radu on Fri, 2 Sep 2016 15:07:59 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project

Modified: websites/staging/sling/trunk/content/sitemap.html
==============================================================================
--- websites/staging/sling/trunk/content/sitemap.html (original)
+++ websites/staging/sling/trunk/content/sitemap.html Fri Sep  2 15:08:28 2016
@@ -151,16 +151,17 @@ h2:hover > .headerlink, h3:hover > .head
 <li><a href="/documentation/bundles/resource-merger.html">Resource Merger (org.apache.sling.resourcemerger)</a></li>
 <li><a href="/documentation/bundles/scheduler-service-commons-scheduler.html">Scheduler Service (commons scheduler)</a></li>
 <li><a href="/documentation/bundles/scripting.html">Sling Scripting</a><ul>
+<li><a href="/documentation/bundles/scripting/scripting-htl.html">HTL Scripting Engine</a></li>
 <li><a href="/documentation/bundles/scripting/scripting-jsp.html">JSP Scripting Engine</a></li>
-<li><a href="/documentation/bundles/scripting/scripting-sightly.html">Sightly Scripting Engine</a></li>
 <li><a href="/documentation/bundles/scripting/scripting-thymeleaf.html">Sling Scripting Thymeleaf</a></li>
 </ul>
 </li>
 <li><a href="/documentation/bundles/servlet-helpers.html">Sling Servlet Helpers</a></li>
 <li><a href="/documentation/bundles/sling-health-check-tool.html">Sling Health Check Tools</a></li>
+<li><a href="/documentation/bundles/sling-oak-restrictions.html">Sling Oak Restrictions</a></li>
 <li><a href="/documentation/bundles/sling-pipes.html">Sling Pipes</a></li>
 <li><a href="/documentation/bundles/sling-query.html">Sling Query</a></li>
-<li><a href="/documentation/bundles/sling-settings-org-apache-sling-settings.html">Sling Settings (org.apache.sling.settings)</a></li>
+<li><a href="/documentation/bundles/sling-settings-org-apache-sling-settings.html">Sling Settings and Run Modes (org.apache.sling.settings)</a></li>
 <li><a href="/documentation/bundles/subsystem-installer-factory.html">Subsystems Installer Factory</a></li>
 <li><a href="/documentation/bundles/validation.html">Sling Validation</a></li>
 <li><a href="/documentation/bundles/web-console-extensions.html">Web Console Extensions</a></li>