You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2017/06/19 12:41:47 UTC

[41/53] sling-site git commit: asf-site branch created for published content

http://git-wip-us.apache.org/repos/asf/sling-site/blob/a6129baf/documentation/development/maven-usage.html
----------------------------------------------------------------------
diff --git a/documentation/development/maven-usage.html b/documentation/development/maven-usage.html
new file mode 100644
index 0000000..bbeded9
--- /dev/null
+++ b/documentation/development/maven-usage.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html><html lang="en">
+    <head>
+<meta charset="utf-8"/>
+        <title>Apache Sling on JBake</title>
+        <link rel="stylesheet" href="/res/css/site.css"/>
+        <link rel="stylesheet" href="/res/css/codehilite.css"/>
+        <div class="title">
+            <div class="logo">
+                <a href="http://sling.apache.org">
+                    <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
+                </a>
+            </div><div class="header">
+                <a href="http://www.apache.org">
+                    <img border="0" alt="Apache" src="/res/logos/apache.png"/>
+                </a>
+            </div>
+        </div>        
+    </head><body>
+<div class="menu">
+            <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><br/><p></p><strong>API Docs</strong><br/><a href="/apidocs/sling9/index.html">Sling 9</a><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><br/><p></p><strong>Project info</strong><br/><a h
 ref="/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><br/><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><br/><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="https://donate.apache.org/">Donate!</a><br/><a href="http://www.apache.org/foun
 dation/buy_stuff.html">Buy Stuff</a><br/><p></p><strong><a href="/sitemap.html">Site Map</a></strong>
+        </div>        <div class="main">
+<div class="row"><div class="small-12 columns"><section class="wrap"><header><h1>Maven Usage</h1></header><p>Apache Sling uses Maven as a build tool. This page documents some of the choices that we made when using Maven.</p>
+<h2>Parent POM</h2>
+<p>We separate the reactor POM from the parent POM. While the reactor POM functions as a simple aggregator, the parent POM, currently located at <a href="http://svn.apache.org/repos/asf/sling/trunk/parent/pom.xml">parent/pom.xml</a>, holds the common build configuration for all modules.</p>
+<p>The reference to the parent POM is usually set to a released version since we don't deploy it as a SNAPSHOT during the build process. That reference must also contain an empty parentPath element, otherwise recent version of Maven will try to find it in the local filesystem, disregarding the version if the groupId and artifactId match. An example of how to reference the parent POM is</p>
+<h1>!xml</h1>
+<p><parent> <groupId>org.apache.sling</groupId> <artifactId>sling</artifactId> <version>$VERSION</version> <relativePath/> </parent></p>
+<p>Where <code>$VERSION</code> is replaced by the latest parent POM version.</p>
+<h2>Java version</h2>
+<p>The version of Java targeted by a module can be declared by setting a property in the pom.xml named <code>sling.java.version</code>. Configuration inherited from the parent POM will ensure that all the plugins will be correctly configured, including</p>
+<ul>
+  <li>maven-compiler-plugin: source and target arguments to use when compiling code</li>
+  <li>animal-sniffer-maven-plugin: signatures to use when validating compliance with a given Java version</li>
+  <li>maven-bundle-plugin: value of the Bundle-RequiredExecutionEnvironment header</li>
+</ul>
+<h2>Dependency management</h2>
+<p>See <a href="/documentation/development/dependency-management.html">Dependency Management</a></p></section></div></div>            
+<div class="footer">
+                <div class="timestamp">
+                    TODO display revision number here
+                </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>            
+            
+        </div>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/sling-site/blob/a6129baf/documentation/development/maventipsandtricks.html
----------------------------------------------------------------------
diff --git a/documentation/development/maventipsandtricks.html b/documentation/development/maventipsandtricks.html
new file mode 100644
index 0000000..f5529a6
--- /dev/null
+++ b/documentation/development/maventipsandtricks.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html><html lang="en">
+    <head>
+<meta charset="utf-8"/>
+        <title>Apache Sling on JBake</title>
+        <link rel="stylesheet" href="/res/css/site.css"/>
+        <link rel="stylesheet" href="/res/css/codehilite.css"/>
+        <div class="title">
+            <div class="logo">
+                <a href="http://sling.apache.org">
+                    <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
+                </a>
+            </div><div class="header">
+                <a href="http://www.apache.org">
+                    <img border="0" alt="Apache" src="/res/logos/apache.png"/>
+                </a>
+            </div>
+        </div>        
+    </head><body>
+<div class="menu">
+            <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><br/><p></p><strong>API Docs</strong><br/><a href="/apidocs/sling9/index.html">Sling 9</a><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><br/><p></p><strong>Project info</strong><br/><a h
 ref="/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><br/><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><br/><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="https://donate.apache.org/">Donate!</a><br/><a href="http://www.apache.org/foun
 dation/buy_stuff.html">Buy Stuff</a><br/><p></p><strong><a href="/sitemap.html">Site Map</a></strong>
+        </div>        <div class="main">
+<div class="row"><div class="small-12 columns"><section class="wrap"><header><h1>MavenTipsAndTricks</h1></header><p>translation_pending: true</p>
+<p>Here's our collection of tips and tricks for building Sling with <a href="http://maven.apache.org">Maven</a>.</p>
+<h1>Maven local repository</h1>
+<p>The first time you run a Maven build, or when Maven needs additional build components, it downloads plugins and dependencies under its <em>local repository</em> folder on your computer. By default, this folder is named <em>.m2/repository</em> in your home directory.</p>
+<p>Maven uses this repository as a cache for artifacts that it might need for future builds, which means that the first Sling build usually takes much longer than usual, as Maven needs to download many tools and dependencies into its local repository while the build progresses.</p>
+<p>The build might fail if one of those downloads fails, in that case it might be worth retrying the build, to check if that was just a temporary connection problem, or if there's a more serious error.</p>
+<p>In some cases, the local Maven repository might get corrupted - if your build fails on a computer and works on another one, clearing the local repository before restarting the build might be worth trying.</p>
+<h1>Maven settings</h1>
+<h2>Ignore your local settings</h2>
+<p>To make sure you're getting the same results as we are when building Sling, it is recommend to ignore any local settings.</p>
+<p>On unixish platforms, using</p>
+<p>mvn -s /dev/null ...</p>
+<p>does the trick.</p>
+<div class="note">
+Does anyone have a similar command-line option that works under Windows?
+</div>
+<p>#</p>
+<h1>MAVEN_OPTS</h1>
+<p>The MAVEN_OPTS environment variable defines options for the JVM that executes Maven.</p>
+<p>Set it according to your platform, i.e. <code>export MAVEN*OPTS=...</code> on unixish systems or <code>set MAVEN*OPTS=...</code> on Windows.</p>
+<h2>Increase JVM memory if needed</h2>
+<p>If getting an OutOfMemoryException when running mvn, try setting</p>
+<p>MAVEN_OPTS="-Xmx256M -XX:MaxPermSize=256m"</p>
+<p>to allocate 256MB of RAM to Maven.</p>
+<h2>Debugging code launched by Maven</h2>
+<p>To run the Sling launchpad webapp in debug mode from Maven, for example, use something like</p>
+<p>MAVEN_OPTS="-agentlib:jdwp=transport=dt_socket,address=30303,server=y,suspend=n"</p>
+<p>And then connect to port 30303 with a remote JVM debugger (most IDEs do this).</p>
+<h2>Avoid spaces in Maven repository and workspace paths</h2>
+<p>Some Maven plugins do not like spaces in paths. It is better to avoid putting your Maven repository, or your code, under paths like <em>Documents and Settings</em>, for example.</p></section></div></div>            
+<div class="footer">
+                <div class="timestamp">
+                    TODO display revision number here
+                </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>            
+            
+        </div>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/sling-site/blob/a6129baf/documentation/development/monitoring-requests.html
----------------------------------------------------------------------
diff --git a/documentation/development/monitoring-requests.html b/documentation/development/monitoring-requests.html
new file mode 100644
index 0000000..c6cf78c
--- /dev/null
+++ b/documentation/development/monitoring-requests.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en">
+    <head>
+<meta charset="utf-8"/>
+        <title>Apache Sling on JBake</title>
+        <link rel="stylesheet" href="/res/css/site.css"/>
+        <link rel="stylesheet" href="/res/css/codehilite.css"/>
+        <div class="title">
+            <div class="logo">
+                <a href="http://sling.apache.org">
+                    <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
+                </a>
+            </div><div class="header">
+                <a href="http://www.apache.org">
+                    <img border="0" alt="Apache" src="/res/logos/apache.png"/>
+                </a>
+            </div>
+        </div>        
+    </head><body>
+<div class="menu">
+            <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><br/><p></p><strong>API Docs</strong><br/><a href="/apidocs/sling9/index.html">Sling 9</a><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><br/><p></p><strong>Project info</strong><br/><a h
 ref="/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><br/><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><br/><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="https://donate.apache.org/">Donate!</a><br/><a href="http://www.apache.org/foun
 dation/buy_stuff.html">Buy Stuff</a><br/><p></p><strong><a href="/sitemap.html">Site Map</a></strong>
