Author: buildbot
Date: Tue Apr 19 09:10:51 2016
New Revision: 986067

Log:
Staging update by buildbot for sling

Modified:
    websites/staging/sling/trunk/content/   (props changed)
    
websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-sightly.html

Propchange: websites/staging/sling/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Apr 19 09:10:51 2016
@@ -1 +1 @@
-1739790
+1739874

Modified: 
websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-sightly.html
==============================================================================
--- 
websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-sightly.html
 (original)
+++ 
websites/staging/sling/trunk/content/documentation/bundles/scripting/scripting-sightly.html
 Tue Apr 19 09:10:51 2016
@@ -125,7 +125,10 @@ h2:hover > .headerlink, h3:hover > .head
 <li><a href="#resource-backed-java-classes">Resource-backed Java 
classes</a></li>
 </ul>
 </li>
-<li><a href="#javascript-use-provider">JavaScript Use Provider</a></li>
+<li><a href="#javascript-use-provider">JavaScript Use Provider</a><ul>
+<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>
@@ -207,7 +210,7 @@ h2:hover > .headerlink, h3:hover > .head
 <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 Sling Models</td>
+<td>support for loading <a 
href="https://sling.apache.org/documentation/bundles/models.html";>Sling 
Models</a></td>
 <td></td>
 </tr>
 <tr>
@@ -326,7 +329,106 @@ Assuming the following content structure
 
 
 <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 Sightly script.</p>
-<p>The JavaScript files are evaluated 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. Since 
these scripts are evaluated server-side, by compiling JavaScript to Java, you 
need to pay attention when comparing 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>
+<h4 id="caveats">Caveats<a class="headerlink" href="#caveats" title="Permanent 
link">&para;</a></h4>
+<p>The JavaScript files are evaluated 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.</p>
+<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 Sightly 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>
@@ -381,7 +483,7 @@ Assuming the following content structure
         </td>
         <td>
             <ul>
-                <li>harder to test and debug, relying mostly on end-to-end 
testing</li>
+                <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>
@@ -401,7 +503,7 @@ Assuming the following content structure
     </tr>
 </table>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; 
text-align: right;">
-        Rev. 1739750 by radu on Mon, 18 Apr 2016 11:47:33 +0000
+        Rev. 1739874 by radu on Tue, 19 Apr 2016 09:10:29 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache 
Sling project


Reply via email to