incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r818667 [8/18] - in /websites/staging/sling/trunk/content: ./ authentication/ documentation/ documentation/bundles/ documentation/development/ documentation/getting-started/ documentation/the-sling-engine/ documentation/the-sling-engine/aut...
Date Tue, 22 May 2012 09:41:27 GMT
Added: websites/staging/sling/trunk/content/documentation/development/monitoring-requests.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/development/monitoring-requests.html (added)
+++ websites/staging/sling/trunk/content/documentation/development/monitoring-requests.html Tue May 22 09:41:22 2012
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+  <head>
+    <title>Apache Sling - Monitoring Requests</title>
+    <link rel="stylesheet" href="/css/site.css" type="text/css" media="all">
+    <link rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </head>
+  <body>
+    <div class="title">
+      <div class="logo">
+        <a href="http://sling.apache.org/site/index.html">
+          <img border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </a>
+      </div>
+      <div class="header">
+        <a href="http://www.apache.org/">
+          <img border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </a>
+      </div>
+    </div>
+    
+    <div class="menu"> 
+      <p><strong>Documentation</strong> <br />
+<a href="/getting-started.html">Getting Started</a> <br />
+<a href="/the-sling-engine.html">The Sling Engine</a> <br />
+<a href="/development.html">Development</a> <br />
+<a href="/bundles.html">Bundles</a> <br />
+<a href="/tutorials-how-tos.html">Tutorials &amp; How-Tos</a> <br />
+<a href="/configuration.html">Configuration</a> <br />
+<a href="http://s.apache.org/sling.wiki">Wiki</a> <br />
+<a href="http://s.apache.org/sling.faq">FAQ</a> <br />
+<a href="/sitemap.html">Site Map</a></p>
+<p><strong>API Docs</strong>  <br />
+<a href="http://sling.apache.org/apidocs/sling6/index.html">Sling 6</a> <br />
+<a href="http://sling.apache.org/apidocs/sling5/index.html">Sling 5</a> <br />
+</p>
+<p><strong>Project info</strong> <br />
+<a href="http://sling.apache.org/site/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://svn.apache.org/viewvc/sling/trunk">Browse Source Repository</a> <br />
+<a href="/security.html">Security</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="http://www.apache.org/foundation/buy_stuff.html">Buy Stuff</a> <br />
+</p>
+<iframe 
+    src="http://www.apache.org/ads/button.html"
+    style="border-width:0; float: left" frameborder="0" 
+    scrolling="no"
+    width="135" 
+    height="135">
+</iframe>
+    </div>
+    
+    <div class="main">
+      <div class="breadcrump" style="font-size: 80%;">
+        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/development.html">Development</a>
+      </div>
+      <h1>Monitoring Requests</h1>
+      <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>!sling-requests-plugin.jpg|align=left, alt=Recent Requests plugin!</p>
+      <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+        Rev. 1341376 by fmeschbe on Tue, 22 May 2012 09:41:06 +0000
+      </div>
+      <div class="trademarkFooter"> 
+        Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project
+        logo are trademarks of The Apache Software Foundation. All other marks mentioned
+        may be trademarks or registered trademarks of their respective owners.
+      </div>
+    </div>
+  </body>
+</html>