+        </div>        <div class="main">
+<div class="row"><div class="small-12 columns"><section class="wrap"><header><h1>Monitoring Requests</h1></header><p>Sling provides a simple OSGi console plugin to monitor recent requests. This is quite useful when debugging and to understand how things work, though it's obviously not a replacement for full-blown HTTP trafic monitoring tools.</p>
+<p>The console plugin is available at /system/console/requests, listed as <em>Recent Requests</em> in the console menu.</p>
+<p>The plugin keeps track of the latest 20 requests processed by Sling, and displays the information provided by the RequestProgressTracker, for the selected request. The screenshot below shows an example.</p>
+<p>Any information that's added to the RequestProgressTracker (which is available from the SlingHttpServletRequest object) during request processing will be displayed by this plugin.</p>
+<p><img src="sling-requests-plugin.jpg" /></p></section></div></div>            
+<div class="footer">
+                <div class="timestamp">
+                    TODO display revision number here
+                </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>            
+            
+        </div>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/sling-site/blob/a6129baf/documentation/development/osgi-mock.html
----------------------------------------------------------------------
diff --git a/documentation/development/osgi-mock.html b/documentation/development/osgi-mock.html
new file mode 100644
index 0000000..db728d0
--- /dev/null
+++ b/documentation/development/osgi-mock.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html><html lang="en">
+    <head>
+<meta charset="utf-8"/>
+        <title>Apache Sling on JBake</title>
+        <link rel="stylesheet" href="/res/css/site.css"/>
+        <link rel="stylesheet" href="/res/css/codehilite.css"/>
+        <div class="title">
+            <div class="logo">
+                <a href="http://sling.apache.org">
+                    <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
+                </a>
+            </div><div class="header">
+                <a href="http://www.apache.org">
+                    <img border="0" alt="Apache" src="/res/logos/apache.png"/>
+                </a>
+            </div>
+        </div>        
+    </head><body>
+<div class="menu">
+            <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><br/><p></p><strong>API Docs</strong><br/><a href="/apidocs/sling9/index.html">Sling 9</a><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><br/><p></p><strong>Project info</strong><br/><a h
 ref="/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><br/><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><br/><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="https://donate.apache.org/">Donate!</a><br/><a href="http://www.apache.org/foun
 dation/buy_stuff.html">Buy Stuff</a><br/><p></p><strong><a href="/sitemap.html">Site Map</a></strong>
