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

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

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/mimetypes.png
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/mimetypes.png b/content/documentation/bundles/mimetypes.png
deleted file mode 100644
index ec54519..0000000
Binary files a/content/documentation/bundles/mimetypes.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/models.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/models.md b/content/documentation/bundles/models.md
deleted file mode 100644
index 21669bf..0000000
--- a/content/documentation/bundles/models.md
+++ /dev/null
@@ -1,522 +0,0 @@
-title=Sling Models		
-type=page
-status=published
-~~~~~~
-
-[TOC]
-
-Many Sling projects want to be able to create model objects - POJOs which are automatically mapped from Sling objects, typically resources, but also request objects. Sometimes these POJOs need OSGi services as well.
-
-# Design Goals
-
-* Entirely annotation driven. "Pure" POJOs.
-* Use standard annotations where possible.
-* Pluggable
-* OOTB, support resource properties (via ValueMap), SlingBindings, OSGi services, request attributes
-* Adapt multiple objects - minimal required Resource and SlingHttpServletRequest
-* Client doesn't know/care that these objects are different than any other adapter factory
-* Support both classes and interfaces.
-* Work with existing Sling infrastructure (i.e. not require changes to other bundles).
-
-# Basic Usage
-In the simplest case, the class is annotated with `@Model` and the adaptable class. Fields which need to be injected are annotated with `@Inject`:
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject
-private String propertyName;
-}
-
-In this case, a property named "propertyName" will be looked up from the Resource (after first adapting it to a `ValueMap`) and it is injected.
-
-For an interface, it is similar:
-
-::java
-@Model(adaptables=Resource.class)
-public interface MyModel {
-
-@Inject
-String getPropertyName();
-}
-
-Constructor injection is also supported (as of Sling Models 1.1.0):
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-@Inject
-public MyModel(@Named("propertyName") String propertyName) {
-// constructor code
-}
-}
-
-Because the name of a constructor argument parameter cannot be detected via the Java Reflection API a `@Named` annotation is mandatory for injectors that require a name for resolving the injection.
-
-In order for these classes to be picked up, there is a header which must be added to the bundle's manifest:
-
-<Sling-Model-Packages>
-org.apache.sling.models.it.models
-</Sling-Model-Packages>
-
-This header must contain all packages which contain model classes or interfaces. However, subpackages need not be listed
-individually, e.g. the header above will also pick up model classes in `org.apache.sling.models.it.models.sub`. Multiple packages
-can be listed in a comma-separated list (any whitespace will be removed):
-
-<Sling-Model-Packages>
-org.apache.sling.models.it.models,
-org.apache.sling.other.models
-</Sling-Model-Packages>
-
-Alternatively it is possible to list all classes individually that are Sling Models classes via the `Sling-Model-Classes` header.
-
-If you use the Sling Models bnd plugin all required bundle headers are generated automatically at build time (see chapter 'Registration of Sling Models classes via bnd plugin' below).
-
-# Client Code
-## adaptTo()
-
-Client code doesn't need to be aware that Sling Models is being used. It just uses the Sling Adapter framework:
-
-::java
-MyModel model = resource.adaptTo(MyModel.class)
-
-Or
-
-::jsp
-<sling:adaptTo adaptable="${resource}" adaptTo="org.apache.sling.models.it.models.MyModel" var="model"/>
-
-Or
-
-::jsp
-${sling:adaptTo(resource, 'org.apache.sling.models.it.models.MyModel')}
-
-As with other AdapterFactories, if the adaptation can't be made for any reason, `adaptTo()` returns null.
-## ModelFactory (since 1.2.0)
-*See also  [SLING-3709](https://issues.apache.org/jira/browse/SLING-3709)*
-
-Since Sling Models 1.2.0 there is another way of instantiating models. The OSGi service `ModelFactory` provides a method for instantiating a model that throws exceptions. This is not allowed by the Javadoc contract of the adaptTo method. That way `null` checks are not necessary and it is easier to see why instantiation of the model failed.
-
-::java
-try {
-MyModel model = modelFactory.createModel(object, MyModel.class);
-} catch (Exception e) {
-// give out error message that the model could not be instantiated.
-// The exception contains further information.
-// See the javadoc of the ModelFactory for which Exception can be expected here
-}
-
-In addition `ModelFactory` provides methods for checking whether a given class is a model at all (having the model annotation) or whether a class can be adapted from a given adaptable.
-
-# Other Options
-## Names
-If the field or method name doesn't exactly match the property name, `@Named` can be used:
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject @Named("secondPropertyName")
-private String otherName;
-}
-
-## Optional and Required
-`@Inject`ed fields/methods are assumed to be required. To mark them as optional, use `@Optional`:
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject @Optional
-private String otherName;
-}
-
-If a majority of `@Inject`ed fields/methods are optional, it is possible (since Sling Models API 1.0.2/Impl 1.0.6) to change the default injection
-strategy by using adding `defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL` to the `@Model` annotation:
-
-::java
-@Model(adaptables=Resource.class, defaultInjectionStrategy=DefaultInjectionStrategy.OPTIONAL)
-public class MyModel {
-
-@Inject
-private String otherName;
-}
-
-To still mark some fields/methods as being mandatory while relying on `defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL` for all other fields, the annotation `@Required` can be used.
-
-`@Optional` annotations are only evaluated when using the `defaultInjectionStrategy = DefaultInjectionStrategy.REQUIRED` (which is the default), `@Required` annotations only if using `defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL`.
-
-## Defaults
-A default value can be provided (for Strings & primitives):
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject @Default(values="defaultValue")
-private String name;
-}
-
-Defaults can also be arrays:
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject @Default(intValues={1,2,3,4})
-private int[] integers;
-}
-
-
-OSGi services can be injected:
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject
-private ResourceResolverFactory resourceResolverFactory;
-}
-
-
-In this case, the name is not used -- only the class name.
-
-## Collections
-Lists and arrays are supported by some injectors. For the details look at the table given in [Available Injectors](#available-injectors):
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject
-private List<Servlet> servlets;
-}
-
-List injection for *child resources* works by injecting grand child resources (since Sling Models Impl 1.0.6). For example, the class
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-@Inject
-private List<Resource> addresses;
-}
-
-Is suitable for a resource structure such as:
-
-+- resource (being adapted)
-|
-+- addresses
-|
-+- address1
-|
-+- address2
-
-In this case, the `addresses` `List` will contain `address1` and `address2`.
-
-## OSGi Service Filters
-OSGi injection can be filtered:
-
-::java
-@Model(adaptables=SlingHttpServletRequest.class)
-public class MyModel {
-
-@Inject
-private PrintWriter out;
-
-@Inject
-@Named("log")
-private Logger logger;
-
-@Inject
-@Filter("(paths=/bin/something)")
-private List<Servlet> servlets;
-}
-
-## PostConstruct Methods
-The `@PostConstruct` annotation can be used to add methods which are invoked upon completion of all injections:
-
-::java
-@Model(adaptables=SlingHttpServletRequest.class)
-public class MyModel {
-
-@Inject
-private PrintWriter out;
-
-@Inject
-@Named("log")
-private Logger logger;
-
-@PostConstruct
-protected void sayHello() {
-logger.info("hello");
-}
-}
-
-`@PostConstruct` methods in a super class will be invoked first.
-
-## Via
-If the injection should be based on a JavaBean property of the adaptable, you can indicate this using the `@Via` annotation:
-
-::java
-@Model(adaptables=SlingHttpServletRequest.class)
-public interface MyModel {
-
-// will return request.getResource().adaptTo(ValueMap.class).get("propertyName", String.class)
-@Inject @Via("resource")
-String getPropertyName();
-}
-
-## Source
-If there is ambiguity where a given injection could be handled by more than one injector, the `@Source` annotation can be used to define which injector is responsible:
-
-::java
-@Model(adaptables=SlingHttpServletRequest.class)
-public interface MyModel {
-
-// Ensure that "resource" is retrived from the bindings, not a request attribute
-@Inject @Source("script-bindings")
-Resource getResource();
-}
-
-## Adaptations
-If the injected object does not match the desired type and the object implements the `Adaptable` interface, Sling Models will try to adapt it. This provides the ability to create rich object graphs. For example:
-
-::java
-@Model(adaptables=Resource.class)
-public interface MyModel {
-
-@Inject
-ImageModel getImage();
-}
-
-@Model(adaptables=Resource.class)
-public interface ImageModel {
-
-@Inject
-String getPath();
-}
-
-When a resource is adapted to `MyModel`, a child resource named `image` is automatically adapted to an instance of `ImageModel`.
-
-Constructor injection is supported for the adaptable itself. For example:
-
-::java
-@Model(adaptables=Resource.class)
-public class MyModel {
-
-public MyModel(Resource resource) {
-this.resource = resource;
-}
-
-private final Resource resource;
-
-@Inject
-private String propertyName;
-}
-
-## Sling Validation (since 1.2.0)
-<a name="validation">*See also [SLING-4161](https://issues.apache.org/jira/browse/SLING-4161)*</a>
-
-You can use the attribute `validation` on the Model annotation to call a validation service on the resource being used by the Sling model. That attribute supports three different values:
-
-Value |  Description |  Invalid validation model |  No validation model found |  Resource invalid according to model
------ | ------- | ------------- | -------------| ---------
-`DISABLED` (default) | don't validate the resource bound to the Model | Model instantiated | Model instantiated  | Model instantiated
-`REQUIRED` | enforce validation of the resource bound to the Model | Model not instantiated | Model not instantiated | Model not instantiated
-`OPTIONAL` | validate the resource bound to the Model (if a validation model is found) | Model not instantiated | Model instantiated | Model not instantiated
-
-In case the model is not instantiated an appropriate error message is logged (if `adaptTo()` is used) or an appropriate exception is thrown (if `ModelFactory.createModel()` is used).
-
-The only implementation for this Sling Models validation service is leveraging [Sling Validation](/documentation/bundles/validation.html) and is located in the bundle [org.apache.sling.models.validation-impl](https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/models/validation-impl/). Validation is only working on models which are adapted from either `Resource` or `SlingHttpServletRequest` and if the Sling Validation Bundle is deployed.
-
-# Custom Injectors
-
-To create a custom injector, simply implement the `org.apache.sling.models.spi.Injector` interface and register your implementation with the OSGi service registry. Please refer to the standard injectors in [Subversion](http://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/injectors/) for examples.
-
-Injectors are invoked in order of their service ranking, from lowest to highest. See the table below for the rankings of the standard injectors.
-
-# Annotation Reference
-`@Model`
-:   declares a model class or interface
-
-`@Inject`
-:   marks a field or method as injectable
-
-`@Named`
-:   declare a name for the injection (otherwise, defaults based on field or method name).
-
-`@Optional`
-:   marks a field or method injection as optional
-
-`@Source`
-:   explictly tie an injected field or method to a particular injector (by name). Can also be on other annotations.
-
-`@Filter`
-:   an OSGi service filter
-
-`@PostConstruct`
-:   methods to call upon model option creation (only for model classes)
-
-`@Via`
-:   use a JavaBean property of the adaptable as the source of the injection
-
-`@Default`
-:   set default values for a field or method
-
-`@Path`
-:   only used together with the resource-path injector to specify the path of a resource
-
-`@Exporters`/`@Exporter`/`@ExporterOptions`/`@ExporterOption`
-:   See Exporter Framework section below
-
-In addition all [injector-specific annotations](#injector-specific-annotations).
-
-# Available Injectors
-
-Title              |  Name (for `@Source`)   | Service Ranking     | Available Since (Implementation Version) | Description  | Applicable To (including using `@Via`) | Accepts Null Name? | Array Support | Parameterized Type Support
------------------  | ----------------------- | ------------------- | ---------------------------------------- | ------------ | -------------------------------------- | ------------------ | ------------- | --------------------------
-Script Bindings    | `script-bindings`       | 1000                | 1.0.0                                    | Lookup objects in the script bindings object by name. | A ServletRequest object which has the `Sling Bindings` attribute defined | no | no conversion is done | If a parameterized type is passed, the bindings value must be of a compatible type of the parameterized type.
-Value Map          | `valuemap`              | 2000                | 1.0.0                                    | Gets a property from a `ValueMap` by name. | Any object which is or can be adapted to a `ValueMap`| no | Primitive arrays wrapped/unwrapped as necessary. Wrapper object arrays are unwrapped/wrapped as necessary. | Parameterized `List` and `Collection` injection points are injected by getting an array of the component type and creating an unmodifiable `List` from the array.
-Child Resources    | `child-resources`       | 3000                | 1.0.0                                    | Gets a child resource by name. | `Resource` objects | no | none | if a parameterized type `List` or `Collection` is passed, a `List<Resource>` is returned (the contents of which may be adapted to the target type) filled with all child resources of the resource looked up by the given name.
-Request Attributes | `request-attributes`    | 4000                | 1.0.0                                    | Get a request attribute by name. | `ServletRequest` objects | no | no conversion is done | If a parameterized type is passed, the request attribute must be of a compatible type of the parameterized type.
-OSGi Services      | `osgi-services`         | 5000                | 1.0.0                                    | Lookup services based on class name. Since Sling Models Impl 1.2.8 ([SLING-5664](https://issues.apache.org/jira/browse/SLING-5664)) the service with the highest service ranking is returned. In case multiple services are returned, they are ordered descending by their service ranking (i.e. the one with the highest ranking first). | Any object | yes | yes | Parameterized `List` and `Collection` injection points are injected by getting an array of the services and creating an unmodifiable `List` from the array.
-Resource Path      | `resource-path`         | 2500                | 1.1.0                                    | Injects one or multiple resources. The resource paths are either given by `@Path` annotations, the element `path` or `paths` of the annotation `@ResourcePath` or by paths given through a resource property being referenced by either `@Named` or element `name` of the annotation `@ResourcePath`. | `Resource` or `SlingHttpServletRequest` objects | yes | yes | none
-Self               | `self`                  | `Integer.MAX_VALUE` | 1.1.0                                    | Injects the adaptable object itself (if the class of the field matches or is a supertype). If the @Self annotation is present it is tried to adapt the adaptable to the field type.  | Any object | yes | none | none
-Sling Object       | `sling-object`          | `Integer.MAX_VALUE` | 1.1.0                                    | Injects commonly used sling objects if the field matches with the class: request, response, resource resolver, current resource, SlingScriptHelper. This works only if the adaptable can get the according information, i.e. all objects are available via `SlingHttpServletRequest` while `ResourceResolver` can only resolve the `ResourceResolver` object and nothing else. A discussion around this limitation can be found at [SLING-4083](https://issues.apache.org/jira/browse/SLING-4083). Also `Resource`s can only be injected if the according injector-specific annotation is used (`@SlingObject`). | `Resource`, `ResourceResolver` or `SlingHttpServletRequest` objects (not all objects can be resolved by all adaptables).  | yes | none | none
-
-# Injector-specific Annotations
-
-*Introduced with [SLING-3499](https://issues.apache.org/jira/browse/SLING-3499) in Sling Models Impl 1.0.6*
-
-Sometimes it is desirable to use customized annotations which aggregate the standard annotations described above. This will generally have
-the following advantages over using the standard annotations:
-
-* Less code to write (only one annotation is necessary in most of the cases)
-* More robust (in case of name collisions among the different injectors, you make sure that the right injector is used)
-* Better IDE support (because the annotations provide elements for each configuration which is available for that specific injector, i.e. `filter` only for OSGi services)
-
-The follow annotations are provided which are tied to specific injectors:
-
-Annotation          | Supported Optional Elements    | Injector | Description
------------------   | ------------------------------ |-------------------------
-`@ScriptVariable`   | `injectionStrategy` and `name`          | `script-bindings` | Injects the script variable defined via [Sling Bindings](https://cwiki.apache.org/confluence/display/SLING/Scripting+variables). If `name` is not set the name is derived from the method/field name.
-`@ValueMapValue`    | `injectionStrategy`, `name` and `via`   | `valuemap` | Injects a `ValueMap` value. If `via` is not set, it will automatically take `resource` if the adaptable is the `SlingHttpServletRequest`. If `name` is not set the name is derived from the method/field name.
-`@ChildResource`    | `injectionStrategy`, `name` and `via`   | `child-resources` | Injects a child resource by name. If `via` is not set, it will automatically take `resource` if the adaptable is the `SlingHttpServletRequest`. If `name` is not set the name is derived from the method/field name.
-`@RequestAttribute` | `injectionStrategy`, `name` and `via`   | `request-attributes` | Injects a request attribute by name. If `name` is not set the name is derived from the method/field name.
-`@ResourcePath`     | `injectionStrategy`, `path`, and `name` | `resource-path` | Injects a resource either by path or by reading a property with the given name.
-`@OSGiService`      | `injectionStrategy`, `filter`           | `osgi-services` | Injects an OSGi service by type. The `filter` can be used give an OSGi service filter.
-`@Self`             | `injectionStrategy`                     | `self` | Injects the adaptable itself. If the field type does not match with the adaptable it is tried to adapt the adaptable to the requested type.
-`@SlingObject`      | `injectionStrategy`                     | `sling-object` |Injects commonly used sling objects if the field matches with the class: request, response, resource resolver, current resource, SlingScriptHelper
-
-## Hints
-
-Those annotations replace `@Via`, `@Filter`, `@Named`, `@Optional`, `@Required`, `@Source` and `@Inject`.
-Instead of using the deprecated annotation element `optional` you should rather use `injectionStrategy` with the values `DEFAULT`, `OPTIONAL` or `REQUIRED` (see also [SLING-4155](https://issues.apache.org/jira/browse/SLING-4155)).
-`@Default` may still be used in addition to the injector-specific annotation to set default values. All elements given above are optional.
-
-## Custom Annotations
-
-To create a custom annotation, implement the `org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory` interface.
-This interface may be implemented by the same class as implements an injector, but this is not strictly necessary. Please refer to the
-injectors in [Subversion](http://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/injectors/) for examples.
-
-# Specifying an Alternate Adapter Class (since 1.1.0)
-
-By default, each model class is registered using its own implementation class as adapter. If the class has additional interfaces this is not relevant.
-
-The `@Model` annotations provides an optional `adapters` attribute which allows specifying under which type(s) the model
-implementation should be registered in the Models Adapter Factory. Prior to *Sling Models Impl 1.3.10* only the given class names
-are used as adapter classes, since 1.3.10 the implementation class is always being registered implicitly as adapter as well (see [SLING-6658](https://issues.apache.org/jira/browse/SLING-6658)).
-With this attribute it is possible to register the model
-to one (or multiple) interfaces, or a superclass. This allows separating the model interface from the implementation, which
-makes it easier to provide mock implementations for unit tests as well.
-
-Example:
-
-::java
-@Model(adaptables = Resource.class, adapters = MyService.class)
-public class MyModel implements MyService {
-// injects fields and implements the MyService methods
-}
-
-In this example a `Resource` can be adapted to a `MyService` interface, and the Sling Models implementation instantiates a
-`MyModel` class for this.
-
-It is possible to have multiple models implementing the same interface. By default Sling Models will just take the first one
-ordered alphabetically by the class name. Applications can provide an OSGi service implementing the `ImplementationPicker`
-SPI interface which could use context to determine which implementation can be chosen, e.g. depending an a tenant or
-content path context. If multiple implementations of the `ImplementationPicker` interface are present, they are queried
-one after another in order of their service ranking property, the first one that picks an implementation wins.
-
-# Associating a Model Class with a Resource Type (since 1.3.0)
-
-The `@Model` annotation provides an optional `resourceType` attribute which allows for model classes to be associated with one or
-more resource types. This is used in three different ways.
-
-In the case of multiple model classes implementing the same interface, the class with the "closest" resource type will be used when
-adapting to the interface.
-
-The `ModelFactory` service interface has methods `Object getModelFromResource(Resource)` and `Object getModelFromRequest(SlingHttpServletRequest)` which will dynamically determine the adapter class based on the `Resource` using its type. In the case of the `SlingHttpServletRequest` method, it uses the request's `Resource` object (i.e. by calling `request.getResource()`)
-
-The resource type is also used as part of the Exporter framework (see next section).
-
-# Exporter Framework (since 1.3.0)
-
-Sling Models objects can be exported to arbitrary Java objects through the Sling Models Exporter framework. Model objects can be
-programatically exported by calling the `ModelFactory` method `exportModel()`. This method takes as its arguments:
-
-* the model object
-* an exporter name
-* a target class
-* a map of options
-
-The exact semantics of the exporting will be determined by an implementation of the `ModelExporter` service interface. Sling Models
-currently includes a single exporter, using the Jackson framework, which is capable of serializing models as JSON or transforming them to `java.util.Map` objects.
-
-In addition, model objects can have servlets automatically registered for their resource type (if it is set) using the `@Exporter` annotation. For example, a model class with the annotation
-
-::java
-@Model(adaptable = Resource.class, resourceType = "myco/components/foo")
-@Exporter(name = "jackson", extensions = "json")
-
-results in the registration of a servlet with the resource type and extension specified and a selector of 'model' (overridable
-through the `@Exporter` annotation's `selector` attribute). When this servlet is invoked, the `Resource` will be adapted to the
-model, exported as a `java.lang.String` (via the named Exporter) and then returned to the client.
-
-
-# Registration of Sling Models classes via bnd plugin
-
-With the Sling Models bnd plugin it is possible to automatically generated the necessary bundle header to register the Sling Models classes contained in the Maven bundle project - either with maven-bundle-plugin or with bnd-maven-plugin. By default the plugin generates a `Sling-Model-Classes` header (only compatible with Sling Models Impl since version 1.3.4, see [SLING-6308](https://issues.apache.org/jira/browse/SLING-6308)).
-
-Example configuration:
-
-#!xml
-<plugin>
-<groupId>org.apache.felix</groupId>
-<artifactId>maven-bundle-plugin</artifactId>
-<extensions>true</extensions>
-<configuration>
-<instructions>
-<_plugin>org.apache.sling.bnd.models.ModelsScannerPlugin</_plugin>
-</instructions>
-</configuration>
-<dependencies>
-<dependency>
-<groupId>org.apache.sling</groupId>
-<artifactId>org.apache.sling.bnd.models</artifactId>
-<version>1.0.0</version>
-</dependency>
-</dependencies>
-</plugin>
-
-If a `Sling-Model-Packages` or `Sling-Model-Classes` was already manually defined for the bundle the bnd plugin does nothing. So if you want to migrate an existing project to use this plugin remove the existing header definitions.
-
-If you want to generate a bundle header compliant with Sling Models < 1.3.4 (i.e. `Sling-Model-Packages`) you need to specify the attribute `generatePackagesHeader=true`. An example configuration looks like this
-
-#!xml
-<configuration>
-<instructions>
-<_plugin>org.apache.sling.bnd.models.ModelsScannerPlugin;generatePackagesHeader=true</_plugin>
-</instructions>
-</configuration>

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/nosql-resource-providers.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/nosql-resource-providers.md b/content/documentation/bundles/nosql-resource-providers.md
deleted file mode 100644
index 8e765f8..0000000
--- a/content/documentation/bundles/nosql-resource-providers.md
+++ /dev/null
@@ -1,77 +0,0 @@
-title=NoSQL Resource Providers (org.apache.sling.nosql)		
-type=page
-status=published
-~~~~~~
-[TOC]
-
-
-## Introduction
-
-Apache Sling provides resource-based access to NoSQL document stores like MongoDB and Couchbase via its Resource API using the NoSQL resource providers. This is possible in combination with a JCR-based repository (e.g. only on a special path in the resource tree), or a only persistence for the whole resource tree depending on the resource provider configuration.
-
-The general concept of retrieving from and storing resource data in NoSQL document stores is the same independently from the NoSQL product used:
-
-* For each resource a structured document is stored (usually in JSON format)
-* The path of the resource is the key of the document
-* The properties of the resource are stored in a map-like form in the document
-* Special mapping applies to convert special data types like numbers, dates and binary data to a format that can safely stored in the document event if the format is not natively supported (e.g. converting dates to strings and binary to base64)
-* The Sling CRUD support defines a simple transaction model with buffering all changes in memory until a call to "commit()" persists them to the NoSQL database
-* Iterating over child resources and deleting a resource including all descendants requires some basic query capabilities in the NoSQL store
-
-All these general features are implemented in an abstraction layer called ["Apache Sling NoSQL Generic Resource Provider"](https://github.com/apache/sling/tree/trunk/contrib/nosql/generic), which is used by the resource provider implementations per NoSQL product. Those implementation than only implement a thin "adapter" which maps the resource data to the NoSQL product-specific storage formats and query capabilities, without having to care about all the complex resource provider handling.
-
-This generic resource provider also contains a set of integration tests covering the most relevant resource read- and write usecases which can be used to test a NoSQL product-specific  resource provider implementation and the underlying NoSQL database.
-
-
-## MongoDB NoSQL Resource Provider
-
-Resource provider for [MongoDB](https://www.mongodb.org/) NoSQL database.
-
-Tested with MongoDB Server 3.0.6 and MongoDB Java Driver 3.1.1.
-
-Configuration example:
-
-org.apache.sling.nosql.mongodb.resourceprovider.MongoDBNoSqlResourceProviderFactory.factory.config-default
-provider.roots=["/"]
-connectionString="localhost:27017"
-database="sling"
-collection="resources"
-
-See Apache Felix OSGi console for detailed documentation of the parameters. All resource data is stored in one Collection of one MongoDB database. Each resource is stored as a document with the path stored in an "_id" property.
-
-Source code: [Apache Sling NoSQL MongoDB Resource Provider](https://github.com/apache/sling/tree/trunk/contrib/nosql/mongodb-resourceprovider)
-
-Please note: there is an [alternative MongoDB resource provider implementation](https://github.com/apache/sling/tree/trunk/contrib/extensions/mongodb) from 2012 which has less features, a slightly different concept for storing resource data (in multiple collections), and it does not use the "Generic Resource Provider".
-
-
-## Couchbase NoSQL Resource Provider
-
-Resource provider for [Couchbase](http://www.couchbase.com/) NoSQL database.
-
-Tested with Couchbase Server 4.0.0 and Couchbase Java SDK 2.2.4. Please note: Couchbase 4 or higher is mandatory because N1QL support is required.
-
-Configuration example:
-
-org.apache.sling.nosql.couchbase.resourceprovider.CouchbaseNoSqlResourceProviderFactory.factory.config-default
-provider.roots=["/"]
-
-org.apache.sling.nosql.couchbase.client.CouchbaseClient.factory.config-default
-clientId="sling-resourceprovider-couchbase"
-couchbaseHosts="localhost:8091"
-bucketName="sling"
-enabled=B"true"
-
-See Apache Felix OSGi console for detailed documentation of the parameters. All resource data is stored in one Couchbase bucket. Each resource is stored as a document with the path as key.
-
-Source code: [Apache Sling NoSQL Couchbase Resource Provider](https://github.com/apache/sling/tree/trunk/contrib/nosql/couchbase-resourceprovider)
-
-The resource provider requires and additional bundle [Apache Sling NoSQL Couchbase Client](https://github.com/apache/sling/tree/trunk/contrib/nosql/couchbase-client) which wraps the Couchbase Java SDK (which itself is not an OSGi bundle), and ensures that the Couchbase Environment instance is used as a singleton in the VM.
-
-
-## Example Launchpad
-
-An example launchpad is provided that contains the NoSQL resource providers configured as main resource provider at `/`.
-
-Source code: [Apache Sling NoSQL Launchpad](https://github.com/apache/sling/tree/trunk/contrib/nosql/launchpad)
-
-See README for details how to start the launchpad.

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/org-apache-sling-junit-bundles.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/org-apache-sling-junit-bundles.md b/content/documentation/bundles/org-apache-sling-junit-bundles.md
deleted file mode 100644
index 8eae937..0000000
--- a/content/documentation/bundles/org-apache-sling-junit-bundles.md
+++ /dev/null
@@ -1,213 +0,0 @@
-title=JUnit server-side testing support bundles		
-type=page
-status=published
-~~~~~~
-
-This is an overview of the Sling bundles that provide support for server-side JUnit tests.
-
-The Maven modules below [`testing/samples`](https://svn.apache.org/repos/asf/sling/trunk/testing/samples)
-provide different examples including HTTP-based and server-side teleported tests in a
-bundle module, running against a full Sling instance setup in the same Maven module.
-
-## org.apache.sling.junit.core: server-side JUnit tests support
-This bundle provides a `JUnitServlet` that runs JUnit tests found in bundles.
-
-<div class="warning">
-Note that the JUnitServlet does not require authentication, so it would allow any client to run tests. The servlet can be disabled by configuration if needed, but in general the `/system` path should not be accessible to website visitors anyway.
-</div>
-
-<div class="note">
-For tighter integration with Sling, the alternate `SlingJUnitServlet` is registered with the `sling/junit/testing` resource type and `.junit` selector, if the bundle is running in a Sling system. Using this servlet instead of the plain JUnitServlet also allows Sling authentication to be used for running the tests, and the standard Sling request processing is used, including servlet filters for example.
-</div>
-
-To make tests available to that servlet, the bundle that contains them must point to them
-with a `Sling-Test-Regexp` bundle header that defines a regular expression that matches
-the test class names, like for example:
-
-Sling-Test-Regexp=com.example.*ServerSideTest
-
-### The TeleporterRule
-
-The `TeleporterRule` supplied by this bundle (since V1.0.12) makes it easy to write such tests, as it takes care of
-all the mechanics of
-
-1. creating the test bundle including all necessary classes for execution
-1. adding the `Sling-Test-Regexp` header to the bundles manifest
-1. deploy the bundle on an Sling server (with the help of the customizer)
-1. calling the `JUnitServlet` from the client-side and report back the results
-1. uninstalling the test bundle
-
-Most of these steps are done on the client-side by the org.apache.sling.junit.teleporter module (see below).
-
-Using this rule the server-side tests can be mixed with other tests in the source code if that's convenient, it just
-requires the `junit.core` and `junit.teleporter` modules described on this page to create such tests.
-
-Here's a basic example of a server-side test that accesses OSGi services:
-
-public class BasicTeleporterTest {
-
-@Rule
-public final TeleporterRule teleporter = TeleporterRule.forClass(getClass(), "Launchpad");
-
-@Test
-public void testConfigAdmin() throws IOException {
-final String pid = "TEST_" + getClass().getName() + UUID.randomUUID();
-
-final ConfigurationAdmin ca = teleporter.getService(ConfigurationAdmin.class);
-assertNotNull("Teleporter should provide a ConfigurationAdmin", ca);
-
-final Configuration cfg = ca.getConfiguration(pid);
-assertNotNull("Expecting to get a Configuration", cfg);
-assertEquals("Expecting the correct pid", pid, cfg.getPid());
-}
-}
-
-That's all there is to it, the `TeleporterRule` takes care of the rest.
-
-The test bundle being build and deployed through this rule usually happens quickly as the temporary bundle is
-very small. Both the client-side and server-side parts of the test can be debugged easily
-with the appropriate IDE settings.
-
-The `Teleporter.getService` method takes an optional OSGi LDAP filter for service
-selection, like for example:
-
-final StringTransformer t = teleporter.getService(StringTransformer.class, "(mode=uppercase)");
-
-The method waits for the service to be available or until the timeout elapsed ([SLING-6031](https://issues.apache.org/jira/browse/SLING-6031)).
-
-And starting with version 1.0.4 of the `org.apache.sling.junit.teleporter` bundle, you can specify
-resources to embed in the test bundle, as in this example:
-
-@Rule
-public final TeleporterRule teleporter =
-TeleporterRule.forClass(getClass(), "Launchpad")
-.withResources("/foo/", "/some/other/resource.txt");
-
-which will embed all resources found under `/foo` as well as the `resource.txt` in the test
-bundle, making them available to the server-side tests.
-
-This teleporter mechanism is used in our integration tests, search for `TeleporterRule` in there
-for examples or look at the
-[`integrationtest.teleporter`]( https://svn.apache.org/repos/asf/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/teleporter)
-package.
-
-As I write this the teleporter mechanism is quite new, I suspect there might be some weird interactions
-between things like `@AfterClass`, custom test runners and this mechanism but it works well to a growing
-number of tests in our `launchpad/integration-tests` module. Moving to JUnit `Rules` as much as possible,
-and combining them using JUnit's `RuleChain`, should help work around such limitations if they arise.
-
-### More details on the JUnitServlet
-To try the JUnitServlet interactively, you can install a
-bundle that contains tests and a `Sling-Test-Regexp` bundle header that points to them, as
-described above. Or use the `TeleporterRule` and set a breakpoint in the tests execution, when the test bundle in
-installed and listed by the test servlet.
-
-To list the available tests, open `/system/sling/junit/` in your browser. The servlet shows available tests and allows
-you to execute them via a POST request.
-
-Adding a path allows you to select a specific subset of tests, as in
-`/system/sling/junit/org.apache.sling.junit.remote.html`
-
-The JUnitServlet provides various output formats, including in particular JSON, see
-`/system/sling/junit/.json` for example.
-
-## org.apache.sling.junit.teleporter: client-side TeleporterRule support
-This module provides the `ClientSideTeleporter` which the `TeleporterRule` uses to package the server-side tests
-in bundles that's installed temporarily on the test server. Almost all steps described above in [The TeleporterRule](#the-teleporterrule) are being performed by this module.
-
-This module is not a bundle, as it's used on the client only, as a dependency when running the tests.
-
-### TeleporterRule.Customizer ###
-A `TeleporterRule.Customizer` is used to setup the `ClientSideTeleporter`. That customizer is instantiated dynamically
-based on a String passed to the `TeleporterRule.forClass` method as 2nd parameter. As an example from our `launchpad/integration-tests` module, this call
-
-TeleporterRule.forClass(getClass(), "Launchpad:author");
-
-causes the `TeleporterRule` to use the `org.apache.sling.junit.teleporter.customizers.LaunchpadCustomizer` class
-to setup the `ClientSideTeleporter`, and passes the "author" string to it as an option. Although our current `LaunchpadCustomizer`
-does not use this options string, it is meant to select a specific server (of family of servers) to run the tests on.
-
-The options string can also use a full class name instead of the `Launchpad` short form used here, if needed. The part
-of that string that follows the first colon is passed to the customizer as is.
-
-Using Strings for customization reduces the coupling with the `junit.core` bundle, as it does not need to know those
-classes which are used only on the client side when running tests.
-
-If `TeleporterRule.forClass(getClass())` is used (the method without an additional 2nd parameter) the default customizer is used ([SLING-5677](https://issues.apache.org/jira/browse/SLING-5677), since version 1.0.8).
-
-The following customizers are currently used in Sling
-
-### Default Customizer ###
-
-*[DefaultPropertyBasedCustomizer.java](https://svn.apache.org/repos/asf/sling/trunk/testing/junit/teleporter/src/main/java/org/apache/sling/testing/teleporter/client/DefaultPropertyBasedCustomizer.java)* is used by default when no other customizer is referenced in `TeleporterRule.forClass(getClass())`. It relies on the following system properties:
-
-| Property Name                | Description                                     | Mandatory to set | Default value | Since version | Related JIRA |
-|------------------------------|-------------------------------------------------|------------------| ----- | ---| --- |
-| `ClientSideTeleporter.baseUrl` | base url of the Sling Server to which to deploy. | yes | - | 1.0.8 | [SLING-5677](https://issues.apache.org/jira/browse/SLING-5677) |
-| `ClientSideTeleporter.includeDependencyPrefixes` | comma-separated list of package prefixes for classes referenced from the IT. Only the classes having one of the given package prefix are included in the bundle being deployed to the given Sling instance together with the IT class itself.  They are only included though in case they are referenced! If this is not set, no referenced classes will be included. | no | - | 1.0.8 | [SLING-5677](https://issues.apache.org/jira/browse/SLING-5677) |
-| `ClientSideTeleporter.excludeDependencyPrefixes` | comma-separated list of package prefixes for classes referenced from the IT. Classes having one of the given package prefix will not be included in the bundle being deployed to the given Sling instance together with the IT class itself. This takes precedence over the `ClientSideTeleporter.includeDependencyPrefixes`. | no | - | 1.0.8 | [SLING-5677](https://issues.apache.org/jira/browse/SLING-5677) |
-| `ClientSideTeleporter.embedClasses` | comma-separated list of fully qualified class names which should be embedded in the test bundle. Use this only for classes which are not detected automatically by the Maven Dependency Analyzer but still should be embedded in the test bundle | no | - | 1.0.8 | [SLING-5677](https://issues.apache.org/jira/browse/SLING-5677) |
-| `ClientSideTeleporter.embedClassesDirectories` | comma-separated list directories containing class files which should be embedded in the test bundle. Use this only for classes which are not detected automatically by the Maven Dependency Analyzer but still should be embedded in the test bundle | no | - | 1.0.12 | [SLING-6551](https://issues.apache.org/jira/browse/SLING-6551) |
-| `ClientSideTeleporter.additionalBundleHeaders` | comma-separated list of entries in the format `<name>:<value>` which should be added to the test bundle as additional headers | no | - | 1.0.12 | [SLING-6558](https://issues.apache.org/jira/browse/SLING-6558) |
-| `ClientSideTeleporter.testReadyTimeoutSeconds` | how long to wait for our test to be ready on the server-side in seconds, after installing the test bundle. | no | `12` | 1.0.8 | [SLING-5677](https://issues.apache.org/jira/browse/SLING-5677) |
-| `ClientSideTeleporter.serverUsername` | the username with which to send requests to the Sling server. | no | `admin` | 1.0.8 | [SLING-5677](https://issues.apache.org/jira/browse/SLING-5677) |
-| `ClientSideTeleporter.serverPassword` | the password with which to send requests to the Sling server. | no | `admin` | 1.0.8 | [SLING-5677](https://issues.apache.org/jira/browse/SLING-5677) |
-| `ClientSideTeleporter.enableLogging` | set to `true` to log the tasks being performed by the teleporter. Useful for debugging. | no | `false` | 1.0.12 | [SLING-6546](https://issues.apache.org/jira/browse/SLING-6546) |
-| `ClientSideTeleporter.preventToUninstallBundle` | set to `true` to not automatically uninstall the test bundle after test execution. Useful for debugging. | no | `false` | 1.0.12 | [SLING-6546](https://issues.apache.org/jira/browse/SLING-6546) |
-| `ClientSideTeleporter.testBundleDirectory` | if set the test bundles are being persisted (before being installed) within the given directory name. If the directory does not exist, it will be automatically created. Useful for debugging. Recommended value `${project.build.directory}/test-bundles`. | no | - | 1.0.12 | [SLING-6546](https://issues.apache.org/jira/browse/SLING-6546) |
-
-
-The provisioning of an appropriate instance can be done with the [slingstart-maven-plugin](/documentation/development/slingstart.html). An example for that is given at [`testing/samples/module-with-it`](https://svn.apache.org/viewvc/sling/trunk/testing/samples/module-with-it). Since `slingstart-maven-plugin` 1.5.0 it is possible to bootstrap a Sling Server from a `model.txt` below `src/test/provisioning` independent of the packaging (see [SLING-6068](https://issues.apache.org/jira/browse/SLING-6068)).
-
-#### LaunchpadCustomizer ####
-The *[`LaunchpadCustomizer.java`](https://svn.apache.org/repos/asf/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/junit/teleporter/customizers/LaunchpadCustomizer.java)* only verifies that a Sling instance is ready at a given port and configures the `ClientSideTeleporter` to deploy to `http://localhost:8888` with the credentials `admin`:`admin`. `LaunchpadCustomizer` uses the `HttpTestBase` therefore some parameters are customizable through system properties. There is no bootstrapping of an instance done here, so this must be done separately!
-
-#### BWIT_TeleporterCustomizer ####
-The *[`BWIT_TeleporterCustomizer.java`](http://svn.apache.org/viewvc/sling/trunk/testing/samples/bundle-with-it/src/test/java/org/apache/sling/junit/teleporter/customizers/BWIT_TeleporterCustomizer.java)* relies on `SlingTestBase` to set the server's base url and credentials. Additionally the test bundle is adjusted so that the API is not included in it (but rather referenced from another bundle). The bootstrapping of the Sling instance is tweaked through system properties which are desribed [here](http://labs.6dglobal.com/blog/2013-06-05/creating-integration-tests-apache-sling/) and implicitly done by the customizer itself.
-
-Those should give you an overview on what can be done with a customizer and decide whether you need to write your own one or using the default customizer is just enough.
-
-## org.apache.sling.junit.healthcheck: run JUnit tests as Sling Health Checks
-This bundle allows JUnit tests to run as [Sling Health Checks](/documentation/bundles/sling-health-check-tool.html),
-which can be useful when defining smoke tests for example, allowing them to be used both at build time and run time.
-
-See the `JUnitHealthCheck` class for details.
-
-## org.apache.sling.junit.scriptable: scriptable server-side tests
-This bundle allows Sling scripts to be executed from the `JUnitServlet` as JUnit tests, as follows:
-
-* A node that has the `sling:Test` mixin is a scriptable test node.
-* For security reasons, scriptable test nodes are only executed as tests if they are found under `/libs` or `/apps`, or more precisely under a path that's part of Sling's `ResourceResolver` search path.
-* To execute a test, the scriptable tests provider makes an HTTP request to the test node's path, with a `.test.txt` selector and extension, and expects the output to contain only the string `TEST_PASSED`. Empty lines and comment lines starting with a hash sign (#) are ignored in the output, and other lines are reported as failures.
-
-Here's a minimal example that sets up and executes a scriptable test:
-
-$ curl -u admin:admin -Fjcr:primaryNodeType=sling:Folder -Fsling:resourceType=foo -Fjcr:mixinTypes=sling:Test http://localhost:8080/apps/foo
-...
-$ echo TEST_PASSED > /tmp/test.txt.esp ; curl -u admin:admin -T/tmp/test.txt.esp http://localhost:8080/apps/foo/test.txt.esp
-
-At this point, foo.test.txt is what the scriptable test framework will request, and that outputs just TEST_PASSED:
-
-$ curl -u admin:admin http://localhost:8080/apps/foo.test.txt
-TEST_PASSED
-
-And a POST to the JUnit servlet returns information on the test's execution:
-
-curl -u admin:admin -XPOST http://localhost:8080/system/sling/junit/org.apache.sling.junit.scriptable.ScriptableTestsProvider.json
-[{
-"INFO_TYPE": "test",
-"description": "verifyContent[0](org.apache.sling.junit.scriptable.TestAllPaths)",
-"test_metadata": {
-"test_execution_time_msec": 2
-}
-}
-]
-
-Test failures would be included in this JSON representation - you can test that by modifying the script to fail and making the
-same request again.
-
-## org.apache.sling.junit.remote: obsolete
-
-The `org.apache.sling.junit.remote` bundle provides utilities to run server-side JUnit tests,
-but using the newer `TeleporterRule` described above is much simpler. As a result, this bundle
-should only be needed for existing tests that were written using its mechanisms.

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/osgi-installer.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/osgi-installer.md b/content/documentation/bundles/osgi-installer.md
deleted file mode 100644
index 26a06ab..0000000
--- a/content/documentation/bundles/osgi-installer.md
+++ /dev/null
@@ -1,96 +0,0 @@
-title=OSGi Installer		
-type=page
-status=published
-~~~~~~
-
-# Overview
-
-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.
-
-![Apache Sling OSGI Installer Diagram](/documentation/bundles/Slide14.jpg)
-
-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.
-
-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.
-
-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.
-
-It's possible to add own providers, transformers and installer factories to support custom scenarios.
-
-## API
-The installer API is defined by the `org.apache.sling.installer.api` package
-of the [org.apache.sling.installer.core](http://svn.apache.org/repos/asf/sling/trunk/installer/core/) module. The main
-interface is the `OsgiInstaller` with which installable resources can be registered.
-
-The [installer integration tests][1] module can be useful to understand the details of how the installer works.
-
-## Artifact Handling
-
-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.
-
-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!
-
-## Bundle Handling
-
-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!
-
-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.
-
-When all artifacts have been processed (either install, update or delete), a package refresh is automatically called.
-
-### Versions and Snapshots
-
-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.
-
-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.
-
-## Start Level Handling
-
-The OSGi installer supports handling of start levels for bundles. If the provided bundle artifacts contain a start level information the bundle is installed with that start level, otherwise the default start level is used.
-Therefore, for initial provisioning to make use of start levels, the OSGi installer and the corresponding provider (see below) should run at a very low start level, probably at 1. This ensure that the bundles with a start level are started with respect to the start level.
-
-When an update of bundles is performed through the installer, by default the installer stays in the current start level and updates the bundles. However, if bundles at low start levels are affected, this might result in a lot of churn going on. Therefore, the OSGi installer can be configured to use a more intelligent start level handling:
-
-* If the framework property "sling.installer.switchstartlevel" is set to "true" and
-* there is no asynchronous install task in the list of tasks to perform, then
-* the start level is set to (the lowest level of the bundles to be updated - 1) - if the start level is lower than the level of the installer itself, the start level of the installer is used.
-* the bundles are updated/installed
-* the start level is increased to the previous level
-
-## Plugins
-
-### Factories
-
-An installer factory provides support for a specific artifact type, like a configuration or a deployment package etc.
-
-* [Configuration Installer Factory](/documentation/bundles/configuration-installer-factory.html)
-* [Subsystem Installer Factory](/documentation/bundles/subsystem-installer-factory.html)
-
-### Providers
-
-A provider provides artifacts, e.g. by scanning a directory or a database etc.
-
-* [File Installer Provider](/documentation/bundles/file-installer-provider.html)
-* [JCR Installer Provider](/documentation/bundles/jcr-installer-provider.html)
-
-## Health Check
-
-The OSGi installer provides a [Sling Health Check](/documentation/bundles/sling-health-check-tool.html) which validates that the processed OSGi installer resources have the correct state ([SLING-5888](https://issues.apache.org/jira/browse/SLING-5888)).
-By default it will only check resources with a URL prefix `jcrinstall:/apps/`, so only the resources being provided through the [JCR Installer Provider](/documentation/bundles/jcr-installer-provider.html) initially located below the repository resource `/apps/` are considered.
-The health check will fail in the following cases:
-
-### Bundles Installation Failure
-
-The checked bundle was not installed because it has been installed in a newer version through some other means (e.g. manually through the Felix Web Console or by another provider. For further details please review the OSGi Installer console at `/system/console/osgi-installer` and check for all bundles with the given symbolic name (=OSGi installers resource id) and the according URL.
-
-### Configuration Installation Failure
-
-The checked configuration was not installed because it has either been overwritten manually in the Felix Web Console or is installed by some non-checked provider (which has a higher priority). To revert manually overwritten configurations just go to `/system/console/configMgr` and delete the according configuration. That way the OSGi installer should automatically create a new configuration for the same PID based on the configuration provided by some provider with the highest prio. In case another non-checked provider has provided already a configuration you can see from where it has been installed by looking at the OSGi Installer console at `/system/console/osgi-installer` and look for all configurations with the given PID.
-
-

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.md b/content/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.md
deleted file mode 100644
index 5b9bc45..0000000
--- a/content/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.md
+++ /dev/null
@@ -1,99 +0,0 @@
-title=Output Rewriting Pipelines (org.apache.sling.rewriter)		
-type=page
-status=published
-~~~~~~
-
-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 further transformation is to use XSLT to transform rendered XML to some output format like HTML or XSL:FO for generating PDF.
-
-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 *Processor* 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.
-
-## SAX Pipelines
-
-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.
-
-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.
-
-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.
-
-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.
-
-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. An HTML serializer collects all events and serializes the output.
-
-The pipelines can be configured in the repository as a child node of */apps/APPNAME/config/rewriter* (or */libs/APPNAME/config/rewriter*). (In fact the configured search paths of the resource resolver are observed.) Each node can have the following properties:
-
-* generatorType - the type of the generator (required)
-* transformerTypes (multi value string) - the types of the transformers (optional)
-* serializerType - the type of the serializer (required)
-* paths (multi value string) - the paths this pipeline should run on (content paths)
-* contentTypes (multi value string) - the content types this pipeline should be used for (optional)
-* extensions (multi value string) - the extensions this pipeline should be used for (optional)
-* resourceTypes (multi value string) - the resource types this pipeline should be used for (optional)
-* unwrapResources (boolean) - check resource types of unwrapped resources as well (optional, since 1.1.0)
-* selectors (multi value string) - a set of selectors the pipeline should be used for (optional, since 1.1.0)
-* 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)
-
-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.
-
-If a component needs a configuration, the configuration is stored in a child node which name is *{componentType}-{name}*, e.g. to configure the HTML generator (named *html-generator*), the node should have the name *generator-html-generator*. In the case that the pipeline contains the same transformer several times, the configuration child node should have the formant *{componentType}-{index}* 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 *transformer-1* (for the first xslt), *transformer-html-cleaner*, *transformer-3* (for the second xslt), and *transformer-link-checker*.
-
-
-### Default Pipeline
-
-The default pipeline is configured for the *text/html* mime type and the *html* extensions and consists of the *html-generator* as the generator, and the *html-serializer* 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.
-
-## Implementing Pipeline Components
-
-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:
-
-::java
-@scr.component metatype="no"
-@scr.service interface="TransformerFactory"
-@scr.property value="pipeline.type" value="validator"
-
-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 *pipeline.type* property. The pipeline configuration in the repository just references this unique name (like validator).
-
-## Extending the Pipeline
-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.
-
-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:
-
-::java
-@scr.component metatype="no"
-@scr.service interface="TransformerFactory"
-@scr.property name="pipeline.mode" value="global"
-@scr.property name="service.ranking" value="RANKING" type="Integer"
-
-*RANKING* 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.
-
-The *TransformerFactory* 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.
-
-Since the transformer carries information about the current response it is not advisable to reuse the same transformer instance among multiple calls of `TransformerFactory.createTransformer`.
-
-
-## Implementing a Processor
-
-A processor must conform to the Java interface *org.apache.sling.rewriter.Processor*. It gets initializd (method *init*) with the *ProcessingContext*. This context contains all necessary information for the current request (especially the output writer to write the rewritten content to).
-The *getWriter* method should return a writer where the output is written to. When the output is written or an error occured *finished* is called.
-
-Like the pipeline components a processor is generated by a factory which has to be registered as a service factory, like this:
-
-::java
-@scr.component metatype="no"
-@scr.service interface="ProcessorFactory"
-@scr.property value="pipeline.type" value="uniqueName"
-
-## Configuring a Processor
-
-The processors can be configured in the repository as a child node of */apps/APPNAME/config/rewriter* (or libs or any configured search path). Each node can have the following properties:
-
-* 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 *uniqueName*)
-* paths (multi value string) - the paths this processor should run on (content paths)
-* contentTypes (multi value string) - the content types this processor should be used for (optional)
-* extensions (multi value string) - the extensions this processor should be used for (optional)
-* resourceTypes (multi value string) - the resource types this processor should be used for (optional)
-* unwrapResources (boolean) - check resource types of unwrapped resources as well (optional, since 1.1.0)
-* selectors (multi value string) - a set of selectors the pipeline should be used for (optional, since 1.1.0)
-* 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)

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/rendering-content-default-get-servlets.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/rendering-content-default-get-servlets.md b/content/documentation/bundles/rendering-content-default-get-servlets.md
deleted file mode 100644
index ebed222..0000000
--- a/content/documentation/bundles/rendering-content-default-get-servlets.md
+++ /dev/null
@@ -1,76 +0,0 @@
-title=Rendering Content - Default GET Servlets		
-type=page
-status=published
-~~~~~~
-
-[TOC]
-
-<div class="note">
-Not all features of the <b>org.apache.sling.servlets.get</b> bundle are described below - this
-page needs more work.
-</div>
-
-# Default GET and HEAD servlets
-
-Sling provides a number of default GET and HEAD servlets, in the `org.apache.sling.servlets.get` bundle.
-
-This provides useful functionality out of the box: JSON rendering of content for example, usually does
-not require custom code.
-
-This page provides an overview of these default servlets.
-
-Currently, only the `DefaultGetServlet` has configuration parameters. Those are found at
-`/system/console/configMgr/org.apache.sling.servlets.get.DefaultGetServlet` on a standard Sling setup,
-and should be self-explaining. One common use is to disable some of the default renderings listed below,
-as they might not be useful or desired on production systems.
-
-# Default renderings
-
-## Default JSON rendering
-Adding a .json extension to a request triggers the default Sling GET servlet in JSON mode, unless a
-more specific servlet or script is provided for the current resource.
-
-This servlet currently supports the following selectors:
-
-* `.tidy` causes the JSON output to be formatted
-* `.harray` causes child nodes to be output as arrays instead of objects, to preserve their order (requires `org.apache.sling.servlets.get` V2.1.10)
-* A numeric value or `.infinity` as the last selector selects the desired recursion level
-
-Note that the number of elements is limited by a configurable value, see the `DefaultGetServlet` configuration for more info.
-
-## Default HTML rendering
-
-In a similar way, adding a `.html` extension to a request triggers the default Sling GET servlet in HTML
-mode. That rendering just dumps the current node values in a readable way, but it's only really useful
-for troubleshooting.
-
-## Default text rendering
-
-A basic text rendering is also provided if the request has a `.txt` extension, unless more specific servlets
-or scripts are provided.
-
-## Default XML rendering
-
-Adding a `.xml` extension triggers the default XML rendering, once again unless a more specific script or
-servlet is registered for the current resource.
-
-That XML rendering currently uses the JCR "document view" export functionality directly, so it only supports
-rendering resources that are backed by JCR nodes.
-
-## StreamRendererServlet
-
-Whenever the request carries the extension `.res` or no extension at all, the resource's input stream is spooled to the servlet response (leveraging `Resource.adaptTo(InputStream.class)`). This servlet supports conditional requests ([RFC 7232](https://tools.ietf.org/html/rfc7232)) evaluating the resource's modification date from `Resource.getResourceMetadata().getModificationTime()`  and range requests ([RFC 7233](https://tools.ietf.org/html/rfc7233)).
-
-## RedirectServlet
-
-The `RedirectServlet` handles the `sling:redirect` resource type, using the `sling:target` property of the
-resource to define the redirect target, and the `sling:status` property to define the HTTP status to use (default is 302).
-
-This is not to be confused with the `sling:redirect` property used under `/etc/map`, which is described in
-[Mappings for Resource Resolution](/documentation/the-sling-engine/mappings-for-resource-resolution.html)
-
-## SlingInfoServlet
-
-The `SlingInfoServlet` provides info on the current JCR session, for requests that map to JCR nodes.
-
-It is available at `/system/sling/info.sessionInfo` by default, and supports `.json` and `.txt` extensions.

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/repository-initialization.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/repository-initialization.md b/content/documentation/bundles/repository-initialization.md
deleted file mode 100644
index f501e0c..0000000
--- a/content/documentation/bundles/repository-initialization.md
+++ /dev/null
@@ -1,151 +0,0 @@
-title=		
-type=page
-status=published
-~~~~~~
-
-The `SlingRepositoryInitializer` mechanism allows for running code before the `SlingRepository` service is registered.
-
-This is useful for initialization and content migration purposes.
-
-Please be aware of potential clustering and coordination issues when using this mechanism, if your environment lets several Sling instances access
-the same content repository you'll need to implement a synchronization mechanism for such operations.
-
-## SlingRepositoryInitializer
-The `SlingRepositoryInitializer` is a very simple service interface, available from version 2.4.0 of the `org.apache.sling.jcr.api` and `org.apache.sling.jcr.base` bundles.
-
-public interface SlingRepositoryInitializer {
-public void processRepository(SlingRepository repo) throws Exception;
-}
-
-Services that implement this interface are called when setting up the JCR-based `SlingRepository` service, before registering it as an OSGi service.
-
-They are called in increasing order of their `service.ranking` service property, which needs to be an `Integer` as usual.
-
-If any of them throws an Exception, the `SlingRepository` service is not registered.
-
-## The 'repoinit' Repository Initialization Language
-The `org.apache.sling.repoinit.parser` implements a mini-language meant to create paths, service users and Access Control Lists in a content repository, as
-well as registering JCR namespaces and node types.
-
-The language grammar is defined (using the JavaCC compiler-compiler, which has no runtime dependencies) in the `RepoInitGrammar.jjt` file in that module, and the automated tests provide a number of [test cases](https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases) which demonstrate various features.
-
-The companion `org.apache.sling.jcr.repoinit` module implements those operations on an Oak JCR repository, using a `SlingRepositoryInitializer`
-registered by default with a service ranking of 100. It also provides a `JcrRepoInitOpsProcessor` service to explicitly apply the output
-of the repoinit parser to a JCR repository.
-
-Here's a current example from the test cases mentioned above, that uses all language features as of version 1.0.2 of the parser module.
-
-The language is self-explaining but please refer to the actual test cases for details that are guaranteed to be up to date, assuming the tests pass.
-
-create service user user1, u-ser_2
-set ACL on /libs,/apps
-allow jcr:read for user1,u-ser_2
-
-deny jcr:write for u-ser_2
-deny jcr:lockManagement for user1
-remove jcr:understand,some:other for u3
-end
-
-create service user bob_the_service
-
-set ACL on /tmp
-allow some:otherPrivilege for bob_the_service
-end
-
-# Nodetypes inside the path apply to just that path element
-create path /content/example.com(sling:Folder)
-
-# A nodetype in front is used as the default for all path elements
-create path (nt:unstructured) /var
-
-set ACL for alice, bob,fred
-# remove is currently not supported by the jcr.repoinit module
-remove * on /
-allow jcr:read on /content,/var
-deny jcr:write on /content/example.com
-deny jcr:all on / nodetypes example:Page
-end
-
-set ACL for restrictions_examples
-deny jcr:modifyProperties on /apps, /content nodetypes sling:Folder, nt:unstructured restriction(rep:itemNames,prop1,prop2)
-allow jcr:addChildNodes on /apps restriction(rep:ntNames,sling:Folder,nt:unstructured)
-allow jcr:modifyProperties on /apps restriction(rep:ntNames,sling:Folder,nt:unstructured) restriction(rep:itemNames,prop1,prop2)
-allow jcr:addChildNodes on /apps,/content restriction(rep:glob,/cat/*,*/cat,*cat/*)
-end
-
-# register namespace requires
-# o.a.s.repoinit.parser 1.0.4
-# and o.a.s.jcr.repoinit 1.0.2
-register namespace ( NSprefix ) uri:someURI/v1.42
-
-# register nodetypes in CND format
-# (same bundle requirements as register namespaces)
-#
-# The optional << markers are used when embedding
-# this in a Sling provisioning model, to avoid syntax errors
-#
-# The CND instructions are passed as is to the JCR
-# modules, so the full CND syntax is supported.
-#
-register nodetypes
-<<===
-<<  <slingevent='http://sling.apache.org/jcr/event/1.0'>
-<<
-<<  [slingevent:Event] > nt:unstructured, nt:hierarchyNode
-<<    - slingevent:topic (string)
-<<    - slingevent:properties (binary)
-===>>
-
-create user demoUser with password {SHA-256} dc460da4ad72c482231e28e688e01f2778a88ce31a08826899d54ef7183998b5
-
-create service user the-last-one
-
-## Providing repoinit statements from the Sling provisioning model or other URLs
-
-All bundles required for this feature need to be active before the `SlingRepository` service starts.
-
-From version 1.0.2 of the `org.apache.sling.jcr.repoinit` bundle, the `o.a.s.jcr.repoinit.RepositoryInitializer` component uses an OSGi
-configuration as shown in this example to define where to read repoinit statements:
-
-org.apache.sling.jcr.repoinit.impl.RepositoryInitializer
-references=["model:context:/resources/provisioning/model.txt","model@repoinitTwo:context:/resources/provisioning/model.txt"]
-
-This example defines two _references_ to URLs that supply repoinit statements. Their syntax is described below.
-
-By default the `RepositoryInitializer` uses the first URL shown in the above example, which points to the provisioning model that's embedded by default in the Sling Launchpad runnable jar.
-
-Note that previous versions of the `org.apache.sling.jcr.repoinit` bundle used different configuration parameters. From version 1.0.2 on, warnings are logged if those old parameters (_text.url,text.format,model.section.name_) are used.
-
-### References to Sling Provisioning Model additional sections
-The `slingstart-maven-plugin`, from V1.4.2 on, allows for embedding so-called "additional sections" in the Sling provisioning model by starting
-their name with a colon.
-
-At runtime this requires the `org.apache.sling.provisioning.model` bundle, version 1.4.2 or later.
-
-The `o.a.s.jcr.repoinit` bundle can use this feature to execute `repoinit` statements provided by Sling provisioning models, as in this
-provisioning model example fragment:
-
-[:repoinit]
-create path /repoinit/provisioningModelTest
-
-create service user provisioningModelUser
-
-To read repoinit statements from such an additional provisioning model section, the `RepositoryInitializer` configuration shown above uses references like
-
-model@repoinitTwo:context:/resources/provisioning/model.txt
-
-Where _model_ means "use the provisioning model format", _repoinitTwo_ is the name of the additional section to read statements from in the provisioning
-model (without the leading colon) and _context:/resources/..._ is the URL to use to retrieve the provisioning model.
-
-In this example the URL uses the _context_ scheme defined by the Sling Launchpad, but any scheme can be used provided a suitable URL handler is active.
-
-The section name in that reference is optional and defaults to _repoinit_. If it's not specified the `@` should be omitted as well.
-
-### References to URLs providing raw repoinit statements
-Using a `RepositoryInitializer` reference like in this example, with the _raw_ prefix, means that its content is passed as is to the repoinit parser:
-
-raw:classpath://some-repoinit-file.txt
-
-Which points to a `classpath:` URL to provide the raw repoinit statements in this example, but again any valid URL scheme can be used.
-
-

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/request-analysis.md
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/request-analysis.md b/content/documentation/bundles/request-analysis.md
deleted file mode 100644
index cde35eb..0000000
--- a/content/documentation/bundles/request-analysis.md
+++ /dev/null
@@ -1,62 +0,0 @@
-title=Request Processing Analyzer (reqanalyzer)		
-type=page
-status=published
-~~~~~~
-
-[TOC]
-
-
-## Introduction
-
-Sling provides a helpful functionality to track progress of requests
-being processed: The [RequestProgressTracker](http://sling.apache.org/apidocs/sling6/org/apache/sling/api/request/RequestProgressTracker.html) which is available through the [SlingHttpServletRequest](http://sling.apache.org/apidocs/sling6/org/apache/sling/api/SlingHttpServletRequest.html#getRequestProgressTracker%28%29).
-
-This tool provides mechanims to record states of request processing and a simple mechanism to time periods of processing. By default Sling itself uses this tool to track progress through Sling like script resolution and calling scripts.
-
-Scripts and servlets called during Sling's request processing may themselves use the `RequestProgressTracker` to log their own processing.
-
-Usually the data collected by the `RequestProgressTracker` is just dropped or it may be visible for a certain number of recent requests on the *Recent Requests* page of the Web Console. When doing load tests, though, this Web Console page is of limited use because a lot more requests are handled than can be displayed in the Web Console.
-
-This is where the [Request Processing Analyzer](http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/reqanalyzer) comes in handy. When deployed as a bundle it registers as a request level servlet Filter with the Sling Main Servlet. Each request is logged in a special file (currently fixed at `${sling.home}/logs/requesttracker.txt`) with a header line provding core information on the request:
-
-* Start time stamp in ms since the Epoch
-* Request processing time in ms
-* Request Method
-* Request URL
-* Response content type (plus character encoding if available)
-* Response Status
-
-After that first line the complete data from the requests `RequestProgressTracker` is dumped.
-
-## Web Console Integration
-
-The Request Processing Analyzer is available through the Web Console in the _Sling_ category to
-
-* Download the `requesttracker.txt` file as a plain text or ZIP-ed file
-* Launch the Swing-based GUI to analyze the file
-
-The option to launch the Swing-based GUI is only available if the Sling application
-is not running in headless mode and if the Web Console is accessed on _localhost_,
-that is on the same host as the Sling instance is running.
-
-
-## Analyzing the `requesttracker.txt` file
-
-To analyze the `requesttracker.txt` file the *Request Processing Analyzer* module can also be used as a standalone Java application. Just start the module using the `java` command:
-
-$ java -jar org.apache.sling.reqanalyzer-0.0.1-SNAPSHOT.jar requesttracker.txt
-
-The command supports two command line arguments:
-
-1. The tracker file (required)
-2. The number of requests to load and display from the file. This second option is optional and may be used to limit the request information loaded to the first requests in the file
-
-After starting and parsing the file, a window is opened showing the core request information in simple table. This table can be sorted by any of the columns by clicking on the column title.
-
-![Recorded Requests](requesttracker.png)
-
-Clicking on any row opens a second window displaying the detail request progress information as recorded before with the `RequestProgressTracker`.
-
-![Details of a recorded Request](requesttracker-details.png)
-
-The size, location, and the widths of the table columns are persisted with the Java Preferences API and thus when starting the application again, these settings are preserved.

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/requesttracker-details.png
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/requesttracker-details.png b/content/documentation/bundles/requesttracker-details.png
deleted file mode 100644
index 3640579..0000000
Binary files a/content/documentation/bundles/requesttracker-details.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/sling-site/blob/7b703652/content/documentation/bundles/requesttracker.png
----------------------------------------------------------------------
diff --git a/content/documentation/bundles/requesttracker.png b/content/documentation/bundles/requesttracker.png
deleted file mode 100644
index e625a5c..0000000
Binary files a/content/documentation/bundles/requesttracker.png and /dev/null differ