You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bu...@apache.org on 2012/05/22 11:41:27 UTC

svn commit: r818667 [1/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...

Author: buildbot
Date: Tue May 22 09:41:22 2012
New Revision: 818667

Log:
Staging update by buildbot for sling

Added:
    websites/staging/sling/trunk/content/documentation/
    websites/staging/sling/trunk/content/documentation/bundles/
    websites/staging/sling/trunk/content/documentation/bundles.html
    websites/staging/sling/trunk/content/documentation/bundles/accessing-filesystem-resources-extensions-fsresource.html
    websites/staging/sling/trunk/content/documentation/bundles/apache-sling-commons-thread-pool.html
    websites/staging/sling/trunk/content/documentation/bundles/apache-sling-eventing-and-job-handling.html
    websites/staging/sling/trunk/content/documentation/bundles/bundle-resources-extensions-bundleresource.html
    websites/staging/sling/trunk/content/documentation/bundles/commons-html-utilities.html
    websites/staging/sling/trunk/content/documentation/bundles/content-loading-jcr-contentloader.html
    websites/staging/sling/trunk/content/documentation/bundles/internationalization-support-i18n.html
    websites/staging/sling/trunk/content/documentation/bundles/jcr-installer-provider.html
    websites/staging/sling/trunk/content/documentation/bundles/managing-permissions-jackrabbit-accessmanager.html
    websites/staging/sling/trunk/content/documentation/bundles/managing-users-and-groups-jackrabbit-usermanager.html
    websites/staging/sling/trunk/content/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html
    websites/staging/sling/trunk/content/documentation/bundles/mime-type-support-commons-mime.html
    websites/staging/sling/trunk/content/documentation/bundles/osgi-installer.html
    websites/staging/sling/trunk/content/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.html
    websites/staging/sling/trunk/content/documentation/bundles/scheduler-service-commons-scheduler.html
    websites/staging/sling/trunk/content/documentation/bundles/sling-settings-org-apache-sling-settings.html
    websites/staging/sling/trunk/content/documentation/bundles/web-console-extensions.html
    websites/staging/sling/trunk/content/documentation/configuration.html
    websites/staging/sling/trunk/content/documentation/development/
    websites/staging/sling/trunk/content/documentation/development.html
    websites/staging/sling/trunk/content/documentation/development/client-request-logging.html
    websites/staging/sling/trunk/content/documentation/development/dependency-management.html
    websites/staging/sling/trunk/content/documentation/development/embedding-sling.html
    websites/staging/sling/trunk/content/documentation/development/getting-and-building-sling.html
    websites/staging/sling/trunk/content/documentation/development/issue-tracker.html
    websites/staging/sling/trunk/content/documentation/development/jspc.html
    websites/staging/sling/trunk/content/documentation/development/logging.html
    websites/staging/sling/trunk/content/documentation/development/maven-archetypes.html
    websites/staging/sling/trunk/content/documentation/development/maven-launchpad-plugin.html
    websites/staging/sling/trunk/content/documentation/development/maventipsandtricks.html
    websites/staging/sling/trunk/content/documentation/development/monitoring-requests.html
    websites/staging/sling/trunk/content/documentation/development/release-management.html
    websites/staging/sling/trunk/content/documentation/development/repository-based-development.html
    websites/staging/sling/trunk/content/documentation/development/sling-testing-tools.html
    websites/staging/sling/trunk/content/documentation/development/sling.html
    websites/staging/sling/trunk/content/documentation/development/version-policy.html
    websites/staging/sling/trunk/content/documentation/getting-started/
    websites/staging/sling/trunk/content/documentation/getting-started.html
    websites/staging/sling/trunk/content/documentation/getting-started/discover-sling-in-15-minutes.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/
    websites/staging/sling/trunk/content/documentation/the-sling-engine.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/adapters.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/architecture.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication.png   (with props)
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/authentication-actors.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/authentication-authenticationhandler/
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/authentication-authenticationhandler.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/authentication-authenticationhandler/form-based-authenticationhandler.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/authentication-authenticationhandler/openid-authenticationhandler.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/authentication-framework.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/authentication/authentication-tasks.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/default-mapping-and-rendering.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/dispatching-requests.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/errorhandling.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/eventing-and-jobs.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/filters.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/mappings-for-resource-resolution.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/request-listeners.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/request-parameters.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/resources.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/servlets.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/sling-properties.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/the-sling-launchpad.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/url-decomposition.html
    websites/staging/sling/trunk/content/documentation/the-sling-engine/wrap-or-decorate-resources.html
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos/
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos.html
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos/46-line-blog.html
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos/getting-resources-and-properties-in-sling.html
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos/how-to-manage-events-in-sling.html
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos/installing-and-upgrading-bundles.html
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos/jackrabbit-persistence.html
    websites/staging/sling/trunk/content/documentation/tutorials-how-tos/testing-sling-based-applications.html
    websites/staging/sling/trunk/content/old-stuff/
    websites/staging/sling/trunk/content/old-stuff/assembly.html
    websites/staging/sling/trunk/content/old-stuff/launch-sling.html
    websites/staging/sling/trunk/content/old-stuff/request-processing.html
    websites/staging/sling/trunk/content/old-stuff/run-modes-org-apache-sling-runmode.html
    websites/staging/sling/trunk/content/old-stuff/scriptengineintegration/
    websites/staging/sling/trunk/content/old-stuff/scriptengineintegration.html
    websites/staging/sling/trunk/content/old-stuff/scriptengineintegration/groovy-support.html
    websites/staging/sling/trunk/content/old-stuff/scriptengineintegration/xslt-processing-pipeline.html
    websites/staging/sling/trunk/content/old-stuff/servlet-resolution.html
    websites/staging/sling/trunk/content/old-stuff/sling-api.html
    websites/staging/sling/trunk/content/project-information/
    websites/staging/sling/trunk/content/project-information/apache-sling-community-roles-and-processes.html
    websites/staging/sling/trunk/content/project-information/project-license.html
    websites/staging/sling/trunk/content/project-information/project-team.html
    websites/staging/sling/trunk/content/project-information/security.html
Removed:
    websites/staging/sling/trunk/content/accessing-filesystem-resources-extensions-fsresource.html
    websites/staging/sling/trunk/content/adapters.html
    websites/staging/sling/trunk/content/apache-sling-commons-thread-pool.html
    websites/staging/sling/trunk/content/apache-sling-community-roles-and-processes.html
    websites/staging/sling/trunk/content/apache-sling-eventing-and-job-handling.html
    websites/staging/sling/trunk/content/architecture.html
    websites/staging/sling/trunk/content/assembly.html
    websites/staging/sling/trunk/content/authentication/
    websites/staging/sling/trunk/content/authentication.html
    websites/staging/sling/trunk/content/authentication.png
    websites/staging/sling/trunk/content/bundle-resources-extensions-bundleresource.html
    websites/staging/sling/trunk/content/bundles.html
    websites/staging/sling/trunk/content/client-request-logging.html
    websites/staging/sling/trunk/content/commons-html-utilities.html
    websites/staging/sling/trunk/content/configuration.html
    websites/staging/sling/trunk/content/content-loading-jcr-contentloader.html
    websites/staging/sling/trunk/content/default-mapping-and-rendering.html
    websites/staging/sling/trunk/content/dependency-management.html
    websites/staging/sling/trunk/content/development.html
    websites/staging/sling/trunk/content/discover-sling-in-15-minutes.html
    websites/staging/sling/trunk/content/dispatching-requests.html
    websites/staging/sling/trunk/content/embedding-sling.html
    websites/staging/sling/trunk/content/errorhandling.html
    websites/staging/sling/trunk/content/eventing-and-jobs.html
    websites/staging/sling/trunk/content/filters.html
    websites/staging/sling/trunk/content/form-based-authenticationhandler.html
    websites/staging/sling/trunk/content/getting-and-building-sling.html
    websites/staging/sling/trunk/content/getting-started.html
    websites/staging/sling/trunk/content/groovy-support.html
    websites/staging/sling/trunk/content/internationalization-support-i18n.html
    websites/staging/sling/trunk/content/issue-tracker.html
    websites/staging/sling/trunk/content/jcr-installer-provider.html
    websites/staging/sling/trunk/content/jspc.html
    websites/staging/sling/trunk/content/launch-sling.html
    websites/staging/sling/trunk/content/logging.html
    websites/staging/sling/trunk/content/managing-permissions-jackrabbit-accessmanager.html
    websites/staging/sling/trunk/content/managing-users-and-groups-jackrabbit-usermanager.html
    websites/staging/sling/trunk/content/manipulating-content-the-slingpostservlet-servlets-post.html
    websites/staging/sling/trunk/content/mappings-for-resource-resolution.html
    websites/staging/sling/trunk/content/maven-archetypes.html
    websites/staging/sling/trunk/content/maven-launchpad-plugin.html
    websites/staging/sling/trunk/content/maventipsandtricks.html
    websites/staging/sling/trunk/content/mime-type-support-commons-mime.html
    websites/staging/sling/trunk/content/monitoring-requests.html
    websites/staging/sling/trunk/content/openid-authenticationhandler.html
    websites/staging/sling/trunk/content/osgi-installer.html
    websites/staging/sling/trunk/content/output-rewriting-pipelines-org-apache-sling-rewriter.html
    websites/staging/sling/trunk/content/project-license.html
    websites/staging/sling/trunk/content/project-team.html
    websites/staging/sling/trunk/content/release-management.html
    websites/staging/sling/trunk/content/repository-based-development.html
    websites/staging/sling/trunk/content/request-listeners.html
    websites/staging/sling/trunk/content/request-parameters.html
    websites/staging/sling/trunk/content/request-processing.html
    websites/staging/sling/trunk/content/resources.html
    websites/staging/sling/trunk/content/run-modes-org-apache-sling-runmode.html
    websites/staging/sling/trunk/content/scheduler-service-commons-scheduler.html
    websites/staging/sling/trunk/content/scriptengineintegration.html
    websites/staging/sling/trunk/content/security.html
    websites/staging/sling/trunk/content/servlet-resolution.html
    websites/staging/sling/trunk/content/servlets.html
    websites/staging/sling/trunk/content/sling-api.html
    websites/staging/sling/trunk/content/sling-settings-org-apache-sling-settings.html
    websites/staging/sling/trunk/content/sling-testing-tools.html
    websites/staging/sling/trunk/content/sling.html
    websites/staging/sling/trunk/content/the-sling-engine/
    websites/staging/sling/trunk/content/the-sling-engine.html
    websites/staging/sling/trunk/content/the-sling-launchpad.html
    websites/staging/sling/trunk/content/tutorials-how-tos/
    websites/staging/sling/trunk/content/tutorials-how-tos.html
    websites/staging/sling/trunk/content/url-decomposition.html
    websites/staging/sling/trunk/content/version-policy.html
    websites/staging/sling/trunk/content/web-console-extensions.html
    websites/staging/sling/trunk/content/wrap-or-decorate-resources.html
    websites/staging/sling/trunk/content/xslt-processing-pipeline.html
Modified:
    websites/staging/sling/trunk/content/   (props changed)
    websites/staging/sling/trunk/content/documentation.html
    websites/staging/sling/trunk/content/downloads.html
    websites/staging/sling/trunk/content/guides.html
    websites/staging/sling/trunk/content/old-stuff.html
    websites/staging/sling/trunk/content/project-information.html
    websites/staging/sling/trunk/content/sitemap.html

Propchange: websites/staging/sling/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue May 22 09:41:22 2012
@@ -1 +1 @@
-1341361
+1341376

Modified: websites/staging/sling/trunk/content/documentation.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation.html (original)
+++ websites/staging/sling/trunk/content/documentation.html Tue May 22 09:41:22 2012
@@ -84,13 +84,13 @@
       <h1>Documentation</h1>
       <p>The documentation is split into different parts:</p>
 <ul>
-<li><a href="/getting-started.html">Getting Started</a>, the right place to start!</li>
-<li><a href="/the-sling-engine.html">The Sling Engine</a>, all about the heart of Sling</li>
-<li><a href="/development.html">Development</a>, how do I get and develop with Sling</li>
-<li><a href="/bundles.html">Bundles</a>, which bundle delivers which features to Sling</li>
-<li><a href="/tutorials-how-tos.html">Tutorials &amp; How-Tos</a></li>
+<li><a href="/documentation/getting-started.html">Getting Started</a>, the right place to start!</li>
+<li><a href="/documentation/the-sling-engine.html">The Sling Engine</a>, all about the heart of Sling</li>
+<li><a href="/documentation/development.html">Development</a>, how do I get and develop with Sling</li>
+<li><a href="/documentation/bundles.html">Bundles</a>, which bundle delivers which features to Sling</li>
+<li><a href="/documentation/tutorials-how-tos.html">Tutorials &amp; How-Tos</a></li>
 <li><a href="">Wiki</a></li>
-<li><a href="/configuration.html">Configuration</a></li>
+<li><a href="/documentation/configuration.html">Configuration</a></li>
 <li><a href="">API Doc</a></li>
 </ul>
 <h2 id="how-can-you-contribute">How can you contribute</h2>

Added: websites/staging/sling/trunk/content/documentation/bundles.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles.html Tue May 22 09:41:22 2012
@@ -0,0 +1,126 @@
+<!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 - Bundles</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>
+      </div>
+      <h1>Bundles</h1>
+      <h2 id="content">Content</h2>
+<ul>
+<li><a href="/documentation/bundles/content-loading-jcr-contentloader.html">Content Loading (jcr.contentloader)</a></li>
+<li><a href="/documentation/bundles/internationalization-support-i18n.html">Internationalization Support (i18n)</a></li>
+<li><a href="/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html">Manipulating Content - The SlingPostServlet (servlets.post)</a></li>
+</ul>
+<h2 id="resource-providers">Resource Providers</h2>
+<ul>
+<li><a href="/documentation/bundles/accessing-filesystem-resources-extensions-fsresource.html">Accessing Filesystem Resources (extensions.fsresource)</a></li>
+<li><a href="/documentation/bundles/bundle-resources-extensions-bundleresource.html">Bundle Resources (extensions.bundleresource)</a></li>
+</ul>
+<h2 id="users-groups-access-permissions">Users, Groups, Access, Permissions</h2>
+<ul>
+<li><a href="/documentation/bundles/managing-users-and-groups-jackrabbit-usermanager.html">Managing users and groups (jackrabbit.usermanager)</a></li>
+<li><a href="/documentation/bundles/managing-permissions-jackrabbit-accessmanager.html">Managing permissions (jackrabbit.accessmanager)</a></li>
+</ul>
+<h2 id="installer">Installer</h2>
+<ul>
+<li><a href="/documentation/bundles/osgi-installer.html">OSGi Installer</a></li>
+<li><a href="/documentation/bundles/jcr-installer-provider.html">JCR Installer Provider</a></li>
+</ul>
+<h2 id="misc">Misc</h2>
+<ul>
+<li><a href="">Commons Thread Pools</a></li>
+<li><a href="/documentation/bundles/commons-html-utilities.html">Commons HTML Utilities</a></li>
+<li><a href="/documentation/bundles/mime-type-support-commons-mime.html">MIME Type Support (commons.mime)</a></li>
+<li><a href="/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.html">Output Rewriting Pipelines (org.apache.sling.rewriter)</a></li>
+<li><a href="/documentation/bundles/sling-settings-org-apache-sling-settings.html">Sling Settings (org.apache.sling.settings)</a></li>
+<li><a href="/documentation/bundles/scheduler-service-commons-scheduler.html">Scheduler Service (commons scheduler)</a></li>
+<li><a href="/documentation/bundles/web-console-extensions.html">Web Console Extensions (org.apache.sling.extensions.webconsolebranding, org.apache.sling.extensions.webconsolesecurityprovider)</a></li>
+</ul>
+      <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/bundles/accessing-filesystem-resources-extensions-fsresource.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/accessing-filesystem-resources-extensions-fsresource.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/accessing-filesystem-resources-extensions-fsresource.html Tue May 22 09:41:22 2012
@@ -0,0 +1,124 @@
+<!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 - Accessing Filesystem Resources (extensions.fsresource)</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/bundles.html">Bundles</a>
+      </div>
+      <h1>Accessing Filesystem Resources (extensions.fsresource)</h1>
+      <div class="toc">
+<ul>
+<li><a href="#introduction">Introduction</a></li>
+<li><a href="#resource-types">Resource Types</a></li>
+<li><a href="#adapters">Adapters</a></li>
+<li><a href="#configuration">Configuration</a></li>
+</ul>
+</div>
+<h2 id="introduction">Introduction</h2>
+<p>The Filesystem Resource Provider provides access to the operating system's filesystem through the Sling <code>ResourceResolver</code>. Multiple locations may be mapped into the resource tree by configuring the filesystem location and the resource tree root path for each location to be mapped.</p>
+<h2 id="resource-types">Resource Types</h2>
+<p>Files and directories are mapped into the resource tree as regular <code>Resource</code> instances whose resource type depends on the actual nature of the mapped filesystem resource:</p>
+<ul>
+<li>Regular files are assigned the <code>nt:file</code> resource type</li>
+<li>Directories are assigned the <code>nt:folder</code> resource type</li>
+</ul>
+<h2 id="adapters">Adapters</h2>
+<p>Filesystem resources extend from Sling's <code>AbstractResource</code> class and thus are adaptable to any type for which an <code>AdapterFactory</code> is registered supporting file system resources. In addition Filesystem Resources support the following adapters natively:</p>
+<ul>
+<li><code>java.io.File</code> -- The Java file object providing access to the filesystem file</li>
+<li><code>java.net.URL</code> -- A valid <code>file://</code> URL to the file. This URL is derived from the <code>java.io.File</code> object by calling the <code>File.toURI().toURL()</code> sequence.</li>
+<li><code>java.io.InputStream</code> -- If the <code>java.io.File</code> can be read from (as per <code>File.canRead()</code> an <code>InputStream</code> to read from the file is returned.</li>
+</ul>
+<h2 id="configuration">Configuration</h2>
+<p>The Filesystem Resource Provider is configured with OSGi Configuration Admin factory configurtions whose factory PID is <code>org.apache.sling.fsprovider.internal.FsResourceProvider</code>. Configuration can be managed using the OSGi Configuration Admin API, through the Web Console or by any other means supporting Configuration Admin configurations.</p>
+<p>The following configuration properties must be specified:</p>
+<p>| Parameter | Name | Description |
+| Provider Root | <code>provider.roots</code> | Location in the virtual resource tree where the filesystem resources are mapped in. This property must not be an empty string. |
+| Filesystem Root | <code>provider.file</code> | Filesystem directory mapped to the virtual resource tree. This property must not be an empty string. If the path is relative it is resolved against <code>sling.home</code> or the current working directory. The path may be a file or folder. If the path does not address an existing file or folder, an empty folder is created. |</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/bundles/apache-sling-commons-thread-pool.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/apache-sling-commons-thread-pool.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/apache-sling-commons-thread-pool.html Tue May 22 09:41:22 2012
@@ -0,0 +1,99 @@
+<!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 - Apache Sling Commons Thread Pool</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/bundles.html">Bundles</a>
+      </div>
+      <h1>Apache Sling Commons Thread Pool</h1>
+      <p>The Apache Sling Commons Thread Pool bundle provides a thread pool services. All thread pools are managed by the <em>{nl:org.apache.sling.commons.threads.ThreadPoolManager}</em>. This service can be used to get a thread pool.</p>
+<p>Thread pools are managed by name - there is a default thread pool and custom thread pools can be generated on demand using a unique name.</p>
+<p>The thread pools are actually wrappers around the thread pool support (executer) from the Java library. The advantage of using this thread pool service is, that the pools can be configured and managed through OSGi configurations. In addition the bundle contains a plugin for the Apache Felix Web Console.</p>
+<p>When using the {nl:ThreadPoolMananger} it is important to release a thread pool using the manager after it has been used.</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/bundles/apache-sling-eventing-and-job-handling.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/apache-sling-eventing-and-job-handling.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/apache-sling-eventing-and-job-handling.html Tue May 22 09:41:22 2012
@@ -0,0 +1,254 @@
+<!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 - Apache Sling Eventing and Job Handling</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/bundles.html">Bundles</a>
+      </div>
+      <h1>Apache Sling Eventing and Job Handling</h1>
+      <p><em>NOTE: This documentation is work in progress!</em></p>
+<h2 id="overview">Overview</h2>
+<p>The Apache Sling Event Support bundle provides interesting services for advanced event handling and job processing. While this bundle leverages the OSGi EventAdmin, it provides a very powerful support for so called jobs: a job is a task which has to be performed by a component - the Sling job handling ensures that exactly one component performs this task.</p>
+<p>To get some hands on code, you can refer to the following tutorials:
+<em> <a href="/documentation/tutorials-how-tos/how-to-manage-events-in-sling.html">How to Manage Events in Sling</a>
+</em> <a href="/documentation/bundles/scheduler-service-commons-scheduler.html">Scheduler Service (commons scheduler)</a></p>
+<p>The Sling Event Supports adds the following services:
+<em> <a href="">Jobs</a>
+</em> <a href="">Distributed Events</a>
+* <a href="">Scheduled Events</a></p>
+<p>{anchor:jobs}</p>
+<h2 id="jobs-guarantee-of-processing">Jobs (Guarantee of Processing)</h2>
+<p>In general, the eventing mechanism (OSGi EventAdmin) has no knowledge about the contents of an event. Therefore, it can't decide if an event is important and should be processed by someone. As the event mechanism is a "fire event and forget about it" algorithm, there is no way for an event admin to tell if someone has really processed the event. Processing of an event could fail, the server or bundle could be stopped etc.</p>
+<p>On the other hand, there are use cases where the guarantee of processing a job is a must and usually this comes with the requirement of processing this job exactly once. Typical examples are sending notification emails (or sms) or post processing of content (like thumbnail generation of images or documents).</p>
+<p>The Sling Event Support adds the notion of a job to the OSGi EventAdmin. A job is a special OSGi event that someone has to process (do the job). The job event has a special topic <em>org/apache/sling/event/job</em> to indicate that the event contains a job. These job events are consumed by the Sling Job Handler - it ensures that someone does the job! To support different jobs and different processors of such jobs, the real topic of the event is stored in the <em>event.job.topic</em> property of the original event. When a job event (event with the topic <em>org/apache/sling/event/job</em>) is received, a new event with the topic from the property <em>event.job.topic</em> is fired (Firing this event comes of course with a set of rules and constraints explained below).</p>
+<p>In order to distinguish a job which occured twice and a job which is generated "at the same time" on several nodes, each job can be uniquely identified by its topic (property <em>event.job.topic</em>) and an optional job name, the <em>event.job.id</em> property. It is up to the client creating the event to ensure that the <em>event.job.id</em> property is unqiue <em>and</em> identical on all application nodes. If the job name is not provided for the job, then it is up to the client to ensure that the job event is only fired once. Usually for jobs generated based on user interaction, a unique job name is not required as the job is only created through the user interaction.</p>
+<h3 id="job-processors">Job Processors</h3>
+<p>A job processor is a service consuming and processing a job. It listens for OSGi events with the job topic. The OSGi EventAdmin usually comes with a timeout for event handlers. An event handler must consume an OSGi event as fast as possible otherwise the handler might get a timeout and get blacklisted. Therefore a job processor should never directly process the job in the event handler method, but do this async.</p>
+<p>In addition the Sling Job Handler needs to get notified if someone is processing a job and when someone has finished processing this job.</p>
+<p>To make implementing such a job processor easier, there is the <em>JobUtil</em> utility class along with the <em>JobProcessor</em> interface. The <em>JobUtil</em> class has a helper method for this: <em>processJob(Event, JobProcessor)</em>. The job processor must implement the <em>JobProcessor</em> interface which consists of a single <em>process(Event)</em> method. When the event handler receives a job event through the OSGi EventAdmin, it calls <em>JobUtil.processJob(event, this)</em> and returns. This utility method takes care to notify the Sling Job Handler that someone is processing the job. Then the <em>process(Event)</em> method of the job processor is called in the background and when it returns, the Sling Job Handler is notified that the job is completed (or processing failed).</p>
+<p>If the job processor wants to do the background processing by itself or does not need background processing at all, it must signal starting and completition of the job by call <em>JobUtil.acknowledgeJob(Event), </em>JobUtil.finishedJob(event)<em> or </em>JobUtil.rescheduleJob(Event).</p>
+<h3 id="processing-of-jobs">Processing of Jobs</h3>
+<p>Incoming jobs are first persisted in the repository (for failover etc.) and then a job is put into a processing queue. There are different types of queues defining how the jobs are processed (one after the other, in parallel etc.).</p>
+<p>For managing queues, the Sling Job Handler uses the OSGi ConfigAdmin - it is possible to configure one or more queue configurations through the ConfigAdmin. One way of creating and configuring such configurations is the Apache Felix WebConsole.</p>
+<h4 id="queue-configurations">Queue Configurations</h4>
+<p>A queue configuration can have the following properties:</p>
+<p>| <em>Property Name</em>     | <em>Description</em> |
+| <em>queue.name</em>       | The name of the queue. If matching is used for topics, the value {0} can be used for replacing the matched part. |
+| <em>queue.type</em>       | The type of the queue: ORDERED, UNORDERED, TOPIC<em>ROUND</em>ROBIN, IGNORE, DROP |
+| <em>queue.topics</em>       | A list of topics processed by this queue. Either the concrete topic is specified or the topic string ends with /<em> or /. If a star is at the end all topics and sub topics match, with a dot only direct sub topics match. |
+| </em>queue.maxparallel<em>       | How many jobs can be processed in parallel? -1 for number of processors.|
+| </em>queue.retries<em>       | How often should the job be retried. -1 for endless retries. |
+| </em>queue.retrydelay<em>       | The waiting time in milliseconds between job retries. |
+| </em>queue.priority<em>       | The thread priority: NORM, MIN, or MAX |
+| </em>queue.runlocal<em>       | Should the jobs only be processed on the cluster node they have been created? |
+| </em>queue.applicationids<em>       | Optional list of application (cluster node) ids. If configured, these jobs are only processed on this application node.|
+| </em>service.ranking* | A ranking for this configuration.|</p>
+<p>The configurations are processed in order of their service ranking. The first matching queue configuration is used for the job.</p>
+<h4 id="ordered-queues">Ordered Queues</h4>
+<p>An ordered queue processes one job after the other.</p>
+<h4 id="unordered-queues">Unordered Queues</h4>
+<p>Unordered queues process jobs in parallel.</p>
+<h4 id="topic-round-robin-queues">Topic-Round-Robin Queues</h4>
+<p>The jobs are processed in parallel. Scheduling of the jobs is based on the topic of the jobs. These are started by doing round-robin on the available topics.</p>
+<h4 id="ignoring-queues">Ignoring Queues</h4>
+<p>A queue of type <em>ignoring</em> ignores this job. The job is persisted but not processed. This can be used to delay processing of some jobs. With a changed configuration and a restart of the Sling Job Handler the ignored jobs can be processed at a later time.</p>
+<h4 id="dropping-queues">Dropping Queues</h4>
+<p>A queue of type <em>drop</em> is dropping a job - which means it is not processed at all and directly discarded.</p>
+<h3 id="persistence">Persistence</h3>
+<p>The job event handler listens for all job events (all events with the topic <em>org/apache/sling/event/job</em>) and will as a first step persist those events in the JCR repository. All job events are stored in a tree under the job root node <em>/var/eventing/jobs</em>. Persisting the job ensures proper handling in a clustered environment and allows failover handling after a bundle stop or server restart. Once a job has been processed by someone, the job will be removed from the repository.</p>
+<p>When the job event listener tries to write a job into the repository it will check if the repository already contains a job with the given topic <em>event.job.topic</em> and job name (property <em>event.job.id</em>). If the event has already been written by some other application node, it's not written again.</p>
+<p>Each job is stored as a separate node with the following properties:
+| <em>Property Name</em>     | <em>Description</em> |
+| <em>event:topic</em>       | The topic of the job |
+| <em>event:id</em>          | The unique identifier of this job (optional).
+| <em>event:created</em>     | The date and time when the event has been created (stored in the repository)
+| <em>event:application</em> | The identifier of the node where the job was created |
+| <em>event:properties</em>  | Serialized properties |
+| <em>event:finished</em>    | The date and time when the job has been finished |
+| <em>event:processor</em>   | The identifier of the node which processed the job (after successful processing) |</p>
+<p>The failover of an application node is accomplished by locking. If a job is locked in the repository a session scoped lock is used. If this application node dies, the lock dies as well. Each application node observes the JCR locking properties and therefore gets aware of unlocked event nodes with the active flag set to true. If an application node finds such a node, it locks it, updates the <em>event:application</em> information and processes it accordingly. In this case the event gets the additional property <em>org/apache/sling/job/retry</em>. </p>
+<p>Each application is periodically removing old jobs from the repository (using the scheduler).</p>
+<h3 id="distribution-of-jobs">Distribution of Jobs</h3>
+<p>A job event is an event like any other. Therefore it is up to the client generating the event to decide if the event should be distributed. If the event is distributed, it will be distributed with a set <em>event.application</em> on the remote nodes. If the job event handler receives a job with the <em>event.application</em> property set, it will not try to write it into the repository. It will just broadcast this event asynchronously as a ~FYI event.</p>
+<p>If a job event is created simultanously on all application nodes, the event will not be distributed. The application node that actually has the lock on the stored job in the repository will clear the <em>event.application</em> when sending the event locally. All other application nodes will use the <em>event.application</em> stored in the repository when broadcasting the event locally.</p>
+<h2 id="usage-patterns">Usage Patterns</h2>
+<p>Based on some usage patterns, we discuss the functionality of the eventing mechanism.</p>
+<h3 id="sending-user-generated-events">Sending User Generated Events</h3>
+<p>If a user action results in an event, the event is only created on one single node in the cluster. The event object is generated and delivered to the OSGi event admin. If the <em>event.distribute</em> is not explicitly set, the event is only distributed localled.</p>
+<p>If the <em>event.distribute</em> is the, the cluster event handler will write the event into the repository. All nodes in the cluster observe the repository area where all events are stored. If a new event is written into that area, each application node will get notified. It will create the event based on the information in the repository, clear the <em>event.distribute</em> and publish the event.</p>
+<p>The flow can be described as follows:
+1. Client code generates event using OSGi API, if the <em>event.distribute</em> should be set, it is using the ~EventUtil.
+1. Client code sends the event to the (local) event admin.
+1. Event admin delivers the event locally.
+1. Clustering event handler receives the event if <em>event.distribute</em> is present
+1. # Event handler adds <em>event.application</em> and writes the event to the repository
+1. # Remote repository observers get notified through JCR observation about the new event. They distribute the event locally with the <em>event.application</em> (from the node where the event occured first) and cleared <em>event.distribute</em>.</p>
+<h3 id="processing-jcr-events">Processing JCR Events</h3>
+<p>JCR events are environment generated events and therefore are sent by the repository to each node in the cluster. In general, it is advisable to not built the application on the low level repository events but to use application events. Therefore the observer of the JCR event should create an OSGi event based on the changes in the repository. A decision has to be made if the event should be a job or a plain event.</p>
+<p>The flow can be described as follows:
+1. Client registers for JCR observation
+1. JCR notifies the client for changes
+1. Client generates OSGi event based on the JCR events (the <em>event.distribute</em> will not be set), it decides if it sends this event as a job.
+1. Client code sends the event to the (local) event admin
+1. Event admin publishes the event locally
+1. The distribution event handler does not set see the event as the <em>event.distribute</em> is not set.
+1. The job event handler gets the event if it has the job topic
+1. # The job event handler adds the <em>event.application</em> property and tries to write the job to the repository
+1. ## If no job with the topic and <em>id</em> property is in the repository, the event will be written and locked.
+1. ## If an event with the topic and <em>id</em> property is in the repository then:
+1. ### If the <em>event.application</em> equals the current application node, the event is set to active (<em>event:active</em>) in the repository again and locked
+1. ### If the <em>event.application</em> does not equal the current application node, the event is not distributed locally.
+1. ## If the job could be locked in the repository, the job event handler delivers the job locally and synchronously and it unlocks the job and sets <em>event:active</em> to false afterwards.</p>
+<h3 id="sending-scheduled-events">Sending Scheduled Events</h3>
+<p>Scheduled events are OSGi events that have been created by the environemnt. They are generated on each application node of the cluster through an own scheduler instance. Sending these events works the same as sending events based on JCR events (see above).</p>
+<p>In most use cases a scheduler will send job events to ensure that exactly one application node is processing the event.</p>
+<h3 id="receiving-osgi-events">Receiving OSGi Events</h3>
+<p>If you want to receive OSGi events, you can just follow the specification: receive it via a custom event handler which is registered on bundle start - a filter can be specified as a configuration property of the handler. </p>
+<p>As we follow the principle of distributing each event to every registered handler, the handler has to decide if it will process the event. In order to avoid multiple processing of this event in a clustered environment, the event handler should check the <em>event.application</em> property. If it is not set, it's a local event and the handler should process the event. If the <em>event.application</em> is set, it's a remote event and the handler should not process the event. This is a general rule of thumb - however, it's up to the handler to make its decision either on <em>event.application</em> or any other information.</p>
+<p>It is advisable to perform the local event check even in a non clustered environment as it makes the migration to a cluster later on much easier and there is nearly no performance overhead caused by the check.</p>
+<p>The ~EventUtil class provides an utility method <em>isLocalEvent(Event)</em> which checks the existance of the <em>event.application</em> property and returns <em>true</em> if it is absend.</p>
+<p>{anchor:distributed}</p>
+<h2 id="distributed-events">Distributed Events</h2>
+<p>In addition to the job handling, the Sling Event support adds handling for distributed events. A distributed event is an OSGi event which is sent across JVM boundaries to a different VM. A potential use case is to broadcast information in a clustered environment.</p>
+<h3 id="sources-of-events">Sources of Events</h3>
+<p>When it comes to application based on Sling, there is a variety of sources from which OSGi events can be send:
+<em> JCR observation events
+</em> Application generated events
+<em> Events from messaging systems (~JMS)
+</em> "External events"</p>
+<p>The events can eiter be generated inside a current user context, e.g. when the user performs an action through the UI, or they can be out of a user context, e.g. for schedulded events. This leads to different weights of events.</p>
+<h3 id="weights-of-events">Weights of Events</h3>
+<p>We can distinguish two different weights of events, depending how they are distributed in a clustered environment:</p>
+<ul>
+<li>User generated events - these events are generated directly by some user action and are therefore started on one single node.</li>
+<li>Environment generated events (JCR events, scheduler events etc.) - these events are generated "simultanously" on all nodes.</li>
+</ul>
+<p>External events, like incoming JMS events etc. might fall either into the first or the second category. The receiver of such events must have the knowledge about the weight of the event.</p>
+<h3 id="basic-principles">Basic Principles</h3>
+<p>The foundation of the distributed event mechanism is to distribute each event to every node in a clustered environment. The event distribution mechanism has no knowledge about the intent of the event and therefore is not able to make delivery decisions by itself. It is up to the sender to decide what should happen, however the sender must explicitly declare an event to be distributed. There are exceptions to "distributing everything to everywhere" as for example framework related events (bundle stopped, installed etc.) should not be distributed.</p>
+<p>The event mechanism will provide additional functionality making it easier for event receivers to decide if they should process an event. The event receiver can determine if the event is a local event or comming from a remote application node. Therefore a general rule of thumb is to process events only if they're local and just regard remote events as a FYI.</p>
+<p>The event mechanism is an <em>event</em> mechanism which should not be confused with a <em>messaging</em> mechanism. Events are received by the event mechanism and distributed to registered listeners. Concepts like durable listeners, guarantee of processing etc. are not part of the event mechanism itself. However, there is additional support for such things, like job handling.</p>
+<p>The application should try to use application events instead of low level JCR events whereever possible. Therefore a bridging between JCR events and the event mechanism is required. However, a general "automatic" mapping will not be provided. It is up to the application to develop such a mapping on a per use case base. There might be some support to make the mapping easier.</p>
+<p>The event handling should be made as transparent to the developer as possible. Therefore the additional code for a developer to make the eventing working in a clustered environment etc. should be kept to a minimum (which will hopefully reduce possible user errors).</p>
+<h3 id="distributed-events_1">Distributed Events</h3>
+<p>For distributed events two properties are defined (check the <em>EventUtil</em> class):
+<em> </em>event.distribute<em> - this flag is set by the sender of an event to give a hint if the event should be distributed across instances. For example JCR observation based events are already distributed on all instances, so there is no further need to distribute them. If the flag is present, the event will be distributed. The value has currently no meaning, however the EventUtil method should be used to add this property. If the flag is absent the event is distributed locally only.
+</em> <em>event.application</em> - An identifier for the current application node in the cluster. This information will be used to detect if an event has been created on different nodes. If the event has been created on the same node, the <em>event.application</em> is missing, if it is a remote event, the <em>event.application</em> contains the ID of the node, the event has been initially created. Use the <em>EventUtil.isLocal(Event)</em> method to detect if the event is a local or a distributed event.</p>
+<p>While the <em>event.distribute</em> must be set by the sender of an event (if the event should be distributed), the <em>event.application</em> property is maintained by the event mechanism. Therefore a client sending an event should <em>never</em> set this information by itself. This will confuse the local event handlers and result in unexpected behaviour. On remote events the <em>event.application</em> is set by the event distribution mechanism.</p>
+<h3 id="event-distribution-across-application-nodes-cluster">Event Distribution Across Application Nodes (Cluster)</h3>
+<p>The (local) event admin is the service distributing events locally. The Sling Distributing Event Handler is a registered event handler that is listening for events to be distributed. It distributes the events to remote application notes, the JCR repository is used for distribution. The distributing event handler writes the events into the repository, the distributing event handlers on other application nodes get notified through observation and then distribute the read events locally.</p>
+<p>As mentioned above, the client sending an event has to mark an event to be distributed in a cluster by setting the <em>event.distribute</em> in the event properties (through <em>EventUtil</em>). This distribution mechanism has the advantage that the application nodes do not need to know each other and the distribution mechanism is independent from the used event admin implementation.</p>
+<h3 id="storing-events-in-the-repository">Storing Events in the Repository</h3>
+<p>Distributable events are stored in the repository, the repository will have a specific area (path) where all events are stored. </p>
+<p>Each event is stored as a separate node with the following properties:
+| <em>Property Name</em>     | <em>Description</em> |
+| <em>event:topic</em>       | The topic of the event |
+| <em>event:application</em> | The identifier of the application node where the event was created |
+| <em>event:created</em>     | The date and time when the event has been created (stored in the repository)
+| <em>event:properties</em>  | Serialized properties (except the <em>event.distribute</em>, but including the <em>event.application</em>) |</p>
+<p>Each application is periodically removing old events from the repository (using the scheduler).</p>
+<p>{anchor:timed}</p>
+<h3 id="sending-scheduled-events_1">Sending Scheduled Events</h3>
+<p>Scheduled events are OSGi events that have been created by the environemnt. They are generated on each application node of the cluster through an own scheduler instance. Sending these events works the same as sending events based on JCR events (see above).</p>
+<p>In most use cases a scheduler will send job events to ensure that exactly one application node is processing the event.</p>
+<h3 id="receiving-osgi-events_1">Receiving OSGi Events</h3>
+<p>If you want to receive OSGi events, you can just follow the specification: receive it via a custom event handler which is registered on bundle start - a filter can be specified as a configuration property of the handler. </p>
+<p>As we follow the principle of distributing each event to every registered handler, the handler has to decide if it will process the event. In order to avoid multiple processing of this event in a clustered environment, the event handler should check the <em>event.application</em> property. If it is not set, it's a local event and the handler should process the event. If the <em>event.application</em> is set, it's a remote event and the handler should not process the event. This is a general rule of thumb - however, it's up to the handler to make its decision either on <em>event.application</em> or any other information.</p>
+<p>It is advisable to perform the local event check even in a non clustered environment as it makes the migration to a cluster later on much easier and there is nearly no performance overhead caused by the check.</p>
+<p>The ~EventUtil class provides an utility method <em>isLocalEvent(Event)</em> which checks the existance of the <em>event.application</em> property and returns <em>true</em> if it is absend.</p>
+<h2 id="scheduler">Scheduler</h2>
+<p>Each Sling based application will contain a scheduler service (which is based on the Quartz open source project).</p>
+<h2 id="use-cases">Use Cases</h2>
+<h3 id="post-processing-business-processes">Post Processing (Business Processes)</h3>
+<p>A typical example for post processing (or running a business process) is sending an email or creating thumbnails and extracting meta data from the content (like we do in DAM), which we will discuss here.</p>
+<p>An appropriate JCR observer will be registered. This observer detects when new content is put into the repository or when content is changed. In these cases it creates appropriate <em>CONTENT</em>ADDED<em>, </em>CONTENT<em>UPDATED</em> OSGi events from the JCR events. In order to ensure that these actions get processed accordingly, the event is send as a job (with the special job topic, the <em>topic</em> and <em>id</em> property).</p>
+<p>The event admin now delivers these jobs to the registered handlers. The job event handler gets notified and (simplified version) sends the contained event synchronously. One of the handlers for these events is the post processing service in DAM. The job mechanism ensures that exactly one application node is post processing and that the process has to be finished even if the application node dies during execution.</p>
+<h2 id="scheduling">Scheduling</h2>
+<p>The scheduler is a service which uses the open source Quartz library. The scheduler has methods to start jobs periodically or with a cron definition. In addition, a service either implementing <em>java.lang.Runnable</em> or <em>org.quartz.job</em> is started through the whiteboard pattern <em>if</em> it either contains a configuration property <em>scheduler.expression</em> or <em>scheduler.period</em>. The job is started with the ~PID of the service - if the service has no PID, the configuration property <em>scheduler.name</em> must be set.</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/bundles/bundle-resources-extensions-bundleresource.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/bundle-resources-extensions-bundleresource.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/bundle-resources-extensions-bundleresource.html Tue May 22 09:41:22 2012
@@ -0,0 +1,135 @@
+<!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 - Bundle Resources (extensions.bundleresource)</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/bundles.html">Bundles</a>
+      </div>
+      <h1>Bundle Resources (extensions.bundleresource)</h1>
+      <div class="toc">
+<ul>
+<li><a href="#introduction">Introduction</a></li>
+<li><a href="#resource-types">Resource Types</a></li>
+<li><a href="#adapters">Adapters</a></li>
+<li><a href="#configuration">Configuration</a></li>
+</ul>
+</div>
+<h2 id="introduction">Introduction</h2>
+<p>The Bundle Resource Provider provides access to files/directories included in an OSGi bundle through the Sling <code>ResourceResolver</code>. </p>
+<h2 id="resource-types">Resource Types</h2>
+<p>Files and directories are mapped into the resource tree as regular <code>Resource</code> instances whose resource type depends on the actual nature of the mapped resource:</p>
+<ul>
+<li>Regular files are assigned the <code>nt:file</code> resource type</li>
+<li>Directories are assigned the <code>nt:folder</code> resource type</li>
+</ul>
+<h2 id="adapters">Adapters</h2>
+<p>Filesystem resources extend from Sling's <code>AbstractResource</code> class and thus are adaptable to any type for which an <code>AdapterFactory</code> is registered supporting bundle resources. In addition <code>BundleResource</code> support the following adapters natively:</p>
+<ul>
+<li><code>java.net.URL</code> -- A valid <code>bundle://</code> URL to the resource in the bundle. </li>
+<li><code>java.io.InputStream</code> -- An <code>InputStream</code> to read file contents. Doesn't apply to folders.</li>
+</ul>
+<h2 id="configuration">Configuration</h2>
+<p>Providing bundles have a Bundle manifest header <code>Sling-Bundle-Resources</code> containing a list of absolute paths provided by the bundle. The paths are separated by comma or whitespace (SP, TAB, VTAB, CR, LF). </p>
+<p>Example (manifest.mf):</p>
+<div class="codehilite"><pre><span class="o">...</span>
+<span class="n">Sling</span><span class="o">-</span><span class="n">Bundle</span><span class="o">-</span><span class="n">Resources:</span> <span class="sr">/libs/s</span><span class="n">ling</span><span class="o">/</span><span class="n">explorer</span><span class="p">,</span>                         
+    <span class="sr">/libs/s</span><span class="n">ling</span><span class="sr">/servlet/</span><span class="n">default</span><span class="o">/</span><span class="n">explorer</span>
+<span class="o">...</span>
+</pre></div>
+
+
+<p>It's also possible to map resources from the bundle to a different location in the resource tree. In this case the path has to be extended with a path attrribute to declare where the resources are in the bundle:</p>
+<div class="codehilite"><pre><span class="o">...</span>
+<span class="n">Sling</span><span class="o">-</span><span class="n">Bundle</span><span class="o">-</span><span class="n">Resources:</span> <span class="sr">/somepath/i</span><span class="n">nthe</span><span class="sr">/resourcetree;path:=/</span><span class="n">path</span><span class="sr">/inthe/</span><span class="n">bundle</span>
+<span class="o">...</span>
+</pre></div>
+
+
+<p>The Bundle Resource Provider also has a web console plugin through which the currently installed bundles can be seen.</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/bundles/commons-html-utilities.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/commons-html-utilities.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/commons-html-utilities.html Tue May 22 09:41:22 2012
@@ -0,0 +1,96 @@
+<!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 - Commons HTML Utilities</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/bundles.html">Bundles</a>
+      </div>
+      <h1>Commons HTML Utilities</h1>
+      <p>The Apache Sling Commons HTML Utilities bundle provides an HTML parser which can be used to parse HTML and either generate a DOM or SAX events out of the HTML. Therefore the parser transforms the HTML into proper XHTML.</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>