+        </div>        <div class="main">
+<div class="row"><div class="small-12 columns"><section class="wrap"><header><h1>OSGi Mocks</h1></header><p>Mock implementation of selected OSGi APIs for easier testing.</p>
+<p>[TOC]</p>
+<h2>Maven Dependency</h2>
+<h1>!xml</h1>
+<p><dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.testing.osgi-mock</artifactId> </dependency></p>
+<p>See latest version on the <a href="/downloads.cgi">downloads page</a>.</p>
+<p>There are two major version ranges available:</p>
+<ul>
+  <li>osgi-mock 1.x: compatible with OSGi R4 and above</li>
+  <li>osgi-mock 2.x: compatible with OSGi R6 and above</li>
+</ul>
+<h2>Implemented mock features</h2>
+<p>The mock implementation supports:</p>
+<ul>
+  <li>Instantiating OSGi <code>Bundle</code>, <code>BundleContext</code> and <code>ComponentContext</code> objects and navigate between them.</li>
+  <li>Register OSGi SCR services and get references to service instances</li>
+  <li>Supports reading OSGi SCR metadata from <code>/OSGI-INF/&lt;pid&gt;.xml</code> and from <code>/OSGI-INF/serviceComponents.xml</code></li>
+  <li>Apply service properties/component configuration provided in unit test and from SCR metadata</li>
+  <li>Inject SCR dependencies - static and dynamic</li>
+  <li>Call lifecycle methods for activating, deactivating or modifying SCR components</li>
+  <li>Service and bundle listener implementation</li>
+  <li>Mock implementation of <code>LogService</code> which logs to SLF4J in JUnit context</li>
+  <li>Mock implementation of <code>EventAdmin</code> which supports <code>EventHandler</code> services</li>
+  <li>Mock implementation of <code>ConfigAdmin</code></li>
+  <li>Context Plugins</li>
+</ul>
+<p>Since osgi-mock 2.0.0:</p>
+<ul>
+  <li>Support OSGi R6 and Declarative Services 1.3: Field-based reference bindings and component property types</li>
+</ul>
+<h2>Usage</h2>
+<h3>OSGi Context JUnit Rule</h3>
+<p>The OSGi mock context can be injected into a JUnit test using a custom JUnit rule named <code>OsgiContext</code>. This rules takes care of all initialization and cleanup tasks required to make sure all unit tests can run independently (and in parallel, if required).</p>
+<p>Example:</p>
+<h1>!java</h1>
+<p>public class ExampleTest {</p>
+<p>@Rule public final OsgiContext context = new OsgiContext();</p>
+<p>@Test public void testSomething() {</p>
+<p>// register and activate service with configuration MyService service1 = context.registerInjectActivateService(new MyService(), "prop1", "value1");</p>
+<p>// get service instance OtherService service2 = context.getService(OtherService.class);</p>
+<p>}</p>
+<p>}</p>
+<p>It is possible to combine such a unit test with a <code>@RunWith</code> annotation e.g. for <a href="http://mockito.github.io/mockito/docs/current/org/mockito/runners/MockitoJUnitRunner.html">Mockito JUnit Runner</a>.</p>
+<p>The <code>OsgiContext</code> object provides access to mock implementations of:</p>
+<ul>
+  <li>OSGi Component Context</li>
+  <li>OSGi Bundle Context</li>
+</ul>
+<p>Additionally it supports:</p>
+<ul>
+  <li>Registering and activating OSGi services and inject dependencies</li>
+</ul>
+<h3>Getting OSGi mock objects</h3>
+<p>The factory class <code>MockOsgi</code> allows to instantiate the different mock implementations.</p>
+<p>Example:</p>
+<h1>!java</h1>
+<p>// get bundle context BundleContext bundleContext = MockOsgi.newBundleContext();</p>
+<p>// get component context with configuration BundleContext bundleContext = MockOsgi.newComponentContext(properties, "prop1", "value1");</p>
+<p>It is possible to simulate registering of OSGi services (backed by a simple hash map internally):</p>
+<h1>!java</h1>
+<p>// register service bundleContext.registerService(MyClass.class, myService, properties);</p>
+<p>// get service instance ServiceReference ref = bundleContext.getServiceReference(MyClass.class.getName()); MyClass service = bundleContext.getService(ref);</p>
+<h3>Activation and Dependency Injection</h3>
+<p>It is possible to simulate OSGi service activation, deactivation and dependency injection and the mock implementation tries to to its best to execute all as expected for an OSGi environment.</p>
+<p>Example:</p>
+<h1>!java</h1>
+<p>// get bundle context BundleContext bundleContext = MockOsgi.newBundleContext();</p>
+<p>// create service instance manually MyService service = new MyService();</p>
+<p>// inject dependencies MockOsgi.injectServices(service, bundleContext);</p>
+<p>// activate service MockOsgi.activate(service, props);</p>
+<p>// operate with service...</p>
+<p>// deactivate service MockOsgi.deactivate(service);</p>
+<p>Please note:</p>
+<ul>
+  <li>You should ensure that you register you services in the correct order of their dependency chain. Only dynamic references will be handled automatically independent of registration order.</li>
+  <li>The injectServices, activate and deactivate Methods can only work properly when the SCR XML metadata files are preset in the classpath at <code>/OSGI-INF</code>. They are generated automatically by the Maven SCR plugin, but might be missing if your clean and build the project within your IDE (e.g. Eclipse). In this case you have to compile the project again with maven and can run the tests - or use a Maven IDE Integration like m2eclipse.</li>
+</ul>
+<h3>Provide your own configuration via ConfigAdmin</h3>
+<p>If you want to provide your own configuration to an OSGi service that you do not register and activate itself in the mock context you can provide your own custom OSGi configuration via the mock implementation of the <code>ConfigAdmin</code> service.</p>
+<p>Example:</p>
+<h1>!java</h1>
+<p>ConfigurationAdmin configAdmin = context.getService(ConfigurationAdmin.class); Configuration myServiceConfig = configAdmin.getConfiguration(MY_SERVICE_PID); Dictionary&lt;String, Object&gt; props = new Hashtable&lt;String, Object&gt;(); props.put("prop1", "value1"); myServiceConfig.update(props);</p>
+<h3>Context Plugins</h3>
+<p>OSGi Mocks supports "Context Plugins" that hook into the lifecycle of each test run and can prepare test setup before or after the other setUp actions, and execute test tear down code before or after the other tearDown action.</p>
+<p>To define a plugin implement the <code>org.apache.sling.testing.mock.osgi.context.ContextPlugin&lt;OsgiContextImpl&gt;</code> interface. For convenience it is recommended to extend the abstract class <code>org.apache.sling.testing.mock.osgi.context.AbstractContextPlugin&lt;OsgiContextImpl&gt;</code>. These plugins can be used with OSGi Mock context, but also with context instances deriving from it like Sling Mocks and AEM Mocks. In most cases you would just override the <code>afterSetUp</code> method. In this method you can register additional OSGi services or do other preparation work. It is recommended to define a constant pointing to a singleton of a plugin instance for using it.</p>
+<p>To use a plugin in your unit test class, use the <code>OsgiContextBuilder</code> class instead of directly instantiating the <code>OsgiContext</code>class. This allows you in a fluent style to configure more options, with the <code>plugin(...)</code> method you can add one or more plugins.</p>
+<p>Example:</p>
+<h1>!java</h1>
+<p>@Rule public OsgiContext context = new OsgiContextBuilder().plugin(MY_PLUGIN).build();</p>
+<p>More examples:</p>
+<ul>
+  <li><a href="https://github.com/apache/sling/blob/trunk/contrib/extensions/contextaware-config/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java">Apache Sling Context-Aware Configuration Mock Plugin</a></li>
+  <li><a href="https://github.com/apache/sling/blob/trunk/contrib/extensions/contextaware-config/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java">Apache Sling Context-Aware Configuration Mock Plugin Test</a></li>
+</ul></section></div></div>            
+<div class="footer">
+                <div class="timestamp">
+                    TODO display revision number here
+                </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>            
+            
+        </div>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/sling-site/blob/a6129baf/documentation/development/release-management.html
----------------------------------------------------------------------
diff --git a/documentation/development/release-management.html b/documentation/development/release-management.html
new file mode 100644
index 0000000..973003f
--- /dev/null
+++ b/documentation/development/release-management.html
@@ -0,0 +1,320 @@
+<!DOCTYPE html><html lang="en">
+    <head>
+<meta charset="utf-8"/>
+        <title>Apache Sling on JBake</title>
+        <link rel="stylesheet" href="/res/css/site.css"/>
+        <link rel="stylesheet" href="/res/css/codehilite.css"/>
+        <div class="title">
+            <div class="logo">
+                <a href="http://sling.apache.org">
+                    <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
+                </a>
+            </div><div class="header">
+                <a href="http://www.apache.org">
+                    <img border="0" alt="Apache" src="/res/logos/apache.png"/>
+                </a>
+            </div>
+        </div>        
+    </head><body>
+<div class="menu">
+            <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><br/><p></p><strong>API Docs</strong><br/><a href="/apidocs/sling9/index.html">Sling 9</a><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><br/><p></p><strong>Project info</strong><br/><a h
 ref="/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><br/><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><br/><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="https://donate.apache.org/">Donate!</a><br/><a href="http://www.apache.org/foun
 dation/buy_stuff.html">Buy Stuff</a><br/><p></p><strong><a href="/sitemap.html">Site Map</a></strong>
