You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2018/08/21 10:31:38 UTC
svn commit: r1838538 [35/35] - in /jackrabbit/site/live/oak/docs: ./
architecture/ coldstandby/ features/ nodestore/ nodestore/document/
nodestore/segment/ oak-mongo-js/ oak-mongo-js/fonts/ oak-mongo-js/scripts/
oak-mongo-js/scripts/prettify/ oak-mongo...
Modified: jackrabbit/site/live/oak/docs/security/user/query.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/security/user/query.html?rev=1838538&r1=1838537&r2=1838538&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/security/user/query.html (original)
+++ jackrabbit/site/live/oak/docs/security/user/query.html Tue Aug 21 10:31:37 2018
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-08-10
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-21
| Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20180810" />
+ <meta name="Date-Revision-yyyymmdd" content="20180221" />
<meta http-equiv="Content-Language" content="en" />
<title>Jackrabbit Oak – Searching Users and Groups</title>
<link rel="stylesheet" href="../../css/apache-maven-fluido-1.6.min.css" />
@@ -52,7 +52,6 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://www.day.com/specs/jcr/2.0/index.html" title="JCR API">JCR API</a></li>
- <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" title="Jackrabbit API">Jackrabbit API</a></li>
<li><a href="../../oak_api/overview.html" title="Oak API">Oak API</a></li>
</ul>
</li>
@@ -137,7 +136,7 @@
<div id="breadcrumbs">
<ul class="breadcrumb">
- <li id="publishDate">Last Published: 2018-08-10<span class="divider">|</span>
+ <li id="publishDate">Last Published: 2018-02-21<span class="divider">|</span>
</li>
<li id="projectVersion">Version: 1.10-SNAPSHOT</li>
</ul>
@@ -156,14 +155,12 @@
<li><a href="../../architecture/nodestate.html" title="The Node State Model"><span class="none"></span>The Node State Model</a> </li>
<li class="nav-header">Main APIs</li>
<li><a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API"><span class="none"></span>JCR API</a> </li>
- <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" class="externalLink" title="Jackrabbit API"><span class="none"></span>Jackrabbit API</a> </li>
<li><a href="../../oak_api/overview.html" title="Oak API"><span class="none"></span>Oak API</a> </li>
<li class="nav-header">Features and Plugins</li>
<li><a href="../../nodestore/overview.html" title="Node Storage"><span class="icon-chevron-down"></span>Node Storage</a>
<ul class="nav nav-list">
<li><a href="../../nodestore/documentmk.html" title="Document NodeStore"><span class="icon-chevron-down"></span>Document NodeStore</a>
<ul class="nav nav-list">
- <li><a href="../../nodestore/document/mongo-document-store.html" title="MongoDB DocumentStore"><span class="none"></span>MongoDB DocumentStore</a> </li>
<li><a href="../../nodestore/document/node-bundling.html" title="Node Bundling"><span class="none"></span>Node Bundling</a> </li>
<li><a href="../../nodestore/document/secondary-store.html" title="Secondary Store"><span class="none"></span>Secondary Store</a> </li>
<li><a href="../../nodestore/persistent-cache.html" title="Persistent Cache"><span class="none"></span>Persistent Cache</a> </li>
@@ -242,16 +239,18 @@
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.
- -->
-<div class="section">
+ --><div class="section">
<h2><a name="Searching_Users_and_Groups"></a>Searching Users and Groups</h2>
<p>The user management API provided with Jackrabbit comes with a dedicated query API that allows for searching authorizables indepedant of the underlying user management implementation.</p>
<div class="section">
<h3><a name="Lookup_a_Single_Authorizable"></a>Lookup a Single Authorizable</h3>
-<ul>
+<ul>
+
<li><tt>UserManager.getAuthorizable(String)</tt> : lookup by id</li>
+
<li><tt>UserManager.getAuthorizable(Principal</tt> : lookup by principal</li>
+
<li><tt>UserManager.getAuthorizableByPath(String)</tt> : lookup by path</li>
</ul>
<div class="section">
@@ -259,26 +258,29 @@
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">Authorizable a = userMgr.getAuthorizable("jackrabbit");
+<div class="source">
+<div class="source"><pre class="prettyprint">Authorizable a = userMgr.getAuthorizable("jackrabbit");
Authorizable a2 = userManager.getAuthorizableByPath(a.getPath());
Authorizable everyoneGroup = userManager.getAuthorizable(EveryonePrincipal.getInstance());
-</pre></div></div>
-</div></div></div></div>
+</pre></div></div></div></div></div></div>
<div class="section">
<h3><a name="Searching_for_Authorizables"></a>Searching for Authorizables</h3>
-<ul>
+<ul>
+
<li><tt>UserManager.findAuthorizables(String relPath, String value)</tt></li>
+
<li><tt>UserManager.findAuthorizables(String relPath, String value, int searchType)</tt></li>
+
<li><tt>UserManager.findAuthorizables(Query query)</tt></li>
</ul></div>
<div class="section">
<h3><a name="The_Query_API"></a>The Query API</h3>
-<ul>
+<ul>
+
<li><a class="externalLink" href="http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/Query.java">Query</a>: The query object passed to the findAuthorizable method. It has a single <tt>build(QueryBuilder)</tt> method.</li>
+
<li><a class="externalLink" href="http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/QueryBuilder.java">QueryBuilder</a>: The query builder as described below.</li>
</ul>
<div class="section">
@@ -286,24 +288,32 @@ Authorizable everyoneGroup = userManager
<div class="section">
<h5><a name="Find_by_Property"></a>Find by Property</h5>
<p>The following conditions can be used to find authorizables by properties:</p>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.eq(String relPath, Value)</tt>: holds if property at relPath is <i>equal</i> to the specified value.</li>
+
<li><tt>QueryBuilder.neq(String relPath, Value)</tt>: holds if property at relPath is <i>not equal</i> to the specified value.</li>
+
<li><tt>QueryBuilder.lt(String relPath, Value)</tt>: holds if property at relPath is <i>smaller</i> than the specified value.</li>
+
<li><tt>QueryBuilder.le(String relPath, Value)</tt>: holds if property at relPath is <i>smaller or equal</i> than/to the specified value.- QueryBuilder.lt(String relPath, Value) : matches if property value at relPath is <i>smaller</i> than the specified value.</li>
+
<li><tt>QueryBuilder.gt(String relPath, Value)</tt>: holds if property at relPath is <i>greater</i> than the specified value.</li>
+
<li><tt>QueryBuilder.ge(String relPath, Value)</tt>: holds if property at relPath is <i>greater or equal</i> than/to the specified value.</li>
+
<li><tt>QueryBuilder.ge(String relPath, Value)</tt>: holds if property at relPath is <i>greater or equal</i> than/to the specified value.</li>
+
<li><tt>QueryBuilder.contains(String relPath, String searchExpr)</tt>: full text search.</li>
+
<li><tt>QueryBuilder.exists(String relPath)</tt>: holds if a property at relPath exists.</li>
</ul>
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setCondition(builder.eq("@name", vf.createValue("jackrabbit")));
}
@@ -326,23 +336,24 @@ Iterator<Authorizable> result = us
builder.setCondition(builder.exists("@poisonous"));
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Find_by_Pattern"></a>Find by Pattern</h5>
<p>The following conditions allow to specify a search pattern, where ‘%’ represents any string of zero or more characters and ‘_’ represents any single character.</p>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.like(String relPath, String pattern)</tt>: holds if a property relPath matches the pattern.</li>
+
<li><tt>QueryBuilder.like(String relPath, String pattern)</tt>: holds if a property relPath matches the pattern.</li>
+
<li><tt>QueryBuilder.nameMatches(String pattern)</tt>: filter by principal name (see below)</li>
</ul>
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setCondition(builder.like("profile/@food", "c%"));
}
@@ -353,17 +364,15 @@ Iterator<Authorizable> result = us
builder.setCondition(builder.like("profile/@food", "c_t"));
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Find_in_Any_Property"></a>Find in Any Property</h5>
<p>Use “.” to indicate that properties with any name at a given relative path should be included in the search result.</p>
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setCondition(builder.contains(".", ""jackrabbit""));
}
@@ -374,22 +383,23 @@ Iterator<Authorizable> result = us
builder.setCondition(builder.contains("profile/.", "gold"));
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Multiple_Conditions"></a>Multiple Conditions</h5>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.and(Condition condition1, Condition condition2)</tt>: holds if both sub conditions hold</li>
+
<li><tt>QueryBuilder.or(Condition condition1, Condition condition2)</tt>: holds if any of the two sub conditions hold</li>
+
<li><tt>QueryBuilder.not(Condition condition)</tt>: holds if the sub condition does not hold.</li>
</ul>
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setCondition(builder.and(
builder.eq("profile/@cute", vf.createValue(true)),
@@ -423,48 +433,50 @@ Iterator<Authorizable> result = us
));
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Sort_Results"></a>Sort Results</h5>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.setSortOrder(String propertyName, Direction direction)</tt></li>
+
<li><tt>QueryBuilder.setSortOrder(String propertyName, Direction direction, boolean ignoreCase)</tt></li>
</ul>
<p>where direction can be either of</p>
-<ul>
+<ul>
+
<li><tt>Direction.ASCENDING</tt></li>
+
<li><tt>Direction.DESCENDING</tt></li>
</ul>
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">final boolean ignoreCase = true;
+<div class="source">
+<div class="source"><pre class="prettyprint">final boolean ignoreCase = true;
Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setCondition(builder.exists("profile/@weight"));
builder.setSortOrder("profile/@weight", QueryBuilder.Direction.ASCENDING, ignoreCase);
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Set_Limits"></a>Set Limits</h5>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.setLimit(long offset, long maxCount)</tt></li>
+
<li><tt>QueryBuilder.setLimit(Value bound, long maxCount)</tt> : bound refers to the value of the <tt>setSortOrder(String, Direction)</tt> property. The result is limited to authorizables whose values of the sort order property follow <tt>bound</tt> in the sort direction.</li>
</ul>
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">final long offset = 25;
+<div class="source">
+<div class="source"><pre class="prettyprint">final long offset = 25;
final long maxCount = 1000; // -1 for no limit
Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
@@ -479,46 +491,47 @@ Iterator<Authorizable> result = us
builder.setLimit(vf.createValue(1000.0), count);
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Filter_by_Authorizable_Type"></a>Filter by Authorizable Type</h5>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.setSelector(Class<? extends Authorizable> selector)</tt>: Limit search result to a specific type of authorizables (in the example: groups only)</li>
</ul>
<p>The selector may take any of the following values:</p>
-<ul>
+<ul>
+
<li><tt>Authorizable.class</tt></li>
+
<li><tt>Group.class</tt></li>
+
<li><tt>User.class</tt></li>
</ul>
<div class="section">
<h6><a name="Example"></a>Example</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setSelector(Group.class);
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Find_by_Principal_Name"></a>Find by Principal Name</h5>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.nameMatches(String pattern)</tt>: the pattern may include ‘_’ and ‘%’ (see above).</li>
</ul>
<p>NOTE: the ‘nameMatches’ condition is a shortcut for a regular search for the principal name, which in the default implementation is stored in <tt>rep:principalName</tt>. It does not take any custom name properties into account nor query <tt>rep:authorizableId</tt>.</p>
<div class="section">
<h6><a name="Examples"></a>Examples</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setCondition(builder.nameMatches("j%P"));
}
@@ -529,65 +542,61 @@ Iterator<Authorizable> result = us
builder.setCondition(builder.nameMatches("c_tP"));
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Find_Group_Members"></a>Find Group Members</h5>
-<ul>
+<ul>
+
<li><tt>QueryBuilder.setScope(String groupName, boolean declaredOnly)</tt>: will only return members of the group with the specified name.</li>
</ul>
<div class="section">
<h6><a name="Example"></a>Example</h6>
-<div>
-<div>
-<pre class="source">final declaredMembersOnly = false;
+<div class="source">
+<div class="source"><pre class="prettyprint">final declaredMembersOnly = false;
Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setScope("mammals", declaredMembersOnly);
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Search_for_Impersonators"></a>Search for Impersonators</h5>
-<ul>
+<ul>
+
<li>‘QueryBuilder.impersonates(String principalName)’</li>
</ul>
<p>NOTE: this condition looks for authorizables that granted impersonation to the authorizable with the specified principal name.</p>
<div class="section">
<h6><a name="Example"></a>Example</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) {
builder.setCondition(builder.impersonates("jackrabbitP"));
}
});
-</pre></div></div>
-</div></div>
+</pre></div></div></div></div>
<div class="section">
<h5><a name="Find_All"></a>Find All</h5>
<p>Find all authorizables accessible to the editing session</p>
<div class="section">
<h6><a name="Example"></a>Example</h6>
-<div>
-<div>
-<pre class="source">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+<div class="source">
+<div class="source"><pre class="prettyprint">Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
public <T> void build(QueryBuilder<T> builder) { /* any */ }
});
-</pre></div></div>
-</div></div></div></div>
+</pre></div></div></div></div></div></div>
<div class="section">
<h3><a name="Characteristics_of_the_Default_Implementation"></a>Characteristics of the Default Implementation</h3>
<p>See sections <a href="differences.html#query">Differences to Jackrabbit 2.x</a> and <a href="default.html#query">The Default Implementation</a> for details.</p></div>
<div class="section">
<h3><a name="Utilities"></a>Utilities</h3>
-<p>See <a class="externalLink" href="http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/user/AuthorizableQueryManager.java">org.apache.jackrabbit.commons.jackrabbit.user.AuthorizableQueryManager</a> for a utility class provided by the jcr-commons module present with Jackrabbit.</p><!-- hidden references --></div></div>
+<p>See <a class="externalLink" href="http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/user/AuthorizableQueryManager.java">org.apache.jackrabbit.commons.jackrabbit.user.AuthorizableQueryManager</a> for a utility class provided by the jcr-commons module present with Jackrabbit.</p>
+<!-- hidden references --></div></div>
</div>
</div>
</div>
Modified: jackrabbit/site/live/oak/docs/use_getting_started.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/use_getting_started.html?rev=1838538&r1=1838537&r2=1838538&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/use_getting_started.html (original)
+++ jackrabbit/site/live/oak/docs/use_getting_started.html Tue Aug 21 10:31:37 2018
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-08-10
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-21
| Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20180810" />
+ <meta name="Date-Revision-yyyymmdd" content="20180221" />
<meta http-equiv="Content-Language" content="en" />
<title>Jackrabbit Oak – Runnable jar</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
@@ -52,7 +52,6 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://www.day.com/specs/jcr/2.0/index.html" title="JCR API">JCR API</a></li>
- <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" title="Jackrabbit API">Jackrabbit API</a></li>
<li><a href="oak_api/overview.html" title="Oak API">Oak API</a></li>
</ul>
</li>
@@ -137,7 +136,7 @@
<div id="breadcrumbs">
<ul class="breadcrumb">
- <li id="publishDate">Last Published: 2018-08-10<span class="divider">|</span>
+ <li id="publishDate">Last Published: 2018-02-21<span class="divider">|</span>
</li>
<li id="projectVersion">Version: 1.10-SNAPSHOT</li>
</ul>
@@ -156,14 +155,12 @@
<li><a href="architecture/nodestate.html" title="The Node State Model"><span class="none"></span>The Node State Model</a> </li>
<li class="nav-header">Main APIs</li>
<li><a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API"><span class="none"></span>JCR API</a> </li>
- <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" class="externalLink" title="Jackrabbit API"><span class="none"></span>Jackrabbit API</a> </li>
<li><a href="oak_api/overview.html" title="Oak API"><span class="none"></span>Oak API</a> </li>
<li class="nav-header">Features and Plugins</li>
<li><a href="nodestore/overview.html" title="Node Storage"><span class="icon-chevron-down"></span>Node Storage</a>
<ul class="nav nav-list">
<li><a href="nodestore/documentmk.html" title="Document NodeStore"><span class="icon-chevron-down"></span>Document NodeStore</a>
<ul class="nav nav-list">
- <li><a href="nodestore/document/mongo-document-store.html" title="MongoDB DocumentStore"><span class="none"></span>MongoDB DocumentStore</a> </li>
<li><a href="nodestore/document/node-bundling.html" title="Node Bundling"><span class="none"></span>Node Bundling</a> </li>
<li><a href="nodestore/document/secondary-store.html" title="Secondary Store"><span class="none"></span>Secondary Store</a> </li>
<li><a href="nodestore/persistent-cache.html" title="Persistent Cache"><span class="none"></span>Persistent Cache</a> </li>
@@ -243,15 +240,13 @@
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.
- -->
-<h1>Runnable jar</h1>
+ --><h1>Runnable jar</h1>
<p>Oak comes with a <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/README.md">runnable jar</a>, which contains everything you need for a simple Oak installation.</p>
<h1>Using Oak in your project</h1>
<p>To use Oak in your project simply add a dependency to <tt>org.apache.jackrabbit:oak-jcr:1.0.0</tt> and to <tt>javax.jcr:jcr:2.0</tt>:</p>
-<div>
-<div>
-<pre class="source"><dependency>
+<div class="source">
+<div class="source"><pre class="prettyprint"><dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>oak-jcr</artifactId>
<version>1.0.0</version>
@@ -262,11 +257,12 @@
<version>2.0</version>
</dependency>
</pre></div></div>
-
<p>Oak has simple mechanisms for constructing and configuring content repositories for use in embedded deployments and test cases:</p>
-<ul>
+<ul>
+
<li><a href="construct.html">Repository construction</a></li>
+
<li><a href="osgi_config.html">Configuring Oak</a></li>
</ul>
</div>