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 [5/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/bundles/mime-type-support-commons-mime.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/mime-type-support-commons-mime.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/mime-type-support-commons-mime.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 - MIME Type Support (commons.mime)</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>MIME Type Support (commons.mime)</h1>
+      
+      <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/osgi-installer.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/osgi-installer.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/osgi-installer.html Tue May 22 09:41:22 2012
@@ -0,0 +1,120 @@
+<!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 - OSGi Installer</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>OSGi Installer</h1>
+      <h1 id="overview">Overview</h1>
+<p>The OSGi installer is a central service for handling installs, updates and uninstall of "artifacts". By default, the installer supports bundles and has an extension for handling configurations for the OSGi configuration admin.</p>
+<p>!Slide14.jpg|border=1!</p>
+<p>The OSGi installer itself is "just" the central service managing the tasks and states of the artifacts. The artifacts can be provided through various providers, e.g. through a file system provider reading artifacts from configured directories or the jcr provider reading artifacts from a JCR repository.</p>
+<p>A provider is just scanning for artifacts and their removal. It informs the OSGi installer about new artifacts and removed artifacts. The provider itself has usually no knowledge about the contents of an artifact. It does not know about bundles, configurations etc.</p>
+<p>As the OSGi installer itself is not performing the actual install, update or removal of an artifact, its possible to install transformers and installer factories. A transformer inspects the artifacts and tries to detect its type. By default, detecting of bundles and configurations is supported. The final service is an installer factory creating the actual task, like install this bundle, update that bundle etc.</p>
+<p>It's possible to add own providers, transformers and installer factories to support custom scenarios.</p>
+<h2 id="artifact-handling">Artifact Handling</h2>
+<p>Once an artifact is detected by a transformer, it gets a unique id. By default a bundle gets the symbolic name as the unique identifier and a configuration the PID.
+In addition to this id, an artifact gets a priority information from the provider. The priority is used if an artifact with the same id is provided several times from different locations. For example if a file system provider is scanning two directories and an artifact with the same id (like a configuration) is added to both directories, one should have precedence over the other. This is handled by the priority.</p>
+<p>Artifacts with the same unique id are grouped and then sorted by priority and maybe other artifact dependent metadata like the bundle version. Only the first artifact in this sorted group is tried to be applied!</p>
+<h2 id="bundle-handling">Bundle Handling</h2>
+<p>In general, the OSGi installer always tries to install the highest version of a bundle if several bundles with the same symbolic name are provided. In this case higher version wins over priority.
+If an installed bundle is removed by a provider, for example deleted in the repository, the OSGi installer uninstall the bundle.
+If a bundle is removed from a provider which is currently not installed, this has no effect at all.
+If an installed bundle is removed and another version of this bundle is provided (a lower version), than this one is installed instead. This is basically a downgrade of the bundle.
+If a bundle is installed and a higher version is provided, an upgrade is performed.
+If an installed bundle is managed via any other OSGi tooling, like uninstalling it through the web console, the OSGi installer does no action at all!</p>
+<p>If a failure occurs during bundle installation or update, the OSGi installer will retry this as soon as another bundle has been installed. The common use case is an application installation with several bundles where one bundle depends on another. As they are installed in arbitrary order, this mechanism ensures that in the end all bundles are properly wired and installed.</p>
+<p>When all artifacts have been processed (either install, update or delete), a package refresh is automatically called.</p>
+<h3 id="versions-and-snapshots">Versions and Snapshots</h3>
+<p>The OSGi installer asumes that a symbolic name and version (not a snapshot version) uniquely identifies a bundle. Obviously this is a common development requirement that a released version of an artifact never changes over time. Therefore, once a bundle with a specific version is installed, it will not be reinstalled if the corresponding artifact changes. For example, if  bundle A with version 1.0 is put into the JCR repository, it gets installed. If now this jar in the repository is overwritten either with the same contents or with a different one, and this new artifact has again A as the symbolic name and version set to 1.0, nothing will happen as this exact bundle is already installed.</p>
+<p>During development, SNAPSHOT versions should be used, like 1.0.0-SNAPSHOT (using the Maven convention). If a bundle with a snapshot version is changed, it gets updated by the OSGI installer.</p>
+<h2 id="configuration-handling">Configuration Handling</h2>
+<p>In general the OSGi installer installs the configuration with the highes priority. For example in combination with the JCR installer provider, a configuration from <em>/apps</em> is preferred over a configuration for the same service from <em>/libs</em>.</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/output-rewriting-pipelines-org-apache-sling-rewriter.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.html Tue May 22 09:41:22 2012
@@ -0,0 +1,158 @@
+<!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 - Output Rewriting Pipelines (org.apache.sling.rewriter)</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>Output Rewriting Pipelines (org.apache.sling.rewriter)</h1>
+      <p>The Apache Sling Rewriter is a module for rewriting the output generated by a usual Sling rendering process. Some possible use cases include rewriting or checking all links in an html page, manipulating the html page, or using the generated output as the base for further transformation. An example of futher transformation is to use XSLT to transform rendered XML to some output format like HTML or XSL:FO for generating PDF.</p>
+<p>For supporting these use cases, the rewriter uses the concept for a processor. The processor is a component that is injected through a servlet filter into the response. By implementing the <em>Processor</em> interface one is able to rewrite the whole response in one go. A more convenient way of processing the output is by using a so called pipeline; the Apache Sling rewriter basically uses the same concept as the famous Apache Cocoon: an XML based pipeline for further post processing of the output. The pipeline is based on SAX events.</p>
+<h2 id="sax-pipelines">SAX Pipelines</h2>
+<p>The rewriter allows to configure a pipeline for post processing of the generated response. Depending on how the pipeline is assembled the rewriting process might buffer the whole output in order to do proper post processing - for example this is required if an HTML response is "transformed" to XHTML or if XSLT is used to process the response.</p>
+<p>As the pipeline is based on SAX events, there needs to be a component that generates these events and sends them through the pipeline. By default the Sling rendering scripts write to an output stream, so there is a need to parse this output and generate the SAX events.</p>
+<p>The first component in the pipeline generating the initial SAX events is called a generator. The generator gets the output from Sling, generates SAX events (XML), and streams these events into the pipeline. The counterpart of the generator is the serializer which builds the end of the pipeline. The serializer collects all incomming SAX events, transforms them into the required response by writing into output stream of the response.</p>
+<p>Between the generator and the serializer so called transformers can be placed in a chain. A transformer receives SAX events from the previous component in the pipeline and sends SAX events to the next component in the pipeline. A transformer can remove events, change events, add events or just pass on the events.</p>
+<p>Sling contains a default pipeline which is executed for all html responses: it starts with an html generator, parsing the html output and sending events into the pipeline. A html serializer collects all events and serializes the output. </p>
+<p>The pipelines can be configured in the repository as a child node of <em>/apps/APPNAME/config/rewriter</em> (or <em>/libs/APPNAME/config/rewriter</em>). (In fact the configured search paths of the resource resolver are observed.) Each node can have the following properties:
+<em> generatorType - the type of the generator (required)
+</em> transformerTypes (multi value string) - the types of the transformers (optional)
+<em> serializerType - the type of the serializer (required)
+</em> paths (multi value string) - the paths this pipeline should run on (content paths)
+<em> contentTypes (multi value string) - the content types this pipeline should be used for (optional)
+</em> extensions (multi value string) - the extensions this pipeline should be used for (optional)
+<em> resourceTypes (multi value string) - the resource types this pipeline should be used for (optional)
+</em> order (long) - the configurations are sorted by this order, order must be higher or equal to 0. The configuration with the highest order is tried first.
+* enabled (boolean) - Is this configuration active? (default yes)</p>
+<p>As you can see from the configuration there are several possibilities to define when a pipeline should be used for a response, like paths, extensions, content types, or resource types. It is possible to specify several of them at once. In this case all conditions must be met.</p>
+<p>If a component needs a configuration, the configuration is stored in a child node which name is <em>{componentType}-{name}</em>, e.g. to configure the html generator (named <em>html-generator</em>), the node should have the name <em>generator-html-generator</em>. In the case that the pipeline contains the same transformer several times, the configuration child node should have the formant <em>{componentType}-{index}</em> where index is the index of the transformer starting with 1. For example if you have a pipeline with the following transformers, xslt, html-cleaner, xslt, link-checker, then the configuration nodes should be named <em>transformer-1</em> (for the first xslt), <em>transformer-html-cleaner</em>, <em>transformer-3</em> (for the second xslt), and <em>transformer-link-checker</em>.</p>
+<h3 id="default-pipeline">Default Pipeline</h3>
+<p>The default pipeline is configured for the <em>text/html</em> mime type and the <em>html</em> extensions and consists of the <em>html-generator</em> as the generator, and the <em>html-serializer</em> for generating the final response.
+As the html generated by Sling is not required to be valid XHTML, the html parser is using an HTML parser to create valid SAX events. In order to perform this, the generator needs to buffer the whole response first.</p>
+<h2 id="implementing-pipeline-components">Implementing Pipeline Components</h2>
+<p>Each pipeline component type has a corresponding Java interface (Generator, Transformer, and Serializer) together with a factory interface (GeneratorFactory, TransformerFactory, and SerializerFactory). When implementing such a component, both interfaces need to be implemented. The factory has only one method which creates a new instance of that type for the current request. The factory has to be registered as a service. For example if you're using the Maven SCR plugin, it looks like this:</p>
+<div class="codehilite"><pre><span class="nv">@scr</span><span class="o">.</span><span class="n">component</span> <span class="n">metatype</span><span class="o">=</span><span class="s">&quot;no&quot;</span> 
+<span class="nv">@scr</span><span class="o">.</span><span class="n">service</span> <span class="n">interface</span><span class="o">=</span><span class="s">&quot;TransformerFactory&quot;</span>
+<span class="nv">@scr</span><span class="o">.</span><span class="n">property</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;pipeline.type&quot;</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;validator&quot;</span>
+</pre></div>
+
+
+<p>The factory needs to implement the according interface and should be registered as a service for this factory interface (this is a plain service and not a factory service in the OSGi sense). Each factory gets a unique name through the <em>pipeline.type</em> property. The pipeline configuration in the repository just references this unique name (like validator).</p>
+<h2 id="extending-the-pipeline">Extending the Pipeline</h2>
+<p>With the possibilities from above, it is possible to define new pipelines and add custom components to the pipeline. However, in some cases it is required to just add a custom transformer to the existing pipeline. Therefore the rewriting can be configured with pre and post transformers that are simply added to each configured pipeline. This allows a more flexible way of customizing the pipeline without changing/adding a configuration in the repository.</p>
+<p>The approach here is nearly the same. A transformer factory needs to be implemented, but instead of giving this factory a unique name, this factory is marked as a global factory:</p>
+<div class="codehilite"><pre><span class="nv">@scr</span><span class="o">.</span><span class="n">component</span> <span class="n">metatype</span><span class="o">=</span><span class="s">&quot;no&quot;</span>
+<span class="nv">@scr</span><span class="o">.</span><span class="n">service</span> <span class="n">interface</span><span class="o">=</span><span class="s">&quot;TransformerFactory&quot;</span>
+<span class="nv">@scr</span><span class="o">.</span><span class="n">property</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;pipeline.mode&quot;</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;global&quot;</span>
+<span class="nv">@scr</span><span class="o">.</span><span class="n">property</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;service.ranking&quot;</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;RANKING&quot;</span> <span class="n">type</span><span class="o">=</span><span class="s">&quot;Integer&quot;</span>
+</pre></div>
+
+
+<p><em>RANKING</em> is an integer value (don't forget the type attribute otherwise the ranking is interpreted as zero!) specifying where to add the transformer in the pipeline. If the value is less than zero the transformer is added at the beginning of the pipeline right after the generator. If the ranking is equal or higher as zero, the transformer is added at the end of the pipeline before the serializer.</p>
+<p>The <em>TransformerFactory</em> interface has just one method which returns a new transformer instance. If you plan to use other services in your transformer you might declare the references on the factory and pass in the instances into the newly created transformer.</p>
+<h2 id="implementing-a-processor">Implementing a Processor</h2>
+<p>A processor must conform to the Java interface <em>org.apache.sling.rewriter.Processor</em>. It gets initializd (method <em>init</em>) with the <em>ProcessingContext</em>. This context contains all necessary information for the current request (especially the output writer to write the rewritten content to).
+The <em>getWriter</em> method should return a writer where the output is written to. When the output is written or an error occured <em>finished</em> is called.</p>
+<p>Like the pipeline components a processor is generated by a factory which has to be registered as a service factory, like this:</p>
+<div class="codehilite"><pre><span class="nv">@scr</span><span class="o">.</span><span class="n">component</span> <span class="n">metatype</span><span class="o">=</span><span class="s">&quot;no&quot;</span> 
+<span class="nv">@scr</span><span class="o">.</span><span class="n">service</span> <span class="n">interface</span><span class="o">=</span><span class="s">&quot;ProcessorFactory&quot;</span>
+<span class="nv">@scr</span><span class="o">.</span><span class="n">property</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;pipeline.type&quot;</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;uniqueName&quot;</span>
+</pre></div>
+
+
+<h2 id="configuring-a-processor">Configuring a Processor</h2>
+<p>The processors can be configured in the repository as a child node of <em>/apps/APPNAME/config/rewriter</em> (or libs or any configured search path). Each node can have the following properties:
+<em> processorType - the type of the processor (required) - this is the part from the scr factory information after the slash (in the example above this is </em>uniqueName<em>)
+</em> paths (multi value string) - the paths this processor should run on (content paths)
+<em> contentTypes (multi value string) - the content types this processor should be used for (optional)
+</em> extensions (multi value string) - the extensions this pipeline should be used for (optional)
+<em> resourceTypes (multi value string) - the resource types this pipeline should be used for (optional)
+</em> order (long) - the configurations are sorted by this order, order must be higher or equal to 0. The configuration with the highest order is tried first.
+* enabled (boolean) - Is this configuration active? (default yes)</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/scheduler-service-commons-scheduler.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/scheduler-service-commons-scheduler.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/scheduler-service-commons-scheduler.html Tue May 22 09:41:22 2012
@@ -0,0 +1,278 @@
+<!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 - Scheduler Service (commons scheduler)</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>Scheduler Service (commons scheduler)</h1>
+      <p>The scheduler is a service for scheduling other services/jobs (it uses the open source Quartz library). The scheduler can be used in two ways, by registering the job through the scheduler API and by leveraging the whiteboard pattern that is supported by the scheduler.</p>
+<h2 id="the-scheduler-api">The Scheduler API</h2>
+<p>The scheduler has methods to execute jobs periodically, based on a cron expression or at a given time. For more details please refer to the <a href="">javadocs</a>.</p>
+<h2 id="examples-of-scheduled-jobs-registered-through-the-scheduler-api">Examples of scheduled jobs registered through the scheduler API</h2>
+<p>The following examples show you how to define and schedule a job that is registered through the scheduler api.</p>
+<h3 id="defining-the-job">Defining the job</h3>
+<p>The following code sample defines a <em>job</em> object that writes a message in the logs:</p>
+<div class="codehilite"><pre><span class="n">final</span> <span class="n">Runnable</span> <span class="n">job</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Runnable</span><span class="p">()</span> <span class="p">{</span>
+    <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
+        <span class="nb">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Executing the job&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+</pre></div>
+
+
+<h3 id="scheduling-with-a-cron-expression">Scheduling with a cron expression</h3>
+<p>To execute the job as defined above at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday, you can use the <em>addJob()</em> method with the following parameters:</p>
+<div class="codehilite"><pre><span class="n">String</span> <span class="n">schedulingExpression</span> <span class="o">=</span> <span class="s">&quot;0 15 10 ? * MON-FRI&quot;</span><span class="p">;</span>
+<span class="n">this</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">addJob</span><span class="p">(</span><span class="s">&quot;myJob&quot;</span><span class="p">,</span> <span class="n">job</span><span class="p">,</span> <span class="n">null</span><span class="p">,</span> <span class="n">schedulingExpression</span><span class="p">,</span> <span class="n">true</span><span class="p">);</span>
+</pre></div>
+
+
+<p>Refer to http://www.docjar.com/docs/api/org/quartz/CronTrigger.html
+ to define more scheduling expressions.</p>
+<h3 id="scheduling-at-periodic-times">Scheduling at periodic times</h3>
+<p>To execute the job as defined above every 3 minutes (180 seconds), you can use the <em>addPeriodicJob()</em> method with the following parameters:</p>
+<div class="codehilite"><pre><span class="n">long</span> <span class="n">period</span> <span class="o">=</span> <span class="mi">3</span><span class="o">*</span><span class="mi">60</span><span class="p">;</span> <span class="sr">//</span><span class="n">the</span> <span class="n">period</span> <span class="n">is</span> <span class="n">expressed</span> <span class="n">in</span> <span class="n">seconds</span>
+<span class="n">this</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">addPeriodicJob</span><span class="p">(</span><span class="s">&quot;myJob&quot;</span><span class="p">,</span> <span class="n">job</span><span class="p">,</span> <span class="n">null</span><span class="p">,</span> <span class="n">period</span><span class="p">,</span> <span class="n">true</span><span class="p">);</span>
+</pre></div>
+
+
+<h3 id="scheduling-at-a-given-time">Scheduling at a given time</h3>
+<p>To execute the job as defined above at a specific date (on January 10th 2020), you can use the <em>fireJobAt()</em> method with the following parameters:</p>
+<div class="codehilite"><pre><span class="n">SimpleDateFormat</span> <span class="n">formatter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimpleDateFormat</span><span class="p">(</span><span class="s">&quot;yyyy/MM/dd&quot;</span><span class="p">);</span>
+<span class="n">String</span> <span class="n">date</span> <span class="o">=</span> <span class="s">&quot;2020/01/10&quot;</span><span class="p">;</span>
+<span class="n">java</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">Date</span> <span class="n">fireDate</span> <span class="o">=</span> <span class="n">formatter</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">date</span><span class="p">);</span>
+<span class="n">this</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">fireJobAt</span><span class="p">(</span><span class="s">&quot;myJob&quot;</span><span class="p">,</span> <span class="n">job</span><span class="p">,</span> <span class="n">null</span><span class="p">,</span> <span class="n">fireDate</span><span class="p">);</span>
+</pre></div>
+
+
+<h3 id="a-service-scheduling-the-job-based-on-3-different-kinds-of-scheduling">A service scheduling the job based on 3 different kinds of scheduling</h3>
+<p>The code implementing a service that simultaneously executes the job based on 3 different kinds of scheduling can look as follows:</p>
+<div class="codehilite"><pre><span class="nb">package</span> <span class="n">sling</span><span class="o">.</span><span class="n">docu</span><span class="o">.</span><span class="n">examples</span><span class="p">;</span>
+
+<span class="nb">import</span> <span class="n">java</span><span class="o">.</span><span class="n">io</span><span class="o">.</span><span class="n">Serializable</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">java</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">Date</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">java</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">HashMap</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">java</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">Map</span><span class="p">;</span>
+
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">sling</span><span class="o">.</span><span class="n">commons</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">Scheduler</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">component</span><span class="o">.</span><span class="n">ComponentContext</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">slf4j</span><span class="o">.</span><span class="n">Logger</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">slf4j</span><span class="o">.</span><span class="n">LoggerFactory</span><span class="p">;</span>
+
+<span class="o">/**</span>
+ <span class="o">*</span>  <span class="n">This</span> <span class="n">service</span> <span class="n">executes</span> <span class="n">scheduled</span> <span class="n">jobs</span>
+ <span class="o">*</span>  
+ <span class="o">*</span>  <span class="nv">@scr</span><span class="o">.</span><span class="n">component</span> <span class="n">immediate</span><span class="o">=</span><span class="s">&quot;true&quot;</span> <span class="n">metatype</span><span class="o">=</span><span class="s">&quot;false&quot;</span>
+ <span class="o">*</span>
+ <span class="o">*/</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">HelloWorldScheduledService</span> <span class="p">{</span>
+
+    <span class="sr">/** Default log. */</span>
+    <span class="n">protected</span> <span class="n">final</span> <span class="n">Logger</span> <span class="nb">log</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">getClass</span><span class="p">());</span>
+
+    <span class="o">/**</span> <span class="n">The</span> <span class="n">scheduler</span> <span class="k">for</span> <span class="n">rescheduling</span> <span class="n">jobs</span><span class="o">.</span>
+     <span class="o">*</span> <span class="nv">@scr</span><span class="o">.</span><span class="n">reference</span> <span class="o">*/</span>
+    <span class="n">private</span> <span class="n">Scheduler</span> <span class="n">scheduler</span><span class="p">;</span>
+
+    <span class="n">protected</span> <span class="n">void</span> <span class="n">activate</span><span class="p">(</span><span class="n">ComponentContext</span> <span class="n">componentContext</span><span class="p">)</span> <span class="n">throws</span> <span class="n">Exception</span> <span class="p">{</span>
+        <span class="sr">//c</span><span class="n">ase</span> <span class="mi">1</span><span class="p">:</span> <span class="n">with</span> <span class="n">addJob</span><span class="p">()</span> <span class="n">method:</span> <span class="n">executes</span> <span class="n">the</span> <span class="n">job</span> <span class="n">every</span> <span class="n">minute</span>
+        <span class="n">String</span> <span class="n">schedulingExpression</span> <span class="o">=</span> <span class="s">&quot;0 * * * * ?&quot;</span><span class="p">;</span>
+        <span class="n">String</span> <span class="n">jobName1</span> <span class="o">=</span> <span class="s">&quot;case1&quot;</span><span class="p">;</span>
+        <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Serializable</span><span class="o">&gt;</span> <span class="n">config1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Serializable</span><span class="o">&gt;</span><span class="p">();</span>
+        <span class="n">boolean</span> <span class="n">canRunConcurrently</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+        <span class="n">final</span> <span class="n">Runnable</span> <span class="n">job1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Runnable</span><span class="p">()</span> <span class="p">{</span>
+            <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
+                <span class="nb">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Executing job1&quot;</span><span class="p">);</span>
+            <span class="p">}</span>
+        <span class="p">};</span>
+        <span class="n">try</span> <span class="p">{</span>
+            <span class="n">this</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">addJob</span><span class="p">(</span><span class="n">jobName1</span><span class="p">,</span> <span class="n">job1</span><span class="p">,</span> <span class="n">config1</span><span class="p">,</span> <span class="n">schedulingExpression</span><span class="p">,</span> <span class="n">canRunConcurrently</span><span class="p">);</span>
+        <span class="p">}</span> <span class="n">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">job1</span><span class="o">.</span><span class="n">run</span><span class="p">();</span>
+        <span class="p">}</span>
+
+        <span class="sr">//c</span><span class="n">ase</span> <span class="mi">2</span><span class="p">:</span> <span class="n">with</span> <span class="n">addPeriodicJob</span><span class="p">():</span> <span class="n">executes</span> <span class="n">the</span> <span class="n">job</span> <span class="n">every</span> <span class="mi">3</span> <span class="n">minutes</span>
+        <span class="n">String</span> <span class="n">jobName2</span> <span class="o">=</span> <span class="s">&quot;case2&quot;</span><span class="p">;</span>
+        <span class="n">long</span> <span class="n">period</span> <span class="o">=</span> <span class="mi">180</span><span class="p">;</span>
+        <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Serializable</span><span class="o">&gt;</span> <span class="n">config2</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Serializable</span><span class="o">&gt;</span><span class="p">();</span>
+        <span class="n">final</span> <span class="n">Runnable</span> <span class="n">job2</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Runnable</span><span class="p">()</span> <span class="p">{</span>
+            <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
+                <span class="nb">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Executing job2&quot;</span><span class="p">);</span>
+            <span class="p">}</span>
+        <span class="p">};</span>
+        <span class="n">try</span> <span class="p">{</span>
+            <span class="n">this</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">addPeriodicJob</span><span class="p">(</span><span class="n">jobName2</span><span class="p">,</span> <span class="n">job2</span><span class="p">,</span> <span class="n">config2</span><span class="p">,</span> <span class="n">period</span><span class="p">,</span> <span class="n">canRunConcurrently</span><span class="p">);</span>
+        <span class="p">}</span> <span class="n">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">job2</span><span class="o">.</span><span class="n">run</span><span class="p">();</span>
+        <span class="p">}</span>
+
+        <span class="sr">//c</span><span class="n">ase</span> <span class="mi">3</span><span class="p">:</span> <span class="n">with</span> <span class="n">fireJobAt</span><span class="p">():</span> <span class="n">executes</span> <span class="n">the</span> <span class="n">job</span> <span class="n">at</span> <span class="n">a</span> <span class="n">specific</span> <span class="n">date</span> <span class="p">(</span><span class="n">date</span> <span class="n">of</span> <span class="n">deployment</span> <span class="o">+</span> <span class="n">delay</span> <span class="n">of</span> <span class="mi">30</span> <span class="n">seconds</span><span class="p">)</span>
+        <span class="n">String</span> <span class="n">jobName3</span> <span class="o">=</span> <span class="s">&quot;case3&quot;</span><span class="p">;</span>
+        <span class="n">final</span> <span class="n">long</span> <span class="n">delay</span> <span class="o">=</span> <span class="mi">30</span><span class="o">*</span><span class="mi">1000</span><span class="p">;</span>
+        <span class="n">final</span> <span class="n">Date</span> <span class="n">fireDate</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Date</span><span class="p">();</span>
+        <span class="n">fireDate</span><span class="o">.</span><span class="n">setTime</span><span class="p">(</span><span class="n">System</span><span class="o">.</span><span class="n">currentTimeMillis</span><span class="p">()</span> <span class="o">+</span> <span class="n">delay</span><span class="p">);</span>
+        <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Serializable</span><span class="o">&gt;</span> <span class="n">config3</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Serializable</span><span class="o">&gt;</span><span class="p">();</span>
+        <span class="n">final</span> <span class="n">Runnable</span> <span class="n">job3</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Runnable</span><span class="p">()</span> <span class="p">{</span>
+            <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
+                <span class="nb">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Executing job3 at date: {} with a delay of: {} seconds&quot;</span><span class="p">,</span> <span class="n">fireDate</span><span class="p">,</span> <span class="n">delay</span><span class="o">/</span><span class="mi">1000</span><span class="p">);</span>
+            <span class="p">}</span>
+        <span class="p">};</span>
+        <span class="n">try</span> <span class="p">{</span>
+            <span class="n">this</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">fireJobAt</span><span class="p">(</span><span class="n">jobName3</span><span class="p">,</span> <span class="n">job3</span><span class="p">,</span> <span class="n">config3</span><span class="p">,</span> <span class="n">fireDate</span><span class="p">);</span>
+        <span class="p">}</span> <span class="n">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">job3</span><span class="o">.</span><span class="n">run</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="n">protected</span> <span class="n">void</span> <span class="n">deactivate</span><span class="p">(</span><span class="n">ComponentContext</span> <span class="n">componentContext</span><span class="p">)</span> <span class="p">{</span>
+        <span class="nb">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Deactivated, goodbye!&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+
+<span class="p">}</span>
+</pre></div>
+
+
+<h2 id="examples-of-jobs-that-are-scheduled-by-leveraging-the-whiteboard-pattern">Examples of jobs that are scheduled by leveraging the whiteboard pattern</h2>
+<p>The following examples show you how to define and schedule a job by leveraging the whiteboard pattern.</p>
+<h3 id="scheduling-with-a-cron-expression_1">Scheduling with a cron expression</h3>
+<p>The following job is executed every minute by setting <em>scheduler.expression</em> to the cron expression <em>"0 * </em> * <em> ?"</em>:</p>
+<div class="codehilite"><pre><span class="nb">package</span> <span class="n">sling</span><span class="o">.</span><span class="n">docu</span><span class="o">.</span><span class="n">examples</span><span class="p">;</span>
+
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">slf4j</span><span class="o">.</span><span class="n">Logger</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">slf4j</span><span class="o">.</span><span class="n">LoggerFactory</span><span class="p">;</span>
+
+<span class="o">/**</span>
+ <span class="o">*</span> <span class="nv">@scr</span><span class="o">.</span><span class="n">component</span>
+ <span class="o">*</span> <span class="nv">@scr</span><span class="o">.</span><span class="n">service</span> <span class="n">interface</span><span class="o">=</span><span class="s">&quot;java.lang.Runnable&quot;</span>
+ <span class="o">*</span> <span class="nv">@scr</span><span class="o">.</span><span class="n">property</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;scheduler.expression&quot;</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;0 * * * * ?&quot;</span>
+ <span class="o">*/</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">ScheduledCronJob</span> <span class="n">implements</span> <span class="n">Runnable</span> <span class="p">{</span>
+
+    <span class="sr">/** Default log. */</span>
+    <span class="n">protected</span> <span class="n">final</span> <span class="n">Logger</span> <span class="nb">log</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">getClass</span><span class="p">());</span>
+
+    <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
+        <span class="nb">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Executing a cron job (job#1) through the whiteboard pattern&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="sr">//</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<h3 id="scheduling-at-periodic-times_1">Scheduling at periodic times</h3>
+<p>The following job is executed every ten seconds by setting <em>scheduler.period</em> to <em>10</em>:</p>
+<div class="codehilite"><pre><span class="nb">package</span> <span class="n">sling</span><span class="o">.</span><span class="n">docu</span><span class="o">.</span><span class="n">examples</span><span class="p">;</span>
+
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">slf4j</span><span class="o">.</span><span class="n">Logger</span><span class="p">;</span>
+<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">slf4j</span><span class="o">.</span><span class="n">LoggerFactory</span><span class="p">;</span>
+
+<span class="o">/**</span>
+ <span class="o">*</span> <span class="nv">@scr</span><span class="o">.</span><span class="n">component</span>
+ <span class="o">*</span> <span class="nv">@scr</span><span class="o">.</span><span class="n">service</span> <span class="n">interface</span><span class="o">=</span><span class="s">&quot;java.lang.Runnable&quot;</span>
+ <span class="o">*</span> <span class="nv">@scr</span><span class="o">.</span><span class="n">property</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;scheduler.period&quot;</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;10&quot;</span> <span class="n">type</span><span class="o">=</span><span class="s">&quot;Long&quot;</span>
+ <span class="o">*/</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">ScheduledPeriodicJob</span> <span class="n">implements</span> <span class="n">Runnable</span> <span class="p">{</span>
+
+    <span class="sr">/** Default log. */</span>
+    <span class="n">protected</span> <span class="n">final</span> <span class="n">Logger</span> <span class="nb">log</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">this</span><span class="o">.</span><span class="n">getClass</span><span class="p">());</span>
+
+    <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
+        <span class="nb">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Executing a perodic job (job#2) through the whiteboard pattern&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="sr">//</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<h3 id="preventing-concurrent-execution">Preventing concurrent execution</h3>
+<p>By default, jobs can be concurrently executed. To prevent this, set the <em>scheduler.concurrent</em> property to <em>false</em>:</p>
+<div class="codehilite"><pre><span class="nv">@scr</span><span class="o">.</span><span class="n">property</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;scheduler.concurrent&quot;</span> <span class="n">value</span><span class="o">=</span><span class="s">&quot;false&quot;</span> <span class="n">type</span><span class="o">=</span><span class="s">&quot;Boolean&quot;</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/bundles/sling-settings-org-apache-sling-settings.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/sling-settings-org-apache-sling-settings.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/sling-settings-org-apache-sling-settings.html Tue May 22 09:41:22 2012
@@ -0,0 +1,147 @@
+<!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 Settings (org.apache.sling.settings)</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>Sling Settings (org.apache.sling.settings)</h1>
+      <h1 id="overview">Overview</h1>
+<p>The Sling Settings Bundle exposes the <code>SlingSettingsService</code> which allows access to the following information pertinent to a Sling instance:</p>
+<table>
+<thead>
+<tr>
+<th>Method</th>
+<th>Bundle Context Property</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>String getSlingId()</code></td>
+<td>---</td>
+<td>A unique identifier of the running Sling instance. This value is created when Sling is first started and may be used to identify the instance, for example if multiple Sling instances are running on top of a Jackrabbit Repository Cluster</td>
+</tr>
+<tr>
+<td><code>String getSlingHomePath()</code></td>
+<td><code>sling.home</code></td>
+<td>The absolute filesystem path to the directory where Sling stores all its content</td>
+</tr>
+<tr>
+<td><code>URL getSlingHome()</code></td>
+<td><code>sling.home.url</code></td>
+<td>The Sling Home path as an <code>java.net.URL</code> instance</td>
+</tr>
+<tr>
+<td><code>Set&lt;String&gt; getRunModes()</code></td>
+<td><code>sling.run.modes</code></td>
+<td>The active Run Modes of the running Sling instance</td>
+</tr>
+</tbody>
+</table>
+<p>The new Sling Settings Bundle replaces the former <a href="/old-stuff/run-modes-org-apache-sling-runmode.html">Run Modes (org.apache.sling.runmode)</a> Bundle and the <code>SlingSettingsService</code> previously provided by the Sling Engine bundle.</p>
+<h2 id="run-modes">Run Modes</h2>
+<p>Run modes are meant to define different sets of configuration parameters for various Sling instances.</p>
+<p>In a web publishing environment, for example, one could use run modes like <em>staging, production, dev, dmz</em> or combinations of such values.</p>
+<h3 id="configuration">Configuration</h3>
+<p>Run modes can only be configured using a system property, or via the <code>sling.properties</code> file.</p>
+<p>Using <code>-Dsling.run.modes=foo,bar</code> on the JVM command-line, for example, activates the <em>foo</em> and <em>bar</em> run modes. </p>
+<p>This command-line parameter takes precedence over a similar definition (<code>sling.run.modes=dev,staging</code>) that might be present in the <code>sling.properties</code> file found in the Sling home directory.</p>
+<h3 id="getting-the-run-modes-of-the-sling-instance">Getting the Run Modes of the Sling instance</h3>
+<p>The <code>SlingSettings</code> service provides the Run Modes of the running Sling instance, examples:</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>RunMode examples</B></DIV><DIV class="codeContent panelContent">
+    SlingSettings settings = ...get from BundleContext...
+    Set<String> currentRunModes = settings.getRunModes();</p>
+<div class="codehilite"><pre><span class="n">Set</span><span class="sr">&lt;String&gt;</span> <span class="n">expectedRunModes</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashSet</span><span class="sr">&lt;String&gt;</span><span class="p">();</span>
+<span class="k">if</span><span class="p">(</span><span class="n">expectedRunModes</span><span class="o">.</span><span class="n">removeAll</span><span class="p">(</span><span class="n">currentRunModes</span><span class="p">))</span> <span class="p">{</span>
+  <span class="sr">//</span> <span class="n">at</span> <span class="n">least</span> <span class="n">one</span> <span class="n">of</span> <span class="p">(</span><span class="n">foo</span><span class="p">,</span><span class="n">wii</span><span class="p">)</span> <span class="n">run</span> <span class="n">modes</span>
+  <span class="sr">//</span> <span class="n">is</span> <span class="n">active</span>
+<span class="p">}</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/bundles/web-console-extensions.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/web-console-extensions.html (added)
+++ websites/staging/sling/trunk/content/documentation/bundles/web-console-extensions.html Tue May 22 09:41:22 2012
@@ -0,0 +1,140 @@
+<!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 - Web Console Extensions</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>Web Console Extensions</h1>
+      <p>The Apache Sling project provides two extensions to the <a href="">Apache Felix Web Console</a> (in addition to a number of plugins, of course):</p>
+<div class="toc">
+<ul>
+<li><a href="#branding-orgapacheslingextensionswebconsolebranding">Branding (org.apache.sling.extensions.webconsolebranding)</a></li>
+<li><a href="#security-provider-orgapacheslingextensionswebconsolesecurityprovider">Security Provider (org.apache.sling.extensions.webconsolesecurityprovider)</a><ul>
+<li><a href="#configuration">Configuration</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<h2 id="branding-orgapacheslingextensionswebconsolebranding">Branding (org.apache.sling.extensions.webconsolebranding)</h2>
+<p>The Apache Sling Web Console Branding provided by Apache Sling is currently just for the product logo displayed in the upper right corner of the Web Console and some titles and strings.</p>
+<p>This bundle will attach as a fragment bundle to the Apache Felix Web Console bundle. To enable it after installation into a running system, you might have to refresh the package imports of the Apache Felix Web Console bundle. If you install using the Apache Felix Web Console bundle installation functionality, this will be taken care of by the Web Console.</p>
+<h2 id="security-provider-orgapacheslingextensionswebconsolesecurityprovider">Security Provider (org.apache.sling.extensions.webconsolesecurityprovider)</h2>
+<p>The Apache Sling Web Console Security Provider implements the Apache Felix Web Console <code>WebConsoleSecurityProvider</code> interface authenticating Web Console users against the JCR repository. Each username and password presented is used to login to the JCR repository and to check the respective session.</p>
+<ol>
+<li>Ensure the username and password can be used to login to the default workspace. If not, access is denied</li>
+<li>If the username presented is one of the user names configured with the <code>users</code> configuration property, access is granted.</li>
+<li>Otherwise if the user is a (direct or indirect) member of one of the groups configured with the <code>groups</code> configuration property, access is granted.</li>
+</ol>
+<p>Access is denied if the username and password cannot be used to login to the default workspace or if the user is neither one of the configured allowed users nor in any of the configured groups.</p>
+<h3 id="configuration">Configuration</h3>
+<p>The Security Provider is configured with configuration with PID <code>org.apache.sling.extensions.webconsolesecurityprovider.internal.SlingWebConsoleSecurityProvider</code> supporting the following properties:</p>
+<table>
+<thead>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default Value</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>users</code></td>
+<td><code>String</code>, <code>String[]()</code> or <code>Vector&lt;String&gt;</code></td>
+<td>admin</td>
+</tr>
+<tr>
+<td><code>groups</code></td>
+<td><code>String</code>, <code>String[]()</code> or <code>Vector&lt;String&gt;</code></td>
+<td>---</td>
+</tr>
+</tbody>
+</table>
+<p>Note, that while the default value explicitly grants the <em>admin</em> user to access the Web Console it is suggested that system administrators define a special group and assign users with Web Console access to this group.</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