+        </div>        <div class="main">
+<div class="row"><div class="small-12 columns"><section class="wrap"><header><h1>Release Management</h1></header><p>Sling releases (and SNAPSHOTS) are deployed to the <a href="http://repository.apache.org">Nexus repository</a> instead of the traditional deployment via the Maven 2 mirrors source on <code>people.apache.org</code>. This makes the release process much leaner and simpler. In addtion we can benefit from the Apache Parent POM 6, which has most of the release profile setup built-in.</p>
+<p>Most of the hard work of preparing and deploying the release is done by Maven.</p>
+<p>[TOC]</p>
+<h2>Prerequisites</h2>
+<ul>
+  <li>To prepare or perform a release you <em>MUST BE</em> at least be an Apache Sling Committer.</li>
+  <li>Each and every release must be signed; therefore the public key should be cross signed by other Apache committers (not required but suggested) and this public key should be added to <a href="https://people.apache.org/keys/group/sling.asc">https://people.apache.org/keys/group/sling.asc</a> and either on pool.sks-keyservers.net or pgp.mit.edu (See Appendix A)</li>
+  <li>Make sure you have all <a href="http://maven.apache.org/developers/committer-settings.html">Apache servers</a> defined in your <code>settings.xml</code></li>
+  <li>See Appendix B for Maven and SCM credentials</li>
+</ul>
+<p><em>Note</em>: Listing the Apache servers in the <code>settings.xml</code> file also requires adding the password to that file. Starting with Maven 2.1 this password may be encrypted and needs not be give in plaintext. Please refer to <a href="http://maven.apache.org/guides/mini/guide-encryption.html">Password Encryption</a> for more information.</p>
+<p>In the past we staged release candidates on our local machines using a semi-manual process. Now that we inherit from the Apache parent POM version 6, a repository manager will automatically handle staging for you. This means you now only need to specify your GPG passphrase in the release profile of your <code>${user.home}/.m2/settings.xml</code>:</p>
+<p><settings> ... <profiles> <profile> <id>apache-release</id> <properties> &lt;gpg.passphrase&gt; <!-- YOUR KEY PASSPHRASE --> &lt;/gpg.passphrase&gt; </properties> </profile> </profiles> ... </settings></p>
+<p>Everything else has been configured in the latest Sling Parent POM:</p>
+<p><parent> <groupId>org.apache.sling</groupId> <artifactId>sling</artifactId> <version>6</version> </parent></p>
+<h2>Staging the Release Candidates</h2>
+<p>First prepare your POMs for release:</p>
+<ol>
+  <li>Make sure there are no snapshots in the POMs to be released. In case you rely on a release version which is not yet promoted, you have to temporarily switch that dependency version to the release version. This might break the Jenkins CI build though, as the staged version is not yet visible to Jenkins, so revert this change after you have staged the release candidate.</li>
+  <li>Check that your POMs will not lose content when they are rewritten during the release process</li>
+</ol>
+<p>$ mvn release:prepare -DdryRun=true</p>
+<p>Compare the original <code>pom.xml</code> with the one called <code>pom.xml.tag</code> to see if the license or any other info has been removed. This has been known to happen if the starting <code>&lt;project&gt;</code> tag is not on a single line. The only things that should be different between these files are the <code>&lt;version&gt;</code> and <code>&lt;scm&gt;</code> elements. If there are any other changes, you must fix the original <code>pom.xml</code> file and commit before proceeding with the release.</p>
+<ol>
+  <li>Publish a snapshot</li>
+</ol>
+<p>$ mvn deploy ... [INFO] [deploy:deploy] [INFO] Retrieving previous build number from apache.snapshots.https ...</p>
+<ul>
+  <li>If you experience an error during deployment like a HTTP 401 check your settings for the required server entries as outlined in the <em>Prerequisites</em></li>
+  <li>Make sure the generated artifacts respect the Apache release <a href="http://www.apache.org/dev/release.html">rules</a>: NOTICE and LICENSE files should be present in the META-INF directory within the jar. For -sources artifacts, be sure that your POM does not use the maven-source-plugin:2.0.3 which is broken. The recommended version at this time is 2.0.4</li>
+  <li>You should verify the deployment under the <a href="https://repository.apache.org/content/groups/snapshots/org/apache/sling">snapshot</a> repository on Apache</li>
+</ul>
+<ol>
+  <li>Prepare the release</li>
+</ol>
+<p>$ mvn release:clean $ mvn release:prepare</p>
+<ul>
+  <li>Preparing the release will create the new tag in SVN, automatically checking in on your behalf</li>
+  <li>If you get a build failure because of an SVN commit problem (namely <em>The specified baseline is not the latest baseline, so it may not be checked out.</em>), just repeat the <code>mvn release:prepare</code> command until SVN is happy. This is based on a known timing issue when using the European SVN mirror.</li>
+</ul>
+<ol>
+  <li>Stage the release for a vote</li>
+</ol>
+<p>$ mvn release:perform</p>
+<ul>
+  <li>The release will automatically be inserted into a temporary staging repository for you, see the Nexus <a href="http://www.sonatype.com/books/nexus-book/reference/staging.html">staging documentation</a> for full details</li>
+  <li>You can continue to use <code>mvn release:prepare</code> and <code>mvn release:perform</code> on other sub-projects as necessary on the same machine and they will be combined in the same staging repository - this is useful when making a release of multiple Sling modules.</li>
+</ul>
+<ol>
+  <li>Close the staging repository:</li>
+</ol>
+<ul>
+  <li>Login to <a href="https://repository.apache.org">https://repository.apache.org</a> using your Apache SVN credentials. Click on <em>Staging</em> on the left. Then click on <em>org.apache.sling</em> in the list of repositories. In the panel below you should see an open repository that is linked to your username and IP. Right click on this repository and select <em>Close</em>. This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything</li>
+</ul>
+<ol>
+  <li>Verify the staged artifacts</li>
+</ol>
+<ul>
+  <li>If you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of *.asc (signature) files. If you don't like the content of the repository, right click your repository and choose <em>Drop</em>. You can then rollback your release (see <em>Canceling the Release</em>) and repeat the process
+</li>
+  <li>Note the staging repository URL, especially the number at the end of the URL. You will need this in your vote email</li>
+</ul>
+<h2>Starting the Vote</h2>
+<p>Propose a vote on the dev list with the closed issues, the issues left, and the staging repository - for example:</p>
+<p>To: "Sling Developers List" <a href="mailto:&#100;e&#118;&#x40;&#x73;&#x6c;&#x69;&#110;&#x67;&#x2e;a&#112;&#x61;&#99;h&#101;&#46;&#111;r&#103;">&#100;e&#118;&#x40;&#x73;&#x6c;&#x69;&#110;&#x67;&#x2e;a&#112;&#x61;&#99;h&#101;&#46;&#111;r&#103;</a> Subject: [VOTE] Release Apache Sling ABC version X.Y.Z</p>
+<p>Hi,</p>
+<p>We solved N issues in this release: https://issues.apache.org/jira/browse/SLING/fixforversion/...</p>
+<p>There are still some outstanding issues: https://issues.apache.org/jira/browse/SLING/component/...</p>
+<p>Staging repository: https://repository.apache.org/content/repositories/orgapachesling-[YOUR REPOSITORY ID]/</p>
+<p>You can use this UNIX script to download the release and verify the signatures: http://svn.apache.org/repos/asf/sling/trunk/check_staged_release.sh</p>
+<p>Usage: sh check_staged_release.sh [YOUR REPOSITORY ID] /tmp/sling-staging</p>
+<p>Please vote to approve this release:</p>
+<p>[ ] +1 Approve the release [ ] 0 Don't care [ ] -1 Don't release, because ...</p>
+<p>This majority vote is open for at least 72 hours.</p>
+<h2>Wait for the Results</h2>
+<p>From <a href="http://www.apache.org/foundation/voting.html">Votes on Package Releases</a>:</p>
+<blockquote>
+  <p>Votes on whether a package is ready to be released follow a format similar to majority approval -- except that the decision is officially determined solely by whether at least three +1 votes were registered. Releases may not be vetoed. Generally the community will table the vote to release if anyone identifies serious problems, but in most cases the ultimate decision, once three or more positive votes have been garnered, lies with the individual serving as release manager. The specifics of the process may vary from project to project, but the 'minimum of three +1 votes' rule is universal.</p>
+</blockquote>
+<p>The list of binding voters is available on the <a href="/project-information/project-team.html">Project Team</a> page.</p>
+<p>If the vote is successful, post the result to the dev list - for example:</p>
+<p>To: "Sling Developers List" <a href="mailto:d&#x65;&#118;&#x40;&#x73;&#108;&#105;n&#x67;&#x2e;a&#112;&#x61;&#x63;&#104;&#101;&#46;&#111;&#114;&#x67;">d&#x65;&#118;&#x40;&#x73;&#108;&#105;n&#x67;&#x2e;a&#112;&#x61;&#x63;&#104;&#101;&#46;&#111;&#114;&#x67;</a> Subject: [RESULT] [VOTE] Release Apache Sling ABC version X.Y.Z</p>
+<p>Hi,</p>
+<p>The vote has passed with the following result :</p>
+<p>+1 (binding): &lt;<list of names>&gt; +1 (non binding): &lt;<list of names>&gt;</p>
+<p>I will copy this release to the Sling dist directory and promote the artifacts to the central Maven repository.</p>
+<p>Be sure to include all votes in the list and indicate which votes were binding. Consider -1 votes very carefully. While there is technically no veto on release votes, there may be reasons for people to vote -1. So sometimes it may be better to cancel a release when someone, especially a member of the PMC, votes -1.</p>
+<p>If the vote is unsuccessful, you need to fix the issues and restart the process - see <em>Canceling the Release</em>. Note that any changes to the artifacts under vote require a restart of the process, no matter how trivial. When restarting a vote version numbers must not be reused, since binaries might have already been copied around.</p>
+<p>If the vote is successful, you need to promote and distribute the release - see <em>Promoting the Release</em>.</p>
+<h2>Canceling the Release</h2>
+<p>If the vote fails, or you decide to redo the release:</p>
+<ol>
+  <li>Remove the release tag from Subversion (<code>svn del ...</code>)</li>
+  <li>Login to <a href="https://repository.apache.org">https://repository.apache.org</a> using your Apache SVN credentials. Click on <em>Staging</em> on the left. Then click on <em>org.apache.sling</em> in the list of repositories. In the panel below you should see a closed repository that is linked to your username and IP (if it's not yet closed you need to right click and select <em>Close</em>). Right click on this repository and select <em>Drop</em>.</li>
+  <li>Remove the old version from Jira</li>
+  <li>Create a new version in Jira with a version number following the one of the cancelled release</li>
+  <li>Move all issues with the fix version set to the cancelled release to the next version</li>
+  <li>Delete the old version from Jira</li>
+  <li>Commit any fixes you need to make and start a vote for a new release.</li>
+</ol>
+<h2>Promoting the Release</h2>
+<p>If the vote passes:</p>
+<ol>
+  <li>Push the release to <a href="https://dist.apache.org/repos/dist/release/sling/">https://dist.apache.org/repos/dist/release/sling/</a>. This is only possible for PMC members (for a reasoning look at <a href="http://www.apache.org/dev/release.html#upload-ci">http://www.apache.org/dev/release.html#upload-ci</a>). If you are not a PMC member, please ask one to do the upload for you.</li>
+  <li>Commit the released artifacts to <a href="https://dist.apache.org/repos/dist/release/sling/">https://dist.apache.org/repos/dist/release/sling/</a> which is replicated to <a href="http://www.apache.org/dist/sling/">http://www.apache.org/dist/sling/</a> quickly via svnpubsub. Hint: use svn import to avoid having to checkout the whole folder first. The easiest to do this is to get the released artifact using the check script (check&#95;staged&#95;release.sh) and then simply copy the artifacts from the downloaded folder to your local checkout folder. Make sure to not add the checksum files for the signature file <em>.asc.</em>).</li>
+</ol>
+<ul>
+  <li>Make sure to <em>not</em> change the end-of-line encoding of the .pom when uploaded via svn import! Eg when a windows style eol encoded file is uploaded with the setting '*.pom = svn:eol-style=native' this would later fail the signature checks!</li>
+</ul>
+<ol>
+  <li>Delete the old release artifacts from that same dist.apache.org svn folder (the dist directory is archived)</li>
+  <li>Push the release to Maven Central</li>
+  <li>Login to <a href="https://repository.apache.org">https://repository.apache.org</a> with your Apache SVN credentials. Click on <em>Staging</em>. Find your closed staging repository and select it by checking the select box. Select the <em>Releases</em> repository from the drop-down list and click <em>Release</em> from the menu above.</li>
+  <li>Once the release is promoted click on <em>Repositories</em>, select the <em>Releases</em> repository and validate that your artifacts are all there.</li>
+  <li>Update the news section on the website at <a href="/news.html">news</a>.</li>
+  <li>Update the download page on the website at <a href="/downloads.cgi">downloads</a> to point to the new release.</li>
+</ol>
+<p>For the last two tasks, it's better to give the mirrors some time to distribute the uploaded artifacts (one day should be fine). This ensures that once the website (news and download page) is updated, people can actually download the artifacts.</p>
+<h2>Update JIRA</h2>
+<p>Go to <a href="https://issues.apache.org/jira/plugins/servlet/project-config/SLING/versions">Manage Versions</a> section on the SLING JIRA and mark the X.Y.Z version as released setting the release date to the date the vote has been closed.</p>
+<p>Also create a new version X.Y.Z+2, if that hasn't already been done.</p>
+<p>And keep the versions sorted, so when adding a new version moved it down to just above the previous versions.</p>
+<p>Close all issues associated with the released version.</p>
+<h2>Create an Announcement</h2>
+<p>We usually do such announcements only for "important" releases, as opposed to small individual module releases which are just announced on our <a href="/news.html">news</a> page.</p>
+<p>To: "Sling Developers List" <a href="mailto:&#x64;&#101;&#118;&#64;&#115;&#x6c;&#105;&#110;&#103;&#x2e;&#97;&#112;&#x61;&#99;&#x68;&#x65;&#x2e;&#x6f;&#114;&#x67;">&#x64;&#101;&#118;&#64;&#115;&#x6c;&#105;&#110;&#103;&#x2e;&#97;&#112;&#x61;&#99;&#x68;&#x65;&#x2e;&#x6f;&#114;&#x67;</a>, "Apache Announcements" <a href="mailto:&#97;&#110;n&#111;&#x75;&#x6e;c&#x65;&#64;&#97;&#112;&#x61;&#99;h&#x65;&#46;&#111;&#x72;&#103;">&#97;&#110;n&#111;&#x75;&#x6e;c&#x65;&#64;&#97;&#112;&#x61;&#99;h&#x65;&#46;&#111;&#x72;&#103;</a> Subject: [ANN] Apache Sling ABC version X.Y.Z Released</p>
+<p>The Apache Sling team is pleased to announce the release of Apache Sling ABC version X.Y.Z</p>
+<p>Apache Sling is a web framework that uses a Java Content Repository, such as Apache Jackrabbit, to store and manage content. Sling applications use either scripts or Java servlets, selected based on simple name conventions, to process HTTP requests in a RESTful way.</p>
+<p>&lt;<insert short description of the sub-project>&gt;</p>
+<p>http://sling.apache.org/site/apache-sling-ABC.html</p>
+<p>This release is available from http://sling.apache.org/site/downloads.cgi</p>
+<p>Building from verified sources is recommended, but convenience binaries are also available via Maven:</p>
+<p><dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.ABC</artifactId> <version>X.Y.Z</version> </dependency></p>
+<p>Release Notes:</p>
+<p>&lt;<insert release notes in text format from JIRA>&gt;</p>
+<p>Enjoy!</p>
+<p>-The Sling team</p>
+<p><em>Important</em>: Add the release to the Software section of the next board report below <a href="https://cwiki.apache.org/confluence/display/SLING/Reports">Reports</a>.</p>
+<h2>Related Links</h2>
+<ol>
+  <li><a href="http://www.apache.org/dev/release-signing.html">http://www.apache.org/dev/release-signing.html</a></li>
+  <li><a href="http://wiki.apache.org/incubator/SigningReleases">http://wiki.apache.org/incubator/SigningReleases</a></li>
+</ol>
+<h2>Releasing the Sling IDE Tooling</h2>
+<p>While the Sling IDE tooling is built using Maven, the toolchain that it is based around does not cooperate well with the maven-release-plugin. As such, the release preparation and execution are slightly different. The whole process is outlined below, assuming that we start with a development version of 1.0.1-SNAPSHOT.</p>
+<ol>
+  <li>set the fix version as released: <code>mvn tycho-versions:set-version -DnewVersion=1.0.2</code></li>
+  <li>update the version of the source-bundle project to 1.0.2</li>
+  <li>commit the change to svn</li>
+  <li>manually tag in svn using <code>svn copy https://svn.apache.org/repos/asf/sling/trunk/tooling/ide https://svn.apache.org/repos/asf/sling/tags/sling-ide-tooling-1.0.2</code></li>
+  <li>update to next version: <code>mvn tycho-versions:set-version -DnewVersion=1.0.3-SNAPSHOT</code> and also update the version of the source-bundle project</li>
+  <li>commit the change to svn</li>
+  <li>Checkout the version from the tag and proceed with the build from there <code>https://svn.apache.org/repos/asf/sling/tags/sling-ide-tooling-1.0.2</code></li>
+  <li>build the project with p2/gpg signing enabled: <code>mvn clean package -Psign</code></li>
+  <li>build the source bundle from the source-bundle directory: <code>mvn clean package</code></li>
+  <li>copy the following artifacts to https://dist.apache.org/repos/dist/dev/sling/ide-tooling-1.0.2</li>
+  <li>source bundle ( org.apache.sling.ide.source-bundle-1.0.2.zip )</li>
+  <li>zipped p2 repository ( org.apache.sling.ide.p2update-1.0.2.zip )</li>
+  <li>ensure the artifacts are checksummed and gpg-signed by using the <code>tooling/ide/sign.sh</code> script</li>
+  <li>call the vote</li>
+</ol>
+<p>The format of the release vote should be</p>
+<p>To: "Sling Developers List" <a href="mailto:&#x64;&#101;&#118;&#64;&#x73;&#x6c;&#x69;&#110;&#103;&#46;&#x61;&#x70;&#97;&#99;h&#x65;.&#111;&#114;g">&#x64;&#101;&#118;&#64;&#x73;&#x6c;&#x69;&#110;&#103;&#46;&#x61;&#x70;&#97;&#99;h&#x65;.&#111;&#114;g</a> Subject: [VOTE] Release Apache Sling IDE Tooling version X.Y.Z</p>
+<p>Hi,</p>
+<p>We solved N issues in this release: https://issues.apache.org/jira/browse/SLING/fixforversion/</p>
+<p>There are still some outstanding issues: https://issues.apache.org/jira/browse/SLING/component/12320908</p>
+<p>The release candidate has been uploaded at https://dist.apache.org/repos/dist/dev/sling, The release artifact is the source bundle - org.apache.sling.ide.source-bundle-X.Y.Z.zip - which can be used to build the project using</p>
+<p>mvn clean package</p>
+<p>The resulting binaries can be installed into an Eclipse instance from the update site which is found at p2update/target/repository after building the project.</p>
+<p>You can use this UNIX script to download the release and verify the signatures: http://svn.apache.org/repos/asf/sling/trunk/tooling/ide/check_staged_release.sh</p>
+<p>Usage: sh check_staged_release.sh X.Y.Z /tmp/sling-staging</p>
+<p>Please vote to approve this release:</p>
+<p>[ ] +1 Approve the release [ ] 0 Don't care [ ] -1 Don't release, because ...</p>
+<p>This majority vote is open for at least 72 hours</p>
+<p>Once the release has passed, the following must be done:</p>
+<ol>
+  <li>announce the result of the vote, see <a href="#wait-for-the-results">Wait for the results</a></li>
+  <li>update versions in jira, see <a href="#update-jira">Update JIRA</a></li>
+  <li>upload p2update.zip* to https://dist.apache.org/repos/dist/release/sling/</li>
+  <li>upload unzipped update site to https://dist.apache.org/repos/dist/release/sling/eclipse/1.0.2</li>
+  <li>upload the source bundle to https://dist.apache.org/repos/dist/release/sling/eclipse/1.0.2</li>
+  <li>create GPG signatures and checksums for all uploaded jars using the <code>tooling/ide/sign.sh</code> script</li>
+  <li>update https://dist.apache.org/repos/dist/release/sling/eclipse/composite{Content,Artifacts}.xml to point version 1.0.2</li>
+  <li>archive the old artifact versions but leave pointers to archive.apache.org, using compositeArtifacts.xml/compositeContent.xml , with a single child entry pointing to https://archive.apache.org/dist/sling/eclipse/1.0.0/</li>
+  <li>remove the staged artifacts from https://dist.apache.org/repos/dist/dev/sling/ide-tooling-1.0.2</li>
+  <li>update the news page and the download pages</li>
+  <li>update the Eclipse Marketplace listing</li>
+</ol>
+<h2>Appendix A: Create and Add your key to <a href="https://people.apache.org/keys/group/sling.asc">https://people.apache.org/keys/group/sling.asc</a></h2>
+<p>Considering that you are using a *nix system with a working OpenSSH, GnuPG, and bash you can create and add your own key with the following commands:</p>
+<ol>
+  <li>Create a public/private pair key:</li>
+</ol>
+<p>$ gpg --gen-key</p>
+<p>When gpg asks for e-mail linked the key you <em>MUST USE</em> the &lt;committer&gt;@apache.org one. When gpg asks for comment linked the key you <em>SHOULD USE</em> "CODE SIGNING KEY"</p>
+<ol>
+  <li>
+  <p>Add the key to <a href="https://people.apache.org/keys/group/sling.asc">https://people.apache.org/keys/group/sling.asc</a></p></li>
+  <li>
+  <p>Type the following command replacing the word <code>&lt;e-mail&gt;</code> with your Apache's one (&lt;committer&gt;@apache.org) to get the key signature</p></li>
+</ol>
+<p>$ gpg --fingerprint <e-mail></p>
+<p>The key signature is in the output following the <code>Key fingerprint =</code> part.</p>
+<ol>
+  <li>
+  <p>Add the key signature into the field 'OpenPGP Public Key Primary Fingerprint' in your profile at <a href="https://id.apache.org">https://id.apache.org</a>.</p></li>
+  <li>
+  <p>You are <em>DONE</em>, but to see the changes on <a href="https://people.apache.org/keys/group/sling.asc">https://people.apache.org/keys/group/sling.asc</a> you may need to wait a few hours;</p></li>
+  <li>
+  <p>You also have to add your public key either on <code>pool.sks-keyservers.net</code> or <code>pgp.mit.edu</code> (for the staging repository). To do so you can follow these steps:</p></li>
+  <li>Extract the key id from all the secret keys stored in the system:</li>
+</ol>
+<p>$ gpg --list-secret-keys.</p>
+<p>The output is something like this</p>
+<p>gpg --list-secret-keys</p>
+<h2>/Users/konradwindszus/.gnupg/secring.gpg</h2>
+<p>sec 2048R/455ECC7C 2016-01-21 uid Konrad Windszus <a href="mailto:&#x6b;&#x77;&#x69;&#110;&#64;a&#112;&#97;&#x63;h&#101;&#46;&#111;&#x72;&#103;">&#x6b;&#x77;&#x69;&#110;&#64;a&#112;&#97;&#x63;h&#101;&#46;&#111;&#x72;&#103;</a> ssb 2048R/226BCE00 2016-01-21</p>
+<p>The key id in this case is <code>455ECC7C</code>.</p>
+<ol>
+  <li>Send the key towards e.g. <code>pool.sks-keyservers.net</code> via</li>
+</ol>
+<p>$ gpg --keyserver pool.sks-keyservers.net --send-key <key-id></p>
+<h2>Appendix B: Maven and SCM credentials</h2>
+<p>For running the <code>mvn release:prepare</code> command without giving credentials on command line add <code>svn.apache.org</code> to your <code>settings.xml</code>:</p>
+<p><server> <id>svn.apache.org</id> <username>USERNAME</username> <password>ENCRYPTED_PASSWORD</password> </server></p>
+<h2>Appendix C: Deploy bundles on the Sling OBR (obsolete)</h2>
+<p><em>Update November 2016: We do now longer maintain the Sling OBR for new releases.</em></p>
+<p>We are mainting an OSGi Bundle Repository providing all release of the Sling Bundles. This repository is maintained as part of the Apache Sling site and is available at <a href="http://sling.apache.org/obr/sling.xml">http://sling.apache.org/obr/sling.xml</a>. The source for this page is maintained in the SVN repository below the <em>site</em>, that is at <a href="http://svn.apache.org/repos/asf/sling/site/">http://svn.apache.org/repos/asf/sling/site/</a>. To update the Sling OBR repository you must be an Apache Sling Committer since this requires SVN write access.</p>
+<p>To update the OBR you may use the Apache Felix Maven Bundle Plugin which prepares the bundle descriptor to be added to the OBR file. Follow these steps to update the OBR:</p>
+<ol>
+  <li>Checkout or update the Site Source</li>
+</ol>
+<p>$ svn checkout https://svn.apache.org/repos/asf/sling/site</p>
+<p>Note, that you have to checkout the site using the <code>https</code> URL, otherwise you will not be able to commit the changes later.</p>
+<ol>
+  <li>Deploy the Descriptor</li>
+</ol>
+<p>To deploy the project descriptor, checkout the tag of the bundle to deploy and run maven</p>
+<p>$ svn checkout http://svn.apache.org/repos/asf/sling/tags/the_module_tag $ cd the_module_tag $ mvn clean install org.apache.felix:maven-bundle-plugin:deploy -DprefixUrl=http://repo1.maven.org/maven2 -DremoteOBR=sling.xml -DaltDeploymentRepository=apache.releases::default::file:///path_to_site_checkout/trunk/content/obr</p>
+<p>This generates the bundle descriptor and adds it to the sling.xml file of your site checkout. As it also installs a fresh compiled version of the artifacts, it's better to remove that version from your local repository again (A new binary has new checksums etc.).</p>
+<ol>
+  <li>Variant: Refer to Maven Repository</li>
+</ol>
+<p>Instead of checking out and building the project locally, you may also use the <code>deploy-file</code> goal of the Maven Bundle Plugin:</p>
+<p>$ wget http://repo1.maven.org/maven2/org/apache/sling/the_module/version/the_module-version.jar $ wget http://repo1.maven.org/maven2/org/apache/sling/the_moduleversion/the_module-version.pom $ mvn org.apache.felix:maven-bundle-plugin:deploy-file -Dfile=the_module-version.jar -DpomFile=the_module-version.pom -DbundleUrl=http://repo1.maven.org/maven2/org/apache/sling/the_module/version/the_module-version.jar -Durl=file:///path_to_site_checkout/obr -DprefixUrl=http://repo1.maven.org/maven2 -DremoteOBR=sling.xml $ rm the_module-version.jar the_module-version.pom</p>
+<ol>
+  <li>Commit the Site Changes</li>
+</ol>
+<p>In the Site checkout folder commit the changes to the <code>trunk/content/obr/sling.xml</code> files (you may also review the changes using the <code>svn diff</code> command).</p>
+<p>$ svn commit -m"Add Bundle ABC Version X.Y.Z" trunk/content/obr/sling.xml</p>
+<ol>
+  <li>Update the Site</li>
+</ol>
+<p>Wait for the buildbot to update the staging area with your site update (see dev list for an email). Then go to the CMS at <a href="https://cms.apache.org/redirect?uri=http://sling.apache.org/obr">https://cms.apache.org/redirect?uri=http://sling.apache.org/obr</a> , update your checkout and then publish the site.</p>
+<h2>Appendix D: Deploy Maven plugin documentation (if applicable)</h2>
+<p>When releasing a Maven plugin, the Maven-generated documentation published under <a href="http://sling.apache.org/components/">http://sling.apache.org/components/</a> needs to be updated.</p>
+<p>This is currently supported for:</p>
+<ul>
+  <li><code>maven-sling-plugin</code></li>
+  <li><code>htl-maven-plugin</code></li>
+  <li><code>slingstart-maven-plugin</code></li>
+  <li><code>jspc-maven-plugin</code></li>
+</ul>
+<p>To publish the plugin documentation execute the following steps after the release:</p>
+<ol>
+  <li>
+  <p>Checkout the release tag of the released plugin (or reset your workspace)</p></li>
+  <li>
+  <p>Build and stage the maven site of the plugin. Note that this <em>commits</em> the generated content to the components folder mentioned below.</p></li>
+</ol>
+<p>$ mvn clean site:site site:stage scm-publish:publish-scm</p>
+<ol>
+  <li>Checkout the 'components' subtree of the Sling website</li>
+</ol>
+<p>$ svn checkout https://svn.apache.org/repos/asf/sling/site/trunk/content/components</p>
+<ol>
+  <li>
+  <p>SVN-rename the generated documenation that the site plugin commited to <code>&lt;plugin-name&gt;-archives/&lt;plugin-name&gt;-LATEST</code> to <code>&lt;plugin-name&gt;-archives/&lt;plugin-name&gt;-&lt;version&gt;</code></p></li>
+  <li>
+  <p>SVN-remove the existing folder <code>&lt;plugin-name&gt;</code> and SVN-copy the folder <code>&lt;plugin-name&gt;-archives/&lt;plugin-name&gt;-&lt;version&gt;</code> to <code>&lt;plugin-name&gt;</code></p></li>
+  <li>
+  <p>Commit the changes.</p></li>
+  <li>
+  <p>Publish the Sling site to production</p></li>
+  <li>
+  <p>Check the results at <a href="http://sling.apache.org/components/">http://sling.apache.org/components/</a></p></li>
+</ol>
+<p>For background information about this process see the <a href="http://maven.apache.org/developers/website/deploy-component-reference-documentation.html">Maven components reference documentation</a>.</p></section></div></div>            
+<div class="footer">
+                <div class="timestamp">
+                    TODO display revision number here
+                </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>            
+            
+        </div>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/sling-site/blob/a6129baf/documentation/development/repository-based-development.html
----------------------------------------------------------------------
diff --git a/documentation/development/repository-based-development.html b/documentation/development/repository-based-development.html
new file mode 100644
index 0000000..b581cda
--- /dev/null
+++ b/documentation/development/repository-based-development.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html><html lang="en">
+    <head>
+<meta charset="utf-8"/>
+        <title>Apache Sling on JBake</title>
+        <link rel="stylesheet" href="/res/css/site.css"/>
+        <link rel="stylesheet" href="/res/css/codehilite.css"/>
+        <div class="title">
+            <div class="logo">
+                <a href="http://sling.apache.org">
+                    <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
+                </a>
+            </div><div class="header">
+                <a href="http://www.apache.org">
+                    <img border="0" alt="Apache" src="/res/logos/apache.png"/>
+                </a>
+            </div>
+        </div>        
+    </head><body>
+<div class="menu">
+            <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><br/><p></p><strong>API Docs</strong><br/><a href="/apidocs/sling9/index.html">Sling 9</a><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><br/><p></p><strong>Project info</strong><br/><a h
 ref="/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><br/><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><br/><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="https://donate.apache.org/">Donate!</a><br/><a href="http://www.apache.org/foun
 dation/buy_stuff.html">Buy Stuff</a><br/><p></p><strong><a href="/sitemap.html">Site Map</a></strong>
