use symlinks to camel-karaf specific component doc pages
diff --git a/docs/modules/ROOT/pages/blueprint.adoc b/docs/modules/ROOT/pages/blueprint.adoc
deleted file mode 100644
index 953031b..0000000
--- a/docs/modules/ROOT/pages/blueprint.adoc
+++ /dev/null
@@ -1,46 +0,0 @@
-= Using OSGi blueprint with Camel
-:page-source: components/camel-blueprint/src/main/docs/blueprint.adoc
-
-A custom XML namespace for Blueprint has been created to let you leverage the nice XML dialect.
-Given Blueprint custom namespaces are not standardized yet, this namespace can only be used on the Apache Aries Blueprint
-implementation, which is the one used by Apache Karaf.
-
-== Overview
-
-The XML schema is mostly the same as the one for Spring, so all the XML snippets throughout the documentation
-referring to Spring XML also apply to Blueprint routes.
-
-Here is a very simple route definition using Blueprint:
-
-[source,xml]
-----
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-
-    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
-        <route>
-            <from uri="timer:test" />
-            <to uri="log:test" />
-        </route>
-    </camelContext>
-
-</blueprint>
-----
-
-There are a few limitations at this point about the supported xml elements (compared to the Spring XML syntax):
-
-- `beanPostProcessor` and `<export>` are specific to Spring and are not in use
-
-However, using Blueprint when you deploy your applications in an OSGi environment has several advantages:
-
-- when upgrading to a new Camel version, you don't have to change the namespace, as the correct version will be
-  selected based on the Camel packages that are imported by your bundle
-- no startup ordering issue with respect to the custom namespaces and your bundles
-- you can use Blueprint property placeholders
-
-
-== Using camel-blueprint
-
-To leverage camel-blueprint in OSGi, you only need the Aries Blueprint bundle and the camel-blueprint bundle,
-in addition to camel-core-xml and its dependencies.
-
-If you use Karaf, you can use the feature named camel-blueprint which will install all the required bundles.
diff --git a/docs/modules/ROOT/pages/blueprint.adoc b/docs/modules/ROOT/pages/blueprint.adoc
new file mode 120000
index 0000000..41fed46
--- /dev/null
+++ b/docs/modules/ROOT/pages/blueprint.adoc
@@ -0,0 +1 @@
+../../../../components/camel-blueprint/src/main/docs/blueprint.adoc
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/eventadmin-component.adoc b/docs/modules/ROOT/pages/eventadmin-component.adoc
deleted file mode 100644
index 1c08cac..0000000
--- a/docs/modules/ROOT/pages/eventadmin-component.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-[[eventadmin-component]]
-= OSGi EventAdmin Component
-:page-source: components/camel-eventadmin/src/main/docs/eventadmin-component.adoc
-
-*Since Camel 2.6*
-
-// HEADER START
-*Both producer and consumer is supported*
-// HEADER END
-
-The Eventadmin component can be used in an OSGi environment to receive
-OSGi EventAdmin events and process them.
-
-== Dependencies
-
-Maven users need to add the following dependency to their `pom.xml`
-
-[source,xml]
--------------------------------------------
-<dependency>
-  <groupId>org.apache.camel</groupId>
-  <artifactId>camel-eventadmin</artifactId>
-  <version>${camel-version}</version>
-</dependency>
--------------------------------------------
-
-where `${camel-version`} must be replaced by the actual version of Camel.
-
-== URI format
-
-[source,xml]
---------------------------
-eventadmin:topic[?options]
---------------------------
-
-where `topic` is the name of the topic to listen too.
-
-== URI options
-
-// component options: START
-The OSGi EventAdmin component supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bundleContext* (common) | The OSGi BundleContext is automatic injected by Camel |  | BundleContext
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
-| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-|===
-// component options: END
-
-// endpoint options: START
-The OSGi EventAdmin endpoint is configured using URI syntax:
-
-----
-eventadmin:topic
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *topic* | Name of topic to listen or send to |  | String
-|===
-
-
-=== Query Parameters (7 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *send* (common) | Whether to use 'send' or 'synchronous' deliver. Default false (async delivery) | false | boolean
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
-| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-|===
-// endpoint options: END
-
-== Message headers
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Name |Type |Message |Description
-| | |
-|=======================================================================
-
-== Message body
-
-The `in` message body will be set to the received Event.
-
-== Example usage
-
-[source,xml]
-------------------------------
-<route>
-    <from uri="eventadmin:*"/>
-    <to uri="stream:out"/>
-</route>
-------------------------------
diff --git a/docs/modules/ROOT/pages/eventadmin-component.adoc b/docs/modules/ROOT/pages/eventadmin-component.adoc
new file mode 120000
index 0000000..15d4950
--- /dev/null
+++ b/docs/modules/ROOT/pages/eventadmin-component.adoc
@@ -0,0 +1 @@
+../../../../components/camel-eventadmin/src/main/docs/eventadmin-component.adoc
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/kura.adoc b/docs/modules/ROOT/pages/kura.adoc
deleted file mode 100644
index 6fb6246..0000000
--- a/docs/modules/ROOT/pages/kura.adoc
+++ /dev/null
@@ -1,299 +0,0 @@
-[[Kura-EclipseKuracomponent]]
-= Eclipse Kura component
-:page-source: components/camel-kura/src/main/docs/kura.adoc
-
-*Since Camel 2.15*
-
-This documentation page covers the integration options of Camel with the
-https://eclipse.org/kura/[Eclipse Kura] M2M gateway. The common reason
-to deploy Camel routes into the Eclipse Kura is to provide enterprise
-integration patterns and Camel components to the messaging M2M gateway.
-For example you might want to install Kura on Raspberry PI, then read
-temperature from the sensor attached to that Raspberry PI using Kura
-services and finally forward the current temperature value to your data
-center service using Camel EIP and components.
-
-[[Kura-KuraRouteractivator]]
-== KuraRouter activator
-
-Bundles deployed to the Eclipse Kura are usually
-http://eclipse.github.io/kura/doc/hello-example.html#create-java-class[developed
-as bundle activators]. So the easiest way to deploy Apache Camel routes
-into the Kura is to create an OSGi bundle containing the class extending
-`org.apache.camel.kura.KuraRouter` class:
-
-[source,java]
--------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-  @Override
-  public void configure() throws Exception {
-    from("timer:trigger").
-      to("netty-http:http://app.mydatacenter.com/api");
-  }
-
-}
--------------------------------------------------------
-
-Keep in mind that `KuraRouter` implements
-the `org.osgi.framework.BundleActivator` interface, so you need to
-register its `start` and `stop` lifecycle methods
-while http://eclipse.github.io/kura/doc/hello-example.html#create-component-class[creating
-Kura bundle component class].
-
-Kura router starts its own OSGi-aware `CamelContext`. It means that for
-every class extending `KuraRouter`, there will be a dedicated
-`CamelContext` instance. Ideally we recommend to deploy one `KuraRouter`
-per OSGi bundle.
-
-[[Kura-DeployingKuraRouter]]
-=== Deploying KuraRouter
-
-Bundle containing your Kura router class should import the following
-packages in the OSGi manifest:
-
-[source,xml]
---------------------------------------------------------------------------------------------------------------------
-Import-Package: org.osgi.framework;version="1.3.0",
-  org.slf4j;version="1.6.4",
-  org.apache.camel,org.apache.camel.impl,org.apache.camel.core.osgi,org.apache.camel.builder,org.apache.camel.model,
-  org.apache.camel.component.kura
---------------------------------------------------------------------------------------------------------------------
-
-Keep in mind that you don't have to import every Camel component bundle
-you plan to use in your routes, as Camel components are resolved as the
-services on the runtime level.
-
-Before you deploy your router bundle, be sure that you have deployed
-(and started) the following Camel core bundles (using Kura GoGo
-shell)...
-
-[source,xml]
------------------------------------------------------------------------------------------------------------
-install file:///home/user/.m2/repository/org/apache/camel/camel-core/2.15.0/camel-core-2.15.0.jar
-start <camel-core-bundle-id>
-install file:///home/user/.m2/repository/org/apache/camel/camel-core-osgi/2.15.0/camel-core-osgi-2.15.0.jar
-start <camel-core-osgi-bundle-id>
-install file:///home/user/.m2/repository/org/apache/camel/camel-kura/2.15.0/camel-kura-2.15.0.jar 
-start <camel-kura-bundle-id>
------------------------------------------------------------------------------------------------------------
-
-...and all the components you plan to use in your routes:
-
-[source,xml]
------------------------------------------------------------------------------------------------------
-install file:///home/user/.m2/repository/org/apache/camel/camel-stream/2.15.0/camel-stream-2.15.0.jar
-start <camel-stream-bundle-id>
------------------------------------------------------------------------------------------------------
-
-Then finally deploy your router bundle:
-
-[source,xml]
-----------------------------------------------------------------------------------
-install file:///home/user/.m2/repository/com/example/myrouter/1.0/myrouter-1.0.jar
-start <your-bundle-id>
-----------------------------------------------------------------------------------
-
-[[Kura-KuraRouterutilities]]
-=== KuraRouter utilities 
-
- Kura router base class provides many useful utilities. This section
-explores each of them.
-
-[[Kura-SLF4Jlogger]]
-==== SLF4J logger
-
-Kura uses SLF4J facade for logging purposes. Protected member `log`
-returns SLF4J logger instance associated with the given Kura router.
-
-[source,java]
-----------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        log.info("Configuring Camel routes!");
-        ...
-    }
-
-}
-----------------------------------------------
-
-[[Kura-BundleContext]]
-==== BundleContext
-
-Protected member `bundleContext` returns bundle context associated with
-the given Kura router.
-
-[source,java]
----------------------------------------------------------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        ServiceReference<MyService> serviceRef = bundleContext.getServiceReference(LogService.class.getName());
-        MyService myService = bundleContext.getService(serviceRef);
-        ...
-    }
-
-}
----------------------------------------------------------------------------------------------------------------
-
-[[Kura-CamelContext]]
-==== CamelContext
-
-Protected member `camelContext` is the `CamelContext` associated with
-the given Kura router.
-
-[source,java]
-----------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        camelContext.getStatus();
-        ...
-    }
-
-}
-----------------------------------------------
-
-[[Kura-ProducerTemplate]]
-==== ProducerTemplate
-
-Protected member `producerTemplate` is the `ProducerTemplate` instance
-associated with the given Camel context.
-
-[source,java]
------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        producerTemplate.sendBody("jms:temperature", 22.0);
-        ...
-    }
-
-}
------------------------------------------------------------
-
-[[Kura-ConsumerTemplate]]
-==== ConsumerTemplate
-
-Protected member `consumerTemplate` is the `ConsumerTemplate` instance
-associated with the given Camel context.
-
-[source,java]
---------------------------------------------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        double currentTemperature = producerTemplate.receiveBody("jms:temperature", Double.class);
-        ...
-    }
-
-}
---------------------------------------------------------------------------------------------------
-
-[[Kura-OSGiserviceresolver]]
-==== OSGi service resolver
-
-OSGi service resolver (`service(Class<T> serviceType)`) can be used to
-easily retrieve service by type from the OSGi bundle context.
-
-[source,java]
--------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        MyService myService = service(MyService.class);
-        ...
-    }
-
-}
--------------------------------------------------------
-
-If service is not found, a `null` value is returned. If you want your
-application to fail if the service is not available, use
-`requiredService(Class)` method instead. The `requiredService` throws
-`IllegalStateException` if a service cannot be found.
-
-[source,java]
----------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        MyService myService = requiredService(MyService.class);
-        ...
-    }
-
-}
----------------------------------------------------------------
-
-[[Kura-KuraRouteractivatorcallbacks]]
-=== KuraRouter activator callbacks
-
-Kura router comes with the lifecycle callbacks that can be used to
-customize the way the Camel router works. For example to configure the
-`CamelContext` instance associated with the router just before the
-former is started, override `beforeStart` method of the `KuraRouter`
-class:
-
-[source,java]
---------------------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
- 
-  ...
-
-  protected void beforeStart(CamelContext camelContext) {
-    OsgiDefaultCamelContext osgiContext = (OsgiCamelContext) camelContext;
-    osgiContext.setName("NameOfTheRouter");
-  }
-
-}
---------------------------------------------------------------------------
-
-[[Kura-LoadingXMLroutesfromConfigurationAdmin]]
-=== Loading XML routes from ConfigurationAdmin
-
-Sometimes it is desired to read the XML definition of the routes from
-the server configuration. This a common scenario for IoT gateways where
-over-the-air redeployment cost may be significant. To address this
-requirement each `KuraRouter` looks for the
-`kura.camel.BUNDLE-SYMBOLIC-NAME.route` property from the `kura.camel`
-PID using the OSGi ConfigurationAdmin. This approach allows you to
-define Camel XML routes file per deployed `KuraRouter`. In order to
-update a route, just edit an appropriate configuration property and
-restart a bundle associated with it. The content of
-the `kura.camel.BUNDLE-SYMBOLIC-NAME.route` property is expected to be
-Camel XML route file, for example:
-
-[source,java]
-------------------------------------------------------
-<routes xmlns="http://camel.apache.org/schema/spring">
-    <route id="loaded">
-        <from uri="direct:bar"/>
-        <to uri="mock:bar"/>
-    </route>
-</routes>
-------------------------------------------------------
-
- 
-
-[[Kura-DeployingKurarouterasadeclarativeOSGiservice]]
-=== Deploying Kura router as a declarative OSGi service
-
-If you would like to deploy your Kura router as a declarative OSGi
-service, you can use `activate` and `deactivate` methods provided by
-`KuraRouter`.
-
-[source,java]
-----------------------------------------------------------------------------------------------------------------------------------------------
-<scr:component name="org.eclipse.kura.example.camel.MyKuraRouter" activate="activate" deactivate="deactivate" enabled="true" immediate="true">
-  <implementation class="org.eclipse.kura.example.camel.MyKuraRouter"/>
-</scr:component>
-----------------------------------------------------------------------------------------------------------------------------------------------
-
diff --git a/docs/modules/ROOT/pages/kura.adoc b/docs/modules/ROOT/pages/kura.adoc
new file mode 120000
index 0000000..d4d3dfa
--- /dev/null
+++ b/docs/modules/ROOT/pages/kura.adoc
@@ -0,0 +1 @@
+../../../../components/camel-kura/src/main/docs/kura.adoc
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/paxlogging-component.adoc b/docs/modules/ROOT/pages/paxlogging-component.adoc
deleted file mode 100644
index f469cd9..0000000
--- a/docs/modules/ROOT/pages/paxlogging-component.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-[[paxlogging-component]]
-= OSGi PAX Logging Component
-:page-source: components/camel-paxlogging/src/main/docs/paxlogging-component.adoc
-
-*Since Camel 2.6*
-
-// HEADER START
-*Only consumer is supported*
-// HEADER END
-
-The PAX Logging component can be used in an OSGi environment to receive
-http://wiki.ops4j.org/display/paxlogging/Pax+Logging[PaxLogging] events
-and process them.
-
-== Dependencies
-
-Maven users need to add the following dependency to their `pom.xml`
-
-[source,xml]
--------------------------------------------
-<dependency>
-  <groupId>org.apache.camel</groupId>
-  <artifactId>camel-paxlogging</artifactId>
-  <version>${camel-version}</version>
-</dependency>
--------------------------------------------
-
-where `${camel-version`} must be replaced by the actual version of Camel.
-
-== URI format
-
-[source,xml]
------------------------------
-paxlogging:appender[?options]
------------------------------
-
-where `appender` is the name of the pax appender that need to be
-configured in the PaxLogging service configuration.
-
-== URI options
-
-
-
-// component options: START
-The OSGi PAX Logging component supports 3 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *bundleContext* (consumer) | The OSGi BundleContext is automatic injected by Camel |  | BundleContext
-| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-|===
-// component options: END
-
-
-
-
-// endpoint options: START
-The OSGi PAX Logging endpoint is configured using URI syntax:
-
-----
-paxlogging:appender
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *appender* | *Required* Appender is the name of the pax appender that need to be configured in the PaxLogging service configuration. |  | String
-|===
-
-
-=== Query Parameters (5 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-|===
-// endpoint options: END
-
-
-== Message body
-
-The `in` message body will be set to the received PaxLoggingEvent.
-
-== Example usage
-
-[source,xml]
-----------------------------------
-<route>
-    <from uri="paxlogging:camel"/>
-    <to uri="stream:out"/>
-</route>
-----------------------------------
-
-Configuration:
-
-[source,java]
-----------------------------------------------------------
-log4j.rootLogger=INFO, out, osgi:VmLogAppender, osgi:camel
-----------------------------------------------------------
diff --git a/docs/modules/ROOT/pages/paxlogging-component.adoc b/docs/modules/ROOT/pages/paxlogging-component.adoc
new file mode 120000
index 0000000..6be7caa
--- /dev/null
+++ b/docs/modules/ROOT/pages/paxlogging-component.adoc
@@ -0,0 +1 @@
+../../../../components/camel-paxlogging/src/main/docs/paxlogging-component.adoc
\ No newline at end of file