Added: websites/staging/sling/trunk/content/documentation/development/release-management.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/development/release-management.html (added)
+++ websites/staging/sling/trunk/content/documentation/development/release-management.html Tue May 22 09:41:22 2012
@@ -0,0 +1,434 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+  <head>
+    <title>Apache Sling - Release Management</title>
+    <link rel="stylesheet" href="/css/site.css" type="text/css" media="all">
+    <link rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </head>
+  <body>
+    <div class="title">
+      <div class="logo">
+        <a href="http://sling.apache.org/site/index.html">
+          <img border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </a>
+      </div>
+      <div class="header">
+        <a href="http://www.apache.org/">
+          <img border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </a>
+      </div>
+    </div>
+    
+    <div class="menu"> 
+      <p><strong>Documentation</strong> <br />
+<a href="/getting-started.html">Getting Started</a> <br />
+<a href="/the-sling-engine.html">The Sling Engine</a> <br />
+<a href="/development.html">Development</a> <br />
+<a href="/bundles.html">Bundles</a> <br />
+<a href="/tutorials-how-tos.html">Tutorials &amp; How-Tos</a> <br />
+<a href="/configuration.html">Configuration</a> <br />
+<a href="http://s.apache.org/sling.wiki">Wiki</a> <br />
+<a href="http://s.apache.org/sling.faq">FAQ</a> <br />
+<a href="/sitemap.html">Site Map</a></p>
+<p><strong>API Docs</strong>  <br />
+<a href="http://sling.apache.org/apidocs/sling6/index.html">Sling 6</a> <br />
+<a href="http://sling.apache.org/apidocs/sling5/index.html">Sling 5</a> <br />
+</p>
+<p><strong>Project info</strong> <br />
+<a href="http://sling.apache.org/site/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://svn.apache.org/viewvc/sling/trunk">Browse Source Repository</a> <br />
+<a href="/security.html">Security</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="http://www.apache.org/foundation/buy_stuff.html">Buy Stuff</a> <br />
+</p>
+<iframe 
+    src="http://www.apache.org/ads/button.html"
+    style="border-width:0; float: left" frameborder="0" 
+    scrolling="no"
+    width="135" 
+    height="135">
+</iframe>
+    </div>
+    
+    <div class="main">
+      <div class="breadcrump" style="font-size: 80%;">
+        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/development.html">Development</a>
+      </div>
+      <h1>Release Management</h1>
+      <p>Sling releases (and SNAPSHOTS) are deployed to the <a href="">Nexus repository</a> instead of the traditional deployment via the Maven 2 mirros 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>
+<div class="toc">
+<ul>
+<li><a href="#prerequisites">Prerequisites</a></li>
+<li><a href="#staging-the-release-candidates">Staging the Release Candidates</a></li>
+<li><a href="#starting-the-vote">Starting the Vote</a></li>
+<li><a href="#wait-for-the-results">Wait for the Results</a></li>
+<li><a href="#canceling-the-release">Canceling the Release</a></li>
+<li><a href="#promoting-the-release">Promoting the Release</a></li>
+<li><a href="#update-jira">Update JIRA</a></li>
+<li><a href="#create-an-announcement">Create an Announcement</a></li>
+<li><a href="#related-links">Related Links</a></li>
+<li><a href="#appendix-a-create-and-add-your-key-to-httpwwwapacheorgdistslingkeys">Appendix A: Create and Add your key to http://www.apache.org/dist/sling/KEYS</a></li>
+<li><a href="#appendix-b-preparing-releases-on-mac-os-x">Appendix B: preparing releases on Mac OS X</a></li>
+</ul>
+</div>
+<h2 id="prerequisites">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="">http://www.apache.org/dist/sling/KEYS</a> and either on pool.sks-keyservers.net or pgp.mit.edu (See Appendix A)</li>
+<li>When preparing the release on Mac OS X, check out Appendix B before trying the steps in the next chapter.</li>
+<li>Make sure you have all Apache servers defined in your <a href="">settings.xml</a></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="">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>
+<div class="codehilite"><pre><span class="nt">&lt;settings&gt;</span>
+    ...
+    <span class="nt">&lt;profiles&gt;</span>
+        <span class="nt">&lt;profile&gt;</span>
+            <span class="nt">&lt;id&gt;</span>apache-release<span class="nt">&lt;/id&gt;</span>
+            <span class="nt">&lt;properties&gt;</span>
+                <span class="nt">&lt;gpg.passphrase&gt;</span> <span class="c">&lt;!-- YOUR KEY PASSPHRASE --&gt;</span> <span class="nt">&lt;/gpg.passphrase&gt;</span>
+            <span class="nt">&lt;/properties&gt;</span>
+        <span class="nt">&lt;/profile&gt;</span>
+    <span class="nt">&lt;/profiles&gt;</span>
+    ...
+<span class="nt">&lt;/settings&gt;</span>
+</pre></div>
+
+
+<p>Everything else has been configured in the latest Sling Parent POM:</p>
+<div class="codehilite"><pre><span class="nt">&lt;parent&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.sling<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>sling<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span>6<span class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/parent&gt;</span>
+</pre></div>
+
+
+<h2 id="staging-the-release-candidates">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</li>
+<li>
+<p>Check that your POMs will not lose content when they are rewritten during the release process</p>
+<p>$ mvn release:prepare -DdryRun=true</p>
+</li>
+</ol>
+<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.
+1. Publish a snapshot</p>
+<div class="codehilite"><pre><span class="nv">$</span> <span class="nv">mvn</span> <span class="n">deploy</span>
+<span class="o">...</span>
+<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="p">[</span><span class="n">deploy:deploy</span><span class="p">]</span>
+<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="n">Retrieving</span> <span class="n">previous</span> <span class="n">build</span> <span class="n">number</span> <span class="n">from</span> <span class="n">apache</span><span class="o">.</span><span class="n">snapshots</span><span class="o">.</span><span class="n">https</span>
+<span class="o">...</span>
+</pre></div>
+
+
+<ol>
+<li>
+<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>
+</ul>
+</li>
+<li>
+<ul>
+<li>Be sure that the generated artifacts respect the Apache release <a href="">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>
+</ul>
+</li>
+<li>
+<ul>
+<li>You should verify the deployment under the <a href="">snapshot</a> repository on Apache</li>
+</ul>
+</li>
+<li>
+<p>Prepare the release</p>
+<p>$ mvn release:clean
+$ mvn release:prepare</p>
+</li>
+<li>
+<ul>
+<li>Preparing the release will create the new tag in SVN, automatically checking in on your behalf</li>
+</ul>
+</li>
+<li>
+<ul>
+<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>
+</li>
+<li>
+<p>Stage the release for a vote</p>
+<p>$ mvn release:perform</p>
+</li>
+<li>
+<ul>
+<li>The release will automatically be inserted into a temporary staging repository for you, see the Nexus <a href="">staging documentation</a> for full details</li>
+</ul>
+</li>
+<li>
+<ul>
+<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>
+</li>
+<li>Close the staging repository</li>
+<li>
+<ul>
+<li>Login to <a href="">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>
+</li>
+<li>Verify the staged artifacts</li>
+<li>
+<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>
+</ul>
+</li>
+<li>
+<ul>
+<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>
+</li>
+</ol>
+<h2 id="starting-the-vote">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>
+<div class="codehilite"><pre><span class="n">To:</span> <span class="s">&quot;Sling Developers List&quot;</span> <span class="sr">&lt;dev@sling.apache.org&gt;</span>
+<span class="n">Subject:</span> <span class="p">[</span><span class="n">VOTE</span><span class="p">]</span> <span class="n">Release</span> <span class="n">Apache</span> <span class="n">Sling</span> <span class="n">ABC</span> <span class="n">version</span> <span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span>
+
+<span class="n">Hi</span><span class="p">,</span>
+
+<span class="n">We</span> <span class="n">solved</span> <span class="n">N</span> <span class="n">issues</span> <span class="n">in</span> <span class="n">this</span> <span class="n">release:</span>
+<span class="n">https:</span><span class="sr">//iss</span><span class="n">ues</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/jira/</span><span class="n">browse</span><span class="sr">/SLING/</span><span class="n">fixforversion</span><span class="o">/...</span>
+
+<span class="n">There</span> <span class="n">are</span> <span class="n">still</span> <span class="n">some</span> <span class="n">outstanding</span> <span class="n">issues:</span>
+<span class="n">https:</span><span class="sr">//iss</span><span class="n">ues</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/jira/</span><span class="n">browse</span><span class="sr">/SLING/com</span><span class="n">ponent</span><span class="o">/...</span>
+
+<span class="n">Staging</span> <span class="n">repository:</span>
+<span class="n">https:</span><span class="sr">//</span><span class="n">repository</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/content/</span><span class="n">repositories</span><span class="sr">/orgapachesling-[YOUR REPOSITORY ID]/</span>
+
+<span class="n">You</span> <span class="n">can</span> <span class="k">use</span> <span class="n">this</span> <span class="n">UNIX</span> <span class="n">script</span> <span class="n">to</span> <span class="n">download</span> <span class="n">the</span> <span class="n">release</span> <span class="ow">and</span> <span class="n">verify</span> <span class="n">the</span> <span class="n">signatures:</span>
+<span class="n">http:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/sling/</span><span class="n">trunk</span><span class="o">/</span><span class="n">check_staged_release</span><span class="o">.</span><span class="n">sh</span>
+
+<span class="n">Usage:</span>
+<span class="n">sh</span> <span class="n">check_staged_release</span><span class="o">.</span><span class="n">sh</span> <span class="p">[</span><span class="n">YOUR</span> <span class="n">REPOSITORY</span> <span class="n">ID</span><span class="p">]</span> <span class="sr">/tmp/s</span><span class="n">ling</span><span class="o">-</span><span class="n">staging</span>
+
+<span class="n">Please</span> <span class="n">vote</span> <span class="n">to</span> <span class="n">approve</span> <span class="n">this</span> <span class="n">release:</span>
+
+  <span class="p">[</span> <span class="p">]</span> <span class="o">+</span><span class="mi">1</span> <span class="n">Approve</span> <span class="n">the</span> <span class="n">release</span>
+  <span class="p">[</span> <span class="p">]</span>  <span class="mi">0</span> <span class="n">Don</span><span class="s">&#39;t care</span>
+<span class="s">  [ ] -1 Don&#39;</span><span class="n">t</span> <span class="n">release</span><span class="p">,</span> <span class="n">because</span> <span class="o">...</span>
+
+<span class="n">This</span> <span class="n">vote</span> <span class="n">will</span> <span class="n">be</span> <span class="nb">open</span> <span class="k">for</span> <span class="mi">72</span> <span class="n">hours</span><span class="o">.</span>
+</pre></div>
+
+
+<h2 id="wait-for-the-results">Wait for the Results</h2>
+<p>From <a href="">Votes on Package Releases</a>:</p>
+<p>{quote}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.{quote}</p>
+<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>
+<div class="codehilite"><pre><span class="n">To:</span> <span class="s">&quot;Sling Developers List&quot;</span> <span class="sr">&lt;dev@sling.apache.org&gt;</span>
+<span class="n">Subject:</span> <span class="p">[</span><span class="n">RESULT</span><span class="p">]</span> <span class="p">[</span><span class="n">VOTE</span><span class="p">]</span> <span class="n">Release</span> <span class="n">Apache</span> <span class="n">Sling</span> <span class="n">ABC</span> <span class="n">version</span> <span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span>
+
+<span class="n">Hi</span><span class="p">,</span>
+
+<span class="n">The</span> <span class="n">vote</span> <span class="n">has</span> <span class="n">passed</span> <span class="n">with</span> <span class="n">the</span> <span class="n">following</span> <span class="n">result</span> <span class="p">:</span>
+
+<span class="o">+</span><span class="mi">1</span> <span class="p">(</span><span class="n">binding</span><span class="p">):</span> <span class="o">&lt;&lt;</span><span class="n">list</span> <span class="n">of</span> <span class="n">names</span><span class="o">&gt;&gt;</span>
+<span class="o">+</span><span class="mi">1</span> <span class="p">(</span><span class="n">non</span> <span class="n">binding</span><span class="p">):</span> <span class="o">&lt;&lt;</span><span class="n">list</span> <span class="n">of</span> <span class="n">names</span><span class="o">&gt;&gt;</span>
+
+<span class="n">I</span> <span class="n">will</span> <span class="n">copy</span> <span class="n">this</span> <span class="n">release</span> <span class="n">to</span> <span class="n">the</span> <span class="n">Sling</span> <span class="n">dist</span> <span class="n">directory</span> <span class="ow">and</span>
+<span class="n">promote</span> <span class="n">the</span> <span class="n">artifacts</span> <span class="n">to</span> <span class="n">the</span> <span class="n">central</span> <span class="n">Maven</span> <span class="n">repository</span><span class="o">.</span>
+</pre></div>
+
+
+<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>.</p>
+<p>If the vote is successful, you need to promote and distribute the release - see <em>Promoting the Release</em>.</p>
+<h2 id="canceling-the-release">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</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>Rollback the version in the <code>pom.xml</code> and commit any fixes you need to make</li>
+</ol>
+<h2 id="promoting-the-release">Promoting the Release</h2>
+<p>If the vote passes:</p>
+<ol>
+<li>Copy the released artifacts to the Sling dist directory (<code>/x1/www/www.apache.org/dist/sling</code>) on <code>people.apache.org</code>. This folder is replicated to <a href="">http://www.apache.org/dist/sling/</a> a few times a day.</li>
+<li>Delete the old release from the Sling dist directory (it's archived)</li>
+<li>Login to <a href="">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>If you're releasing bundles, you should also add them to the Sling Release OBR (see <em>Appendix C</em>).</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.html">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 id="update-jira">Update JIRA</h2>
+<p>Go to <a href="">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>
+<h2 id="create-an-announcement">Create an Announcement</h2>
+<div class="codehilite"><pre>To: &quot;Sling Developers List&quot; <span class="nt">&lt;dev</span><span class="err">@sling.apache.org</span><span class="nt">&gt;</span>, &quot;Apache Announcements&quot; <span class="nt">&lt;announce</span><span class="err">@apache.org</span><span class="nt">&gt;</span>
+Subject: [ANN] Apache Sling ABC version X.Y.Z Released
+
+The Apache Sling team is pleased to announce the release of Apache Sling ABC version X.Y.Z
+
+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.
+
+<span class="err">&lt;</span><span class="nt">&lt;insert</span> <span class="err">short</span> <span class="err">description</span> <span class="err">of</span> <span class="err">the</span> <span class="err">sub-project</span><span class="nt">&gt;</span>&gt;
+
+http://sling.apache.org/site/apache-sling-ABC.html
+
+This release is available from http://sling.apache.org/site/downloads.cgi and Maven:
+
+<span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.sling<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>org.apache.sling.ABC<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span>X.Y.Z<span class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+
+Release Notes:
+
+<span class="err">&lt;</span><span class="nt">&lt;insert</span> <span class="err">release</span> <span class="err">notes</span> <span class="err">in</span> <span class="err">text</span> <span class="err">format</span> <span class="err">from</span> <span class="err">JIRA</span><span class="nt">&gt;</span>&gt;
+
+Enjoy!
+
+-The Sling team
+</pre></div>
+
+
+<p><em>Important</em>: Add the release to the Software section of the next board report below <a href="">Reports</a>.</p>
+<h2 id="related-links">Related Links</h2>
+<ol>
+<li><a href="">http://www.apache.org/dev/release-signing.html</a></li>
+<li><a href="">http://wiki.apache.org/incubator/SigningReleases</a></li>
+</ol>
+<h2 id="appendix-a-create-and-add-your-key-to-httpwwwapacheorgdistslingkeys">Appendix A: Create and Add your key to <a href="">http://www.apache.org/dist/sling/KEYS</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 command:</p>
+<ol>
+<li>
+<p><em>Create a public/private pair key</em>:</p>
+<p>$ gpg --gen-key</p>
+</li>
+</ol>
+<p>When gpg asks for e-mail linked the key you <em>MUST USE</em> the <committer>@apache.org one
+When gpg asks for comment linked the key you <em>SHOULD USE</em> "CODE SIGNING KEY"
+1. <em>Add the key to</em> <a href="">http://www.apache.org/dist/sling/KEYS:</a> type the following command replacing the word e-mail with your Apache's one (<committer>@apache.org).</p>
+<div class="codehilite"><pre><span class="nv">$</span> <span class="err">(</span><span class="nv">gpg</span> <span class="o">--</span><span class="n">list</span><span class="o">-</span><span class="n">sigs</span> <span class="n">e</span><span class="o">-</span><span class="n">mail</span> <span class="o">&amp;&amp;</span> <span class="n">gpg</span> <span class="o">--</span><span class="n">export</span> <span class="o">--</span><span class="n">armor</span> <span class="n">e</span><span class="o">-</span><span class="n">mail</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">toadd</span><span class="o">.</span><span class="n">key</span>
+<span class="nv">$</span> <span class="nv">scp</span> <span class="n">toadd</span><span class="o">.</span><span class="n">key</span> <span class="n">people</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org:</span>
+<span class="nv">$</span> <span class="nv">ssh</span> <span class="n">people</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span> <span class="s">&quot;cat toadd.key &gt;&gt; /x1/www/www.apache.org/dist/sling/KEYS&quot;</span>
+</pre></div>
+
+
+<ol>
+<li>You are <em>DONE</em>, but to see the changes on <a href="">http://www.apache.org/dist/sling/KEYS</a> you must wait 2 hours</li>
+</ol>
+<p>You also have to add your public key either on pool.sks-keyservers.net or pgp.mit.edu (for the statging repository).</p>
+<h2 id="appendix-b-preparing-releases-on-mac-os-x">Appendix B: preparing releases on Mac OS X</h2>
+<p>When running the <code>mvn release:prepare</code> command on Mac OS X, you might see the following error:</p>
+<div class="codehilite"><pre><span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="n">Working</span> <span class="n">directory:</span> <span class="sr">/homedir/</span><span class="n">dev</span><span class="sr">/sling/</span><span class="n">dependencymanager</span>
+<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="o">------------------------------------------------------------------------</span>
+<span class="p">[</span><span class="n">ERROR</span><span class="p">]</span> <span class="n">BUILD</span> <span class="n">FAILURE</span>
+<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="o">------------------------------------------------------------------------</span>
+<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="n">Unable</span> <span class="n">to</span> <span class="n">commit</span> <span class="n">files</span>
+<span class="n">Provider</span> <span class="n">message:</span>
+<span class="n">The</span> <span class="n">svn</span> <span class="n">command</span> <span class="n">failed</span><span class="o">.</span>
+<span class="n">Command</span> <span class="n">output:</span>
+<span class="n">svn:</span> <span class="n">Commit</span> <span class="n">failed</span> <span class="p">(</span><span class="n">details</span> <span class="n">follow</span><span class="p">):</span>
+<span class="n">svn:</span> <span class="n">MKACTIVITY</span> <span class="n">of</span> <span class="s">&#39;/repos/asf/!svn/act/4f11ad5d-9161-0410-b4dd-cb727141ea8c&#39;</span><span class="p">:</span> <span class="n">authorization</span> <span class="n">failed</span> <span class="p">(</span><span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="p">){</span><span class="n">code</span><span class="p">}</span>
+
+<span class="n">This</span> <span class="n">is</span> <span class="n">due</span> <span class="n">to</span> <span class="n">a</span> <span class="n">bug</span> <span class="n">in</span> <span class="n">Subversion</span> <span class="n">on</span> <span class="n">the</span> <span class="n">Mac</span><span class="p">,</span> <span class="n">as</span> <span class="n">described</span> <span class="n">by</span> <span class="n">Brett</span> <span class="n">Porter</span> <span class="n">in</span> <span class="n">his</span> <span class="p">[</span><span class="n">blog</span><span class="o">|</span><span class="n">http:</span><span class="sr">//</span><span class="n">blogs</span><span class="o">.</span><span class="n">exist</span><span class="o">.</span><span class="n">com</span><span class="sr">/bporter/</span><span class="mi">2008</span><span class="sr">/02/</span><span class="mi">25</span><span class="sr">/working-around-non-interactive-problems-in-leopards-subversion/</span><span c
 lass="p">]</span><span class="o">.</span> <span class="n">He</span> <span class="n">proposes</span> <span class="n">putting</span> <span class="n">an</span> <span class="s">&quot;svn&quot;</span> <span class="n">script</span> <span class="n">at</span> <span class="n">the</span> <span class="n">head</span> <span class="n">of</span> <span class="n">your</span> <span class="n">path</span> <span class="n">to</span> <span class="n">fix</span> <span class="n">the</span> <span class="n">issue</span><span class="o">.</span>
+
+<span class="n">h2</span><span class="o">.</span> <span class="n">Appendix</span> <span class="n">C:</span> <span class="n">Deploy</span> <span class="n">bundles</span> <span class="n">on</span> <span class="n">the</span> <span class="n">Sling</span> <span class="n">OBR</span>
+
+<span class="n">We</span> <span class="n">are</span> <span class="n">mainting</span> <span class="n">an</span> <span class="n">OSGi</span> <span class="n">Bundle</span> <span class="n">Repository</span> <span class="n">providing</span> <span class="n">all</span> <span class="n">release</span> <span class="n">of</span> <span class="n">the</span> <span class="n">Sling</span> <span class="n">Bundles</span><span class="o">.</span> <span class="n">This</span> <span class="n">repository</span> <span class="n">is</span> <span class="n">maintained</span> <span class="n">as</span> <span class="n">part</span> <span class="n">of</span> <span class="n">the</span> <span class="n">Apache</span> <span class="n">Sling</span> <span class="n">site</span> <span class="ow">and</span> <span class="n">is</span> <span class="n">available</span> <span class="n">at</span> <span class="p">[</span><span class="n">http:</span><span class="sr">//s</span><span class="n">ling</span><span class="o">.</span
 ><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/obr/s</span><span class="n">ling</span><span class="o">.</span><span class="n">xml</span><span class="p">]</span><span class="o">.</span> <span class="n">The</span> <span class="n">source</span> <span class="k">for</span> <span class="n">this</span> <span class="n">page</span> <span class="n">is</span> <span class="n">maintained</span> <span class="n">in</span> <span class="n">the</span> <span class="n">SVN</span> <span class="n">repository</span> <span class="n">below</span> <span class="n">the</span> <span class="n">_site_</span><span class="p">,</span> <span class="n">that</span> <span class="n">is</span> <span class="n">at</span> <span class="p">[</span><span class="n">http:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class
 ="n">asf</span><span class="sr">/sling/si</span><span class="n">te</span><span class="o">/</span><span class="p">]</span><span class="o">.</span> <span class="n">To</span> <span class="n">update</span> <span class="n">the</span> <span class="n">Sling</span> <span class="n">OBR</span> <span class="n">repository</span> <span class="n">you</span> <span class="n">must</span> <span class="n">be</span> <span class="n">an</span> <span class="n">Apache</span> <span class="n">Sling</span> <span class="n">Committer</span> <span class="n">since</span> <span class="n">this</span> <span class="n">requires</span> <span class="n">SVN</span> <span class="nb">write</span> <span class="n">access</span><span class="o">.</span>
+
+<span class="n">To</span> <span class="n">update</span> <span class="n">the</span> <span class="n">OBR</span> <span class="n">you</span> <span class="n">may</span> <span class="k">use</span> <span class="n">the</span> <span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Maven</span> <span class="n">Bundle</span> <span class="n">Plugin</span> <span class="n">which</span> <span class="n">prepares</span> <span class="n">the</span> <span class="n">bundle</span> <span class="n">descriptor</span> <span class="n">to</span> <span class="n">be</span> <span class="n">added</span> <span class="n">to</span> <span class="n">the</span> <span class="n">OBR</span> <span class="n">file</span><span class="o">.</span> <span class="n">Follow</span> <span class="n">these</span> <span class="n">steps</span> <span class="n">to</span> <span class="n">update</span> <span class="n">the</span> <span class="n">OBR:</span>
+
+<span class="o">*</span><span class="mi">1</span><span class="o">.</span> <span class="n">Checkout</span> <span class="ow">or</span> <span class="n">update</span> <span class="n">the</span> <span class="n">Site</span> <span class="n">Source</span><span class="o">*</span>
+</pre></div>
+
+
+<p>$ svn checkout https://svn.apache.org/repos/asf/sling/site</p>
+<div class="codehilite"><pre><span class="n">Note</span><span class="p">,</span> <span class="n">that</span> <span class="n">you</span> <span class="n">have</span> <span class="n">to</span> <span class="n">checkout</span> <span class="n">the</span> <span class="n">site</span> <span class="n">using</span> <span class="n">the</span>  <span class="n">URL</span><span class="p">,</span> <span class="n">otherwise</span> <span class="n">you</span> <span class="n">will</span> <span class="ow">not</span> <span class="n">be</span> <span class="n">able</span> <span class="n">to</span> <span class="n">commit</span> <span class="n">the</span> <span class="n">changes</span> <span class="n">later</span><span class="o">.</span>
+
+<span class="o">*</span><span class="mi">2</span><span class="o">.</span> <span class="n">Deploy</span> <span class="n">the</span> <span class="n">Descriptor</span><span class="o">*</span>
+
+<span class="n">To</span> <span class="n">deploy</span> <span class="n">the</span> <span class="n">project</span> <span class="n">descriptor</span><span class="p">,</span> <span class="n">checkout</span> <span class="n">the</span> <span class="n">tag</span> <span class="n">of</span> <span class="n">the</span> <span class="n">bundle</span> <span class="n">to</span> <span class="n">deploy</span> <span class="ow">and</span> <span class="n">run</span> <span class="n">maven</span>
+</pre></div>
+
+
+<p>$ svn checkout http://svn.apache.org/repos/asf/sling/tags/the<em>module</em>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<em>to</em>site_checkout/obr</p>
+<div class="codehilite"><pre><span class="n">This</span> <span class="n">generates</span> <span class="n">the</span> <span class="n">bundle</span> <span class="n">descriptor</span> <span class="ow">and</span> <span class="n">adds</span> <span class="n">it</span> <span class="n">to</span> <span class="n">the</span>  <span class="n">file</span> <span class="n">of</span> <span class="n">your</span> <span class="n">site</span> <span class="n">checkout</span><span class="o">.</span>
+
+<span class="o">*</span><span class="mi">2</span><span class="n">a</span><span class="o">.</span> <span class="n">Variant:</span> <span class="n">Refer</span> <span class="n">to</span> <span class="n">Maven</span> <span class="n">Repository</span><span class="o">*</span>
+
+<span class="n">Instead</span> <span class="n">of</span> <span class="n">checking</span> <span class="n">out</span> <span class="ow">and</span> <span class="n">building</span> <span class="n">the</span> <span class="n">project</span> <span class="n">locally</span><span class="p">,</span> <span class="n">you</span> <span class="n">may</span> <span class="n">also</span> <span class="k">use</span> <span class="n">the</span>  <span class="n">goal</span> <span class="n">of</span> <span class="n">the</span> <span class="n">Maven</span> <span class="n">Bundle</span> <span class="n">Plugin:</span>
+</pre></div>
+
+
+<p>$ wget http://repo1.maven.org/maven2/org/apache/sling/the<em>module/version/the</em>module-version.jar
+$ wget http://repo1.maven.org/maven2/org/apache/sling/the<em>module/version/the</em>module-version.pom
+$ mvn org.apache.felix:maven-bundle-plugin:deploy-file \
+    -Dfile=the<em>module-version.jar -DpomFile=the</em>module-version.pom \
+    -DbundleUrl=http://repo1.maven.org/maven2/org/apache/sling/the<em>module/version/the</em>module-version.jar \
+    -Durl=file:///path<em>to</em>site_checkout/obr \
+    -DprefixUrl=http://repo1.maven.org/maven2 \
+    -DremoteOBR=sling.xml
+$ rm the<em>module-version.jar the</em>module-version.pom</p>
+<div class="codehilite"><pre><span class="o">*</span><span class="mi">3</span><span class="o">.</span> <span class="n">Commite</span> <span class="n">the</span> <span class="n">Site</span> <span class="n">Changes</span><span class="o">*</span>
+
+<span class="n">In</span> <span class="n">the</span> <span class="n">Site</span> <span class="n">checkout</span> <span class="n">folder</span> <span class="n">commit</span> <span class="n">the</span> <span class="n">changes</span> <span class="n">to</span> <span class="n">the</span>  <span class="n">files</span> <span class="p">(</span><span class="n">you</span> <span class="n">may</span> <span class="n">also</span> <span class="n">review</span> <span class="n">the</span> <span class="n">changes</span> <span class="n">using</span> <span class="n">the</span>  <span class="n">command</span><span class="p">)</span><span class="o">.</span>
+</pre></div>
+
+
+<p>$ svn commit -m"Add Bundle ABC Version X.Y.Z" obr/sling.xml</p>
+<div class="codehilite"><pre><span class="o">*</span><span class="mi">4</span><span class="o">.</span> <span class="n">Update</span> <span class="n">the</span> <span class="n">Site</span> <span class="n">on</span><span class="o">*</span> <span class="p">}</span>
+
+<span class="n">After</span> <span class="n">committing</span> <span class="n">the</span> <span class="n">changes</span><span class="p">,</span> <span class="n">you</span> <span class="n">have</span> <span class="n">to</span> <span class="n">update</span> <span class="n">the</span> <span class="n">site</span> <span class="n">source</span><span class="p">,</span> <span class="n">which</span> <span class="n">is</span> <span class="n">getting</span> <span class="n">mirrored</span> <span class="n">to</span> <span class="n">the</span> <span class="n">web</span> <span class="n">servers</span> <span class="n">on</span>
+</pre></div>
+
+
+<p>$ ssh people.apache.org svn update /x1/www/sling.apache.org/obr/sling.xml</p>
+<div class="codehilite"><pre><span class="n">After</span> <span class="n">updating</span> <span class="n">the</span> <span class="n">site</span> <span class="n">source</span> <span class="n">it</span> <span class="n">will</span> <span class="n">generally</span> <span class="n">take</span> <span class="n">an</span> <span class="n">hour</span> <span class="ow">or</span> <span class="n">two</span> <span class="k">until</span> <span class="n">the</span> <span class="n">changes</span> <span class="n">are</span> <span class="n">visible</span> <span class="n">on</span> <span class="n">the</span> <span class="n">web</span><span class="o">.</span>
+</pre></div>
+      <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+        Rev. 1341376 by fmeschbe on Tue, 22 May 2012 09:41:06 +0000
+      </div>
+      <div class="trademarkFooter"> 
+        Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project
+        logo are trademarks of The Apache Software Foundation. All other marks mentioned
+        may be trademarks or registered trademarks of their respective owners.
+      </div>
+    </div>
+  </body>
+</html>

Added: websites/staging/sling/trunk/content/documentation/development/repository-based-development.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/development/repository-based-development.html (added)
+++ websites/staging/sling/trunk/content/documentation/development/repository-based-development.html Tue May 22 09:41:22 2012
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+  <head>
+    <title>Apache Sling - Repository Based Development</title>
+    <link rel="stylesheet" href="/css/site.css" type="text/css" media="all">
+    <link rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </head>
+  <body>
+    <div class="title">
+      <div class="logo">
+        <a href="http://sling.apache.org/site/index.html">
+          <img border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </a>
+      </div>
+      <div class="header">
+        <a href="http://www.apache.org/">
+          <img border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </a>
+      </div>
+    </div>
+    
+    <div class="menu"> 
+      <p><strong>Documentation</strong> <br />
+<a href="/getting-started.html">Getting Started</a> <br />
+<a href="/the-sling-engine.html">The Sling Engine</a> <br />
+<a href="/development.html">Development</a> <br />
+<a href="/bundles.html">Bundles</a> <br />
+<a href="/tutorials-how-tos.html">Tutorials &amp; How-Tos</a> <br />
+<a href="/configuration.html">Configuration</a> <br />
+<a href="http://s.apache.org/sling.wiki">Wiki</a> <br />
+<a href="http://s.apache.org/sling.faq">FAQ</a> <br />
+<a href="/sitemap.html">Site Map</a></p>
+<p><strong>API Docs</strong>  <br />
+<a href="http://sling.apache.org/apidocs/sling6/index.html">Sling 6</a> <br />
+<a href="http://sling.apache.org/apidocs/sling5/index.html">Sling 5</a> <br />
+</p>
+<p><strong>Project info</strong> <br />
+<a href="http://sling.apache.org/site/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://svn.apache.org/viewvc/sling/trunk">Browse Source Repository</a> <br />
+<a href="/security.html">Security</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="http://www.apache.org/foundation/buy_stuff.html">Buy Stuff</a> <br />
+</p>
+<iframe 
+    src="http://www.apache.org/ads/button.html"
+    style="border-width:0; float: left" frameborder="0" 
+    scrolling="no"
+    width="135" 
+    height="135">
+</iframe>
+    </div>
+    
+    <div class="main">
+      <div class="breadcrump" style="font-size: 80%;">
+        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/development.html">Development</a>
+      </div>
+      <h1>Repository Based Development</h1>
+      <div class="toc">
+<ul>
+<li><a href="#webdav-support">WebDAV Support</a><ul>
+<li><a href="#example">Example</a><ul>
+<li><a href="#separate-uri-space-webdav">Separate URI Space WebDAV</a></li>
+</ul>
+</li>
+<li><a href="#configuration">Configuration</a><ul>
+<li><a href="#advanced-technical-details">Advanced Technical Details</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#eclipse-plugin-for-jcr">Eclipse plugin for JCR</a></li>
+</ul>
+</div>
+<h2 id="webdav-support">WebDAV Support</h2>
+<p>WebDAV support in Sling is based on the <a href="">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: (1) Access to all workspaces of the repository on a separate URL space -- by default rooted at <code>/dav</code> in the Sling context -- and (2) access to the workspace used by Sling itself at the root of the Sling context.</p>
+<h4 id="example">Example</h4>
+<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>
+<h4 id="separate-uri-space-webdav">Separate URI Space WebDAV</h4>
+<p>When accessing the repository through WebDAV in its separate URI Space, the URLs have the following generic structure:</p>
+<p>{panel}
+slingroot/prefix/workspace/item
+{panel}</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>
+<h3 id="configuration">Configuration</h3>
+<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 Typee</td>
+<td><a href=""> <code>nt:file</code>, <code>nt:resource</code> </a></td>
+<td>The JCR Node Types considered being non-collection resouces 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 colleciton resource.</td>
+</tr>
+<tr>
+<td>Filter Prefixes</td>
+<td><a href=""> <code>jcr</code>, <code>rep</code> </a></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>
+<tr>
+<td>Filter Node Types</td>
+<td>--</td>
+<td>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 whould result in jcr:system 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.</td>
+</tr>
+<tr>
+<td>Filter URIs</td>
+<td>--</td>
+<td>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.</td>
+</tr>
+<tr>
+<td>Collection Primary Type</td>
+<td><code>sling:Folder</code></td>
+<td>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.</td>
+</tr>
+<tr>
+<td>Non-Collection Primary Type</td>
+<td><code>nt:file</code></td>
+<td>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 "jcr:content" may be created below the non-collection resource whose type is defined by the Content Primary Type.</td>
+</tr>
+<tr>
+<td>Content Primary Type</td>
+<td><code>nt:resource</code></td>
+<td>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).</td>
+</tr>
+</tbody>
+</table>
+<h4 id="advanced-technical-details">Advanced Technical Details</h4>
+<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>
+<p><em>IOManager</em></p>
+<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>
+<p><em>PropertyManager</em></p>
+<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>
+<p><em>ItemFilter</em></p>
+<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>
+<p><em>Collection Node Types</em></p>
+<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>
+<h2 id="eclipse-plugin-for-jcr">Eclipse plugin for JCR</h2>
+<p>TBD</p>
+      <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+        Rev. 1341376 by fmeschbe on Tue, 22 May 2012 09:41:06 +0000
+      </div>
+      <div class="trademarkFooter"> 
+        Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project
+        logo are trademarks of The Apache Software Foundation. All other marks mentioned
+        may be trademarks or registered trademarks of their respective owners.
+      </div>
+    </div>
+  </body>
+</html>