+        </div>        <div class="main">
+<div class="row"><div class="small-12 columns"><section class="wrap"><header><h1>Repository Based Development</h1></header><p>[TOC]</p>
+<h1>WebDAV Support</h1>
+<p>WebDAV support in Sling is based on the <a href="http://jackrabbit.apache.org/jcr/components/jackrabbit-jcr-server.html#Simple_Webdav_Server">Simple WebDAV</a> implementation of Apache Jackrabbit which is integrated in the <code>jcr/webdav</code> project. This bundle provides WebDAV access to Sling's repository in two flavours:</p>
+<ol>
+  <li>Access to all workspaces of the repository on a separate URI space -- by default rooted at <code>/dav</code> in the Sling context -- and</li>
+  <li>access to the workspace used by Sling itself at the root of the Sling context.</li>
+</ol>
+<h2>Example</h2>
+<p>Consider Sling be installed on a Servlet container in the <code>/sling</code> context on <code>some.host.net:8080</code>. Here you would access the Sling workspace by directing your WebDAV client to the URL <code>http://some.host.net:8080/sling</code>. To access the <code>sample</code> workspace, which is not used by Sling itself, you would direct your WebDAV client to the URL <code>http://some.host.net:8080/sling/dav/sample</code>.</p>
+<p>Please note that accessing the repository in the separate URI space is actually faster, since requests do not pass the Sling resource and script resolution framework but instead hit the Jackrabbit Simple WebDAV Servlet directly.</p>
+<h2>Separate URI Space WebDAV</h2>
+<p>When accessing the repository through WebDAV in its separate URI Space, the URLs have the following generic structure:</p>
+<p><slingroot>/<prefix>/<workspace>/<item></p>
+<ul>
+  <li><code>slingroot</code> is the URL of the Sling web application context. In the above example, this would <code>http://some.host.net:8080/sling</code>.</li>
+  <li><code>prefix</code> is the URL prefix to address the WebDAV servlet. By default this is set to <code>/dav</code> but may be configured to any valid path.</li>
+  <li><code>workspace</code> is the name of the workspace to be accessed through WebDAV.</li>
+  <li><code>item</code> is the path to the JCR Item to access.</li>
+</ul>
+<p>If you access the WebDAV server at the prefix path -- e.g. <code>http://localhost:8080/dav</code> -- you will be redirected to the default workspace with a temporary redirect status 302. Some clients, such as the Linux <em>davfs</em>, do not like this redirection and must be configured to explicitly address the default workspace.</p>
+<h2>Configuration</h2>
+<p>The Jackrabbit Simple WebDAV support in Sling has the following configuration options:</p>
+<table>
+  <thead>
+    <tr>
+      <th>Property </th>
+      <th>Default </th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>Root Path </td>
+      <td><code>/dav</code> </td>
+      <td>The root path at which the Simple WebDAV Servlet is accessible. Access to the repository is provided in two ways. You may connect your WebDAV client directly to the root of the Sling web application to access the workspace of Sling directly. The other way is required if you want to connect your WebDAV client to any other workspace besides the Sling workspace. In this case you connect your WebDAV client to another a path comprised of this root path plus the name of the workspace. For example to connect to the <code>some*other</code> workspace, you might connect to <code>http://slinghost/dav/some*other</code>.</td>
+    </tr>
+    <tr>
+      <td>Authentication Realm </td>
+      <td><code>Sling WebDAV</code> </td>
+      <td>The name of the HTTP Basic Authentication Realm presented to the client to ask for authentication credentials to access the repository.</td>
+    </tr>
+    <tr>
+      <td>Non Collection Node Types </td>
+      <td><code>nt:file</code>, <code>nt:resource</code> </td>
+      <td>The JCR Node Types considered being non-collection resources by WebDAV. Any node replying <code>true</code> to <code>Node.isNodeType()</code> for one of the listed types is considered a non-collection resource. Otherwise the respective node is considered a collection resource.</td>
+    </tr>
+    <tr>
+      <td>Filter Prefixes </td>
+      <td><code>jcr</code>, <code>rep</code> </td>
+      <td>A list of namespace prefixes indicating JCR items filtered from being reported as collection members or properties. The default list includes jcr and rep (Jackrabbit internal namespace prefix) items. Do not modify this setting unless you know exactly what you are doing.</td>
+    </tr>
+  </tbody>
+</table>
+<p>Filter Node Types | -- | Nodetype names to be used to filter child nodes. A child node can be filtered if the declaring nodetype of its definition is one of the nodetype names specified in the nodetypes Element. E.g. defining rep:root as filtered nodetype would result in <code>jcr:system</code> being hidden but no other child node of the root node, since those are defined by the nodetype nt:unstructered. The default is empty. Do not modify this setting unless you know exactly what you are doing. Filter URIs | -- | A list of namespace URIs indicating JCR items filtered from being reported as collection members or properties. The default list is empty. Do not modify this setting unless you know exactly what you are doing. Collection Primary Type | <code>sling:Folder</code> | The JCR Primary Node Type to assign to nodes created to reflect WebDAV collections. You may name any primary node type here, provided it allows the creation of nodex of this type and the defined Non-Collection 
 Primary Type below it. Non-Collection Primary Type | <code>nt:file</code> | The JCR Primary Node Type to assign to nodes created to reflect WebDAV non-collection resources. You may name any primary node type here, provided the node type is allowed to be created below nodes of the type defined for the Collection Primary Type and that a child node with the name <code>jcr:content</code> may be created below the non-collection resource whose type is defined by the Content Primary Type. Content Primary Type | <code>nt:resource</code> | The JCR Primary Node Type to assign to the jcr:content child node of a WebDAV non-collection resource. You may name any primary node type here, provided the node type is allowed to be created as the jcr:content child node of the node type defined by the Non-Collection Primary Type. In addition the node type must allow at least the following properties: jcr:data (binary), jcr:lastModified (date), and jcr:mimeType (string).</p>
