Author: buildbot
Date: Tue Apr 21 13:29:23 2015
New Revision: 948622

Log:
Staging update by buildbot for sling

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

Propchange: websites/staging/sling/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Apr 21 13:29:23 2015
@@ -1 +1 @@
-1674957
+1675115

Modified: 
websites/staging/sling/trunk/content/documentation/bundles/sling-query.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/sling-query.html 
(original)
+++ websites/staging/sling/trunk/content/documentation/bundles/sling-query.html 
Tue Apr 21 13:29:23 2015
@@ -90,9 +90,72 @@
       
       
       <h1>Sling Query</h1>
-      <p>For now, the documentation of this module is at <a 
href="http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-query/README.md";>http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/sling-query/README.md</a></p>
+      <p>SlingQuery is a Sling resource tree traversal tool inspired by the <a 
href="http://api.jquery.com/category/traversing/tree-traversal/";>jQuery</a>.</p>
+<h2 id="introduction">Introduction</h2>
+<p>Recommended way to find resources in the Sling repository is using 
tree-traversal methods, like <code>listChildren()</code> and 
<code>getParent()</code> rather than JCR queries. The latter are great for 
listing resources with given properties, but we can't leverage the repository 
tree structure with such queries. On the other hand, using tree-traversal 
method is quite verbose. Consider following code that takes an resource and 
returns its first ancestor, being <code>cq:Page</code>, with given 
<code>jcr:content/cq:template</code> attribute:</p>
+<div class="codehilite"><pre><span class="n">Resource</span> <span 
class="n">resource</span> <span class="p">=</span> <span class="p">...;</span>
+<span class="k">while</span> <span class="p">((</span><span 
class="n">resource</span> <span class="p">=</span> <span 
class="n">resource</span><span class="p">.</span><span 
class="n">getParent</span><span class="p">())</span> !<span class="p">=</span> 
<span class="n">null</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span>!<span 
class="n">resource</span><span class="p">.</span><span 
class="n">isResourceType</span><span class="p">(</span>&quot;<span 
class="n">cq</span><span class="p">:</span><span 
class="n">Page</span>&quot;<span class="p">))</span> <span class="p">{</span>
+        <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="n">Resource</span> <span class="n">template</span> <span 
class="p">=</span> <span class="n">resource</span><span class="p">.</span><span 
class="n">getChild</span><span class="p">(</span>&quot;<span 
class="n">jcr</span><span class="p">:</span><span class="n">content</span><span 
class="o">/</span><span class="n">cq</span><span class="p">:</span><span 
class="n">template</span>&quot;<span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span 
class="n">template</span> !<span class="p">=</span> <span class="n">null</span> 
<span class="o">&amp;&amp;</span> &quot;<span class="n">my</span><span 
class="o">/</span><span class="n">template</span>&quot;<span 
class="p">.</span><span class="n">equals</span><span class="p">(</span><span 
class="n">template</span><span class="p">.</span><span 
class="n">adaptTo</span><span class="p">(</span><span 
class="n">String</span><span class="p">.</span><span 
class="n">class</span><span class="p">)))</span> <span class="p">{</span>
+        <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+<span class="k">if</span> <span class="p">(</span><span 
class="n">resource</span> !<span class="p">=</span> <span 
class="n">null</span><span class="p">)</span> <span class="p">{</span>
+    <span class="o">//</span> <span class="n">we</span><span 
class="o">&#39;</span><span class="n">ve</span> <span class="n">found</span> 
<span class="n">appropriate</span> <span class="n">ancestor</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>SlingQuery is a tool that helps creating such queries in a more concise 
way. Above code could be written as:</p>
+<div class="codehilite"><pre><span class="n">import</span> <span 
class="n">static</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">query</span><span 
class="p">.</span><span class="n">SlingQuery</span><span 
class="p">.</span>$<span class="p">;</span>
+<span class="o">//</span> <span class="p">...</span>
+$<span class="p">(</span><span class="n">resource</span><span 
class="p">).</span><span class="n">closest</span><span 
class="p">(</span>&quot;<span class="n">cq</span><span class="p">:</span><span 
class="n">Page</span><span class="p">[</span><span class="n">jcr</span><span 
class="p">:</span><span class="n">content</span><span class="o">/</span><span 
class="n">cq</span><span class="p">:</span><span class="n">template</span><span 
class="p">=</span><span class="n">my</span><span class="o">/</span><span 
class="n">template</span><span class="p">]</span>&quot;<span class="p">)</span>
+</pre></div>
+
+
+<p>Dollar sign is a static method that takes the resource array and creates 
SlingQuery object. The <code>closest()</code> method returns the first ancestor 
matching the selector string passed as the argument.</p>
+<p>SlingQuery is inspired by the jQuery framework. jQuery is the source of 
method names, selector string syntax and the dollar sign method used as a 
collection constructor.</p>
+<h2 id="features">Features</h2>
+<ul>
+<li>useful <a 
href="https://github.com/Cognifide/Sling-Query/wiki/Method-list";>operations</a> 
to traverse the resource tree,</li>
+<li>flexible <a 
href="https://github.com/Cognifide/Sling-Query/wiki/Selector-syntax";>filtering 
syntax</a>,</li>
+<li>lazy evaluation of the query result,</li>
+<li><code>SlingQuery</code> object is immutable (thread-safe),</li>
+<li>fluent, friendly, jQuery-like API.</li>
+</ul>
+<h2 id="installation">Installation</h2>
+<p>Add following Maven dependency to your <code>pom.xml</code>:</p>
+<div class="codehilite"><pre><span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.sling<span 
class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>org.apache.sling.query<span 
class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span>3.0.0<span 
class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
+<h2 id="documentation">Documentation</h2>
+<ul>
+<li><a href="http://cognifide.github.io/Sling-Query/circuit2014/";>CIRCUIT 2014 
presentation</a></li>
+<li><a href="https://github.com/Cognifide/Sling-Query/wiki/Basic-ideas";>Basic 
ideas</a></li>
+<li><a href="https://github.com/Cognifide/Sling-Query/wiki/Method-list";>Method 
list</a></li>
+<li><a 
href="https://github.com/Cognifide/Sling-Query/wiki/Selector-syntax";>Selector 
syntax</a><ul>
+<li><a 
href="https://github.com/Cognifide/Sling-Query/wiki/Operator-list";>Operator 
list</a></li>
+<li><a 
href="https://github.com/Cognifide/Sling-Query/wiki/Modifier-list";>Modifier 
list</a></li>
+<li><a 
href="https://github.com/Cognifide/Sling-Query/wiki/Hierarchy-operator-list";>Hierarchy
 operator list</a></li>
+</ul>
+</li>
+<li><a 
href="https://github.com/Cognifide/Sling-Query/wiki/Examples";>Examples</a></li>
+</ul>
+<h2 id="external-resources">External resources</h2>
+<ul>
+<li>See the <a href="http://sling.apache.org/";>Apache Sling website</a> for 
the Sling reference documentation. Apache Sling, Apache and Sling are 
trademarks of the <a href="http://apache.org";>Apache Software 
Foundation</a>.</li>
+<li>Method names, selector syntax and some parts of documentation are inspired 
by the <a href="http://jquery.com/";>jQuery</a> library.</li>
+</ul>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; 
text-align: right;">
-        Rev. 1616701 by bdelacretaz on Fri, 8 Aug 2014 09:13:56 +0000
+        Rev. 1675115 by justin on Tue, 21 Apr 2015 13:29:09 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache 
Sling project


Reply via email to