Added: websites/staging/sling/trunk/content/documentation/development/sling-testing-tools.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/development/sling-testing-tools.html (added)
+++ websites/staging/sling/trunk/content/documentation/development/sling-testing-tools.html Tue May 22 09:41:22 2012
@@ -0,0 +1,170 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+  <head>
+    <title>Apache Sling - Sling Testing Tools</title>
+    <link rel="stylesheet" href="/css/site.css" type="text/css" media="all">
+    <link rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </head>
+  <body>
+    <div class="title">
+      <div class="logo">
+        <a href="http://sling.apache.org/site/index.html">
+          <img border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </a>
+      </div>
+      <div class="header">
+        <a href="http://www.apache.org/">
+          <img border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </a>
+      </div>
+    </div>
+    
+    <div class="menu"> 
+      <p><strong>Documentation</strong> <br />
+<a href="/getting-started.html">Getting Started</a> <br />
+<a href="/the-sling-engine.html">The Sling Engine</a> <br />
+<a href="/development.html">Development</a> <br />
+<a href="/bundles.html">Bundles</a> <br />
+<a href="/tutorials-how-tos.html">Tutorials &amp; How-Tos</a> <br />
+<a href="/configuration.html">Configuration</a> <br />
+<a href="http://s.apache.org/sling.wiki">Wiki</a> <br />
+<a href="http://s.apache.org/sling.faq">FAQ</a> <br />
+<a href="/sitemap.html">Site Map</a></p>
+<p><strong>API Docs</strong>  <br />
+<a href="http://sling.apache.org/apidocs/sling6/index.html">Sling 6</a> <br />
+<a href="http://sling.apache.org/apidocs/sling5/index.html">Sling 5</a> <br />
+</p>
+<p><strong>Project info</strong> <br />
+<a href="http://sling.apache.org/site/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://svn.apache.org/viewvc/sling/trunk">Browse Source Repository</a> <br />
+<a href="/security.html">Security</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="http://www.apache.org/foundation/buy_stuff.html">Buy Stuff</a> <br />
+</p>
+<iframe 
+    src="http://www.apache.org/ads/button.html"
+    style="border-width:0; float: left" frameborder="0" 
+    scrolling="no"
+    width="135" 
+    height="135">
+</iframe>
+    </div>
+    
+    <div class="main">
+      <div class="breadcrump" style="font-size: 80%;">
+        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/development.html">Development</a>
+      </div>
+      <h1>Sling Testing Tools</h1>
+      <p>Sling provides a number of testing tools to support the following use cases:</p>
+<ul>
+<li>Run JUnit tests contributed by OSGi bundles in an OSGi system. This does not require Sling and should work in other OSGi  environments.</li>
+<li>Run scriptable tests in a Sling instance, using any supported scripting language.</li>
+<li>Run integration tests via HTTP against a Sling instance that is started during the Maven build cycle, or independently.</li>
+</ul>
+<p>This page describes those tools, and points to the bundles that implement them.</p>
+<p>The <a href="">testing/samples/integration-tests</a> module demonstrates these tools, and is also meant as a sample project to show how to run integration tests for Sling-based applications.</p>
+<p>The main Sling integration tests at <a href="">launchpad/integration-tests</a> were created before this testing framework, and do not use it yet (as of March 2011). The new testing tools are simpler to use, but the "old" tests (all 400 of them as I write this) fulfill their validation role for testing Sling itself, there's no real need to modify them to use the new tools.</p>
+<p>See also <a href="">SLINGxSITE:Testing Sling-based applications</a> which discusses testing in general.</p>
+<h1 id="server-side-junit-tests-contributed-by-bundles">Server-side JUnit tests contributed by bundles</h1>
+<p>The services provided by the <a href="">org.apache.sling.junit.core</a> bundle allow bundles to register JUnit tests, which are executed server-side by the JUnitServlet registered by default at <code>/system/sling/junit</code>. This bundle is not dependent on Sling, it should work in other OSGi environments.</p>
+<p>{warning:title=JUnit servlet security}
+Note that the JUnitServlet does not require authentication, so it would allow any client to run tests. The servlet can be disabled by configuration if needed, but in general the <code>/system</code> path should not be accessible to website visitors anyway.
+{warning}</p>
+<p>{note:title=SlingJUnitServlet}
+For tighter integration with Sling, the alternate <code>SlingJUnitServlet</code> is registered with the <code>sling/junit/testing</code> resource type and <code>.junit</code> selector, if the bundle is running in a Sling system. Using this servlet instead of the plain JUnitServlet also allows Sling authentication to be used for running the tests, and the standard Sling request processing is used, including servlet filters for example.
+{note}</p>
+<p>To try the JUnitServlet interactively, install the <a href="">org.apache.sling.testing.samples.sampletests</a> bundle.</p>
+<p>This bundle contains a number of test classes, which are registered with the <code>org.apache.sling.junit.core</code> services by way of the <code>Sling-Test-Regexp=.*Test</code> bundle header, defined in the bundle's <code>pom.xml</code>. The JUnit core services use this regular expression to select which classes of the test bundle should be executed as JUnit tests.</p>
+<p>To list the available tests, open http://localhost:8080/system/sling/junit/ . The servlet shows available tests, and allows you to execute them via a POST request.</p>
+<p>Adding a path allows you to select a specific subset of tests, as in http://localhost:8080/system/sling/junit/org.apache.sling.junit.remote.html - the example integration tests described below use this to selectively execute server-side tests. The JUnitServlet provides various output formats, including in particular JSON, see http://localhost:8080/system/sling/junit/.json for example.</p>
+<p>To supply tests from your own bundles, simply export the tests classes and add the <code>Sling-Test-Regexp</code> header to the bundle so that the Sling JUnit core services register them as tests.</p>
+<h3 id="injection-of-osgi-services">Injection of OSGi services</h3>
+<p>The <code>@TestReference</code> annotation is used to inject OSGi services in tests that are executed server side.The <code>BundleContext</code> can also be injected in this way, see the <a href="">OsgiAwareTest</a> for an example.</p>
+<h2 id="curl-examples">Curl examples</h2>
+<p>Here's an example executing a few tests using curl:</p>
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Running tests with curl</B></DIV><DIV class="codeContent panelContent">
+    $ curl -X POST http://localhost:8080/system/sling/junit/org.apache.sling.testing.samples.sampletests.JUnit.json
+    [{
+        "INFO_TYPE": "test",
+        "description": "testPasses(org.apache.sling.testing.samples.sampletests.JUnit3Test)"
+      },{
+        "INFO_TYPE": "test",
+        "description": "testPasses(org.apache.sling.testing.samples.sampletests.JUnit4Test)"
+      },{
+        "INFO_TYPE": "test",
+        "description": "testRequiresBefore(org.apache.sling.testing.samples.sampletests.JUnit4Test)"
+      }
+    ]</p>
+<p>And another example with a test that fails:
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Failing tests with curl</B></DIV><DIV class="codeContent panelContent">
+    $ curl -X POST http://localhost:8080/system/sling/junit/org.apache.sling.testing.samples.failingtests.JUnit4FailingTest.json
+    [continuous integration|SLINGxSITE:Project Information]</p>
+<h1 id="scriptable-server-side-tests">Scriptable server-side tests</h1>
+<p>If the <a href="">org.apache.sling.junit.scriptable</a> bundle is active in a Sling system, (in addition to the <code>org.apache.sling.junit.core</code> bundle), scriptable tests can be executed by the <code>JUnitServlet</code> according to the following rules:</p>
+<ul>
+<li>A node that has the <code>sling:Test</code> mixin is a scriptable test node.</li>
+<li>For security reasons, scriptable test nodes are only executed as tests if they are found under <code>/libs</code> or <code>/apps</code>, or more precisely under a path that's part of Sling's <code>ResourceResolver</code> search path.</li>
+<li>To execute a test, the scriptable tests provider makes an HTTP requests to the test node's path, with a <code>.test.txt</code> selector and extension, and expects the output to contain only the string <code>TEST_PASSED</code>. Empty lines and comment lines starting with a hash sign (#) are ignored in the output, and other lines are reported as failures.</li>
+</ul>
+<p>The <a href="">ScriptableTestsTest</a> class, from the integration test samples module described below, sets up such a test node and its accompanying script, and calls the JUnitServlet to execute the test. It can be used as a detailed example of how this works.</p>
+<h1 id="integration-tests-example">Integration tests example</h1>
+<p>The <a href="">testing/samples/integration-tests</a> module runs some simple integration tests against a Sling Launchpad instance that's setup from scratch before running the tests.</p>
+<p>This module's pom and Java code can be used as examples to setup your own integration testing modules for Sling-based apps - or for any other runnable jar that provides an http service.</p>
+<p>Besides serving as examples, some of the tests in this module are used to validate the testing tools. They run as part of the full Sling <a href="/project-information.html">continuous integration</a> build, so they're guaranteed to be correct examples if that build is successful.</p>
+<p>The sample uses the <a href="">testing/tools</a> to make the test code simpler. See the [OsgiConsoleTest|https://svn.apache.org/repos/asf/sling/trunk/testing/samples/integration-tests/src/test/java/org/apache/sling/testing/samples/integrationtests/http/OsgiConsoleTest.java] class for an example of a test that's very readable and requires no test setup or boilerplate code.</p>
+<p>The following steps are executed in the <code>integration-test</code> phase of this module's Maven  build:
+1. A random port number for the Sling server is selected by the Maven build helper plugin, unless explicitely set (see pom.xml for such options).
+1. Additional bundles, defined in the module's pom, are downloaded from the Maven repository in the <code>target/sling/additional-bundles</code> folder.
+1. The first test that inherits from the <a href="">SlingTestBase</a> class causes the Sling runnable jar (defined as a dependency in the module's pom) to be started. 
+1. # The <code>SlingTestBase</code> class waits for the Sling server to be ready, based on URLs and expected responses defined in the pom.
+1. # The <code>SlingTestBase</code> class installs and starts the bundles found in the <code>target/sling/additional-bundles</code> folder.
+1. The test can now either test Sling directly via its http interface, or use the JUnitServlet to execute server-side tests contributed by bundles or scripts, as described above.
+1. The Sling runnable jar is stopped when the test VM exits.
+1. The test results are reported via the usual Maven mechanisms.</p>
+<p>If <code>-DkeepJarRunning</code> is used on the Maven command line, the Sling runnable jar does not exit, to allow for running individual tests against this instance, for example when debugging the tests or the server code. See the pom for details.</p>
+<h1 id="remote-test-execution">Remote test execution</h1>
+<p>The testing tools support two types of remote test execution.</p>
+<h2 id="slingremotetestrunner">SlingRemoteTestRunner</h2>
+<p>The <a href="">SlingRemoteTestRunner</a> is used to run tests using the <code>JUnitServlet</code> described above. In this case, the client-side JUnit test only defines which tests to run and some optional assertions. Checking the number of tests executed, for example, can be useful to make sure all test bundles have been activated as expected, to avoid ignoring missing test bundles.</p>
+<p>See the <a href="">ServerSideSampleTest</a> class for an example.</p>
+<h2 id="slingremoteexecutionrule">SlingRemoteExecutionRule</h2>
+<p>The <a href="">SlingRemoteExecutionRule</a> is a JUnit Rule that allows tests to be executed remotely in a Sling instance from an IDE, assuming the test is available on both sides.</p>
+<p>The <a href="">ExampleRemoteTest</a> class demonstrates this. To run it from your IDE, set the <code>sling.remote.test.url</code> in the IDE to the URL of the JUnitServlet, like http://localhost:8080/system/sling/junit for example.</p>
+      <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+        Rev. 1341376 by fmeschbe on Tue, 22 May 2012 09:41:06 +0000
+      </div>
+      <div class="trademarkFooter"> 
+        Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project
+        logo are trademarks of The Apache Software Foundation. All other marks mentioned
+        may be trademarks or registered trademarks of their respective owners.
+      </div>
+    </div>
+  </body>
+</html>



Mime
View raw message