+<h2>Advanced Technical Details</h2>
+<p>Since the Jackrabbit Simple WebDAV Servlet is originally configured using an XML configuration file, which provides a great deal of flexibility, the integration into Sling had to assume some simplifications, of which some of the above parameters are part:</p>
+<h3>IOManager</h3>
+<p>This implementation uses the standard <code>org.apache.jackrabbit.server.io.IOManagerImpl</code> class and adds the <code>org.apache.jackrabbit.server.io.DirListingExportHandler</code> and <code>org.apache.jackrabbit.server.io.DefaultHandler</code> IO handlers as its only handlers. The <code>DefaultHandler</code> is configured from the three node types listed as configuration parameters above (collection, non-collection, and content primary node types).</p>
+<h3>PropertyManager</h3>
+<p>This implementation uses the standard <code>org.apache.jackrabbit.server.io.PropertyManagerImpl</code> and adds the same <code>DirListingExportHandler</code> and <code>DefaultHanlder</code> instances as its own handlers as are used by the IO Manager.</p>
+<h3>ItemFilter</h3>
+<p>This implementation uses the standard <code>org.apache.jackrabbit.webdav.simple.DefaultItemFilter</code> implementation as its item filter and configures the filter with the namespace prefixes and URIs as well as the node types configured as parameters.</p>
+<h3>Collection Node Types</h3>
+<p>This implementation only supports listing node types which are considered representing non-collection resources. All nodes which are instances of any of the configured node types are considered non-collection resources. All other nodes are considere collection resources.</p>
+<h1>DavEx Support</h1>
+<p><a href="https://wiki.apache.org/jackrabbit/RemoteAccess">DavEx</a> (WebDAV with JCR Extensions) allows to remotely access a JCR repository. Sling provides support based on the <a href="http://jackrabbit.apache.org/jcr/components/jackrabbit-jcr-server.html#JCR_Webdav_Server">JCR WebDAV Server</a> implementation of Apache Jackrabbit which is integrated in the <code>jcr/davex</code> project. By default the server listens on request urls starting with <code>/server</code>.</p>
+<h1>Eclipse plugin for JCR</h1>
+<p>see <a href="/documentation/development/ide-tooling.html">Sling IDE Tooling</a></p></section></div></div>            
+<div class="footer">
+                <div class="timestamp">
+                    TODO display revision number here
+                </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>            
+            
+        </div>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/sling-site/blob/a6129baf/documentation/development/resourceresolver-mock.html
----------------------------------------------------------------------
diff --git a/documentation/development/resourceresolver-mock.html b/documentation/development/resourceresolver-mock.html
new file mode 100644
index 0000000..9db8e3a
--- /dev/null
+++ b/documentation/development/resourceresolver-mock.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html><html lang="en">
+    <head>
+<meta charset="utf-8"/>
+        <title>Apache Sling on JBake</title>
+        <link rel="stylesheet" href="/res/css/site.css"/>
+        <link rel="stylesheet" href="/res/css/codehilite.css"/>
+        <div class="title">
+            <div class="logo">
+                <a href="http://sling.apache.org">
+                    <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
+                </a>
+            </div><div class="header">
+                <a href="http://www.apache.org">
+                    <img border="0" alt="Apache" src="/res/logos/apache.png"/>
+                </a>
+            </div>
+        </div>        
+    </head><body>
+<div class="menu">
+            <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><br/><p></p><strong>API Docs</strong><br/><a href="/apidocs/sling9/index.html">Sling 9</a><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><br/><p></p><strong>Project info</strong><br/><a h
 ref="/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><br/><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><br/><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="https://donate.apache.org/">Donate!</a><br/><a href="http://www.apache.org/foun
 dation/buy_stuff.html">Buy Stuff</a><br/><p></p><strong><a href="/sitemap.html">Site Map</a></strong>
+        </div>        <div class="main">
+<div class="row"><div class="small-12 columns"><section class="wrap"><header><h1>Resource Resolver Mock</h1></header><p>Mock for the resource resolver / factory for easier testing. It uses an in-memory map for storing the resource data, and supports reading, writing and a certain level of transaction and eventing support.</p>
+<p>[TOC]</p>
+<h2>Maven Dependency</h2>
+<h1>!xml</h1>
+<p><dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.testing.resourceresolver-mock</artifactId> </dependency></p>
+<p>See latest version on the <a href="/downloads.cgi">downloads page</a>.</p>
+<h2>Implemented mock features</h2>
+<p>The mock implementation supports:</p>
+<ul>
+  <li>All read and write operations of the Sling Resource API</li>
+  <li>Mimics transactions using via commit()/revert() methods</li>
+  <li>OSGi events for adding/changing/removing resources</li>
+  <li>The implementation tries to be as close as possible to the behavior of the JCR resource implementation e.g. concerning date and binary handling</li>
+</ul>
+<p>The following features are <em>not supported</em>:</p>
+<ul>
+  <li>Authentication not supported ("login" always possible with null authentication info)</li>
+  <li>Querying with queryResources/findResources not supported (always returns empty result set)</li>
+  <li>Sling Mapping is not supported</li>
+  <li>Resolving resource super types</li>
+</ul>
+<h2>Usage</h2>
+<p>To create a mocked resource resolver:</p>
+<h1>!java</h1>
+<p>MockResourceResolverFactory factory = new MockResourceResolverFactory(); ResourceResolver resolver = factory.getResourceResolver(null);</p>
+<p>With the resolver you can use all Sling Resource features including reading and writing data using the Sling API.</p>
+<p>You cannot do any operations that require the JCR API because no JCR is underlying and adapting to JCR objects will just return null.</p></section></div></div>            
+<div class="footer">
+                <div class="timestamp">
+                    TODO display revision number here
+                </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>            
+            
+        </div>
+    </body>
+</html>