You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dj...@apache.org on 2020/03/23 21:22:58 UTC

[camel] branch camel-3.0.x updated: Rearrange component sources and automation to match latest.

This is an automated email from the ASF dual-hosted git repository.

djencks pushed a commit to branch camel-3.0.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.0.x by this push:
     new dc3b786  Rearrange component sources and automation to match latest.
     new 125618a  Merge pull request #3666 from djencks/camel-3.0.x-issue-14766-rearrange-components
dc3b786 is described below

commit dc3b7863cada10bdd8d703d2e8bc026abce6ba83
Author: David Jencks <dj...@apache.org>
AuthorDate: Sun Mar 22 16:32:49 2020 -0700

    Rearrange component sources and automation to match latest.
---
 .../camel-base/src/main/docs}/antora.yml           |   3 -
 .../languages/pages}/constant-language.adoc        |   0
 .../pages}/exchangeProperty-language.adoc          |   0
 .../languages/pages}/file-language.adoc            |   0
 .../languages/pages}/header-language.adoc          |   0
 .../languages/pages}/ref-language.adoc             |   0
 .../languages/pages}/simple-language.adoc          |   0
 .../languages/pages}/tokenize-language.adoc        |   0
 .../camel-jaxp/src/main/docs}/antora.yml           |   3 -
 .../languages/pages}/xtokenize-language.adoc       |   0
 ...ate => component-dataformats-nav.adoc.template} |   1 +
 ...plate => component-languages-nav.adoc.template} |   1 +
 docs/component-nav.adoc.template                   |   1 +
 docs/components/antora.yml                         |   4 +-
 docs/components/modules/ROOT/nav.adoc              | 755 +++++++++---------
 .../modules/ROOT/pages/constant-language.adoc      |  72 --
 .../ROOT/pages/exchangeProperty-language.adoc      |  61 --
 .../modules/ROOT/pages/file-language.adoc          | 295 -------
 .../modules/ROOT/pages/header-language.adoc        |  45 --
 docs/components/modules/ROOT/pages/index.adoc      | 153 +---
 .../modules/ROOT/pages/ref-language.adoc           |  58 --
 .../modules/ROOT/pages/simple-language.adoc        | 878 ---------------------
 .../modules/ROOT/pages/tokenize-language.adoc      |  40 -
 .../modules/ROOT/pages/xtokenize-language.adoc     |  32 -
 docs/components/modules/dataformats/nav.adoc       |  47 ++
 .../pages/any23-dataformat.adoc                    |   0
 .../pages/asn1-dataformat.adoc                     |   0
 .../pages/avro-dataformat.adoc                     |   0
 .../pages/barcode-dataformat.adoc                  |   0
 .../pages/base64-dataformat.adoc                   |   0
 .../pages/beanio-dataformat.adoc                   |   0
 .../pages/bindy-dataformat.adoc                    |   0
 .../pages/cbor-dataformat.adoc                     |   0
 .../pages/crypto-dataformat.adoc                   |   0
 .../pages/csv-dataformat.adoc                      |   0
 .../pages/fhirJson-dataformat.adoc                 |   0
 .../pages/fhirXml-dataformat.adoc                  |   0
 .../pages/flatpack-dataformat.adoc                 |   0
 .../pages/grok-dataformat.adoc                     |   0
 .../pages/gzipdeflater-dataformat.adoc             |   0
 .../pages/hl7-dataformat.adoc                      |   0
 .../pages/ical-dataformat.adoc                     |   0
 .../modules/dataformats/pages/index.adoc           | 105 +++
 .../pages/jacksonxml-dataformat.adoc               |   0
 .../pages/jaxb-dataformat.adoc                     |   0
 .../pages/json-fastjson-dataformat.adoc            |   0
 .../pages/json-gson-dataformat.adoc                |   0
 .../pages/json-jackson-dataformat.adoc             |   0
 .../pages/json-johnzon-dataformat.adoc             |   0
 .../pages/json-xstream-dataformat.adoc             |   0
 .../pages/jsonApi-dataformat.adoc                  |   0
 .../pages/lzf-dataformat.adoc                      |   0
 .../pages/mime-multipart-dataformat.adoc           |   0
 .../pages/pgp-dataformat.adoc                      |   0
 .../pages/protobuf-dataformat.adoc                 |   0
 .../pages/rss-dataformat.adoc                      |   0
 .../pages/secureXML-dataformat.adoc                |   0
 .../pages/soapjaxb-dataformat.adoc                 |   0
 .../pages/syslog-dataformat.adoc                   |   0
 .../pages/tarfile-dataformat.adoc                  |   0
 .../pages/thrift-dataformat.adoc                   |   0
 .../pages/tidyMarkup-dataformat.adoc               |   0
 .../pages/univocity-csv-dataformat.adoc            |   0
 .../pages/univocity-fixed-dataformat.adoc          |   0
 .../pages/univocity-tsv-dataformat.adoc            |   0
 .../pages/xstream-dataformat.adoc                  |   0
 .../pages/yaml-snakeyaml-dataformat.adoc           |   0
 .../pages/zipdeflater-dataformat.adoc              |   0
 .../pages/zipfile-dataformat.adoc                  |   0
 docs/components/modules/languages/nav.adoc         |  21 +
 .../{ROOT => languages}/pages/bean-language.adoc   |   0
 .../{ROOT => languages}/pages/groovy-language.adoc |   0
 .../pages/hl7terser-language.adoc                  |   0
 docs/components/modules/languages/pages/index.adoc |  48 ++
 .../pages/jsonpath-language.adoc                   |   0
 .../{ROOT => languages}/pages/mvel-language.adoc   |   0
 .../{ROOT => languages}/pages/ognl-language.adoc   |   0
 .../{ROOT => languages}/pages/spel-language.adoc   |   0
 .../{ROOT => languages}/pages/xpath-language.adoc  |   0
 .../{ROOT => languages}/pages/xquery-language.adoc |   0
 docs/gulpfile.js                                   | 139 +++-
 docs/package.json                                  |   1 +
 .../camel/component/jms/jmsRouteUsingSpring.xml    |  41 -
 .../spring/javaconfig/patterns/FilterTest.java     |  87 --
 ...CamelSpringDelegatingTestContextLoaderTest.java |  87 --
 .../camel/spring/SpringConsumerTemplateTest.java   |  64 --
 .../apache/camel/spring/patterns/FilterTest.java   |  65 --
 .../spring/SpringConsumerTemplateTest-context.xml  |  43 -
 .../camel/spring/patterns/FilterTest-context.xml   |  42 -
 .../camel/test/blueprint/DebugBlueprintTest.java   |  75 --
 .../apache/camel/test/blueprint/camelContext.xml   |  41 -
 .../java/org/apache/camel/test/cdi/FilterTest.java |  73 --
 .../test/spring/CamelSpringRunnerPlainTest.java    | 113 ---
 .../org/apache/camel/processor/FilterTest.java     |  61 --
 .../org/apache/camel/processor/TransformTest.java  |  63 --
 .../camel/processor/TransformViaDSLTest.java       |  55 --
 .../management/ManagedCustomProcessorTest.java     | 109 ---
 .../resources/META-INF/spring/camel-context.xml    |  43 -
 .../example/jmstofile/CamelJmsToFileExample.java   |  81 --
 .../modules/ROOT/pages/constant-language.adoc      |  72 --
 .../ROOT/pages/exchangeProperty-language.adoc      |  61 --
 .../modules/ROOT/pages/file-language.adoc          | 295 -------
 .../modules/ROOT/pages/header-language.adoc        |  45 --
 .../modules/ROOT/pages/ref-language.adoc           |  58 --
 .../modules/ROOT/pages/simple-language.adoc        | 878 ---------------------
 .../modules/ROOT/pages/tokenize-language.adoc      |  40 -
 .../modules/ROOT/pages/xtokenize-language.adoc     |  32 -
 docs/yarn.lock                                     |  56 ++
 .../packaging/UpdateDocComponentListMojo.java      |  24 +-
 .../camel/maven/packaging/UpdateReadmeMojo.java    |  54 +-
 .../main/resources/website-dataformats-list.mvel   |   2 +-
 .../src/main/resources/website-languages-list.mvel |   2 +-
 112 files changed, 810 insertions(+), 4715 deletions(-)

diff --git a/docs/components/antora.yml b/core/camel-base/src/main/docs/antora.yml
similarity index 93%
copy from docs/components/antora.yml
copy to core/camel-base/src/main/docs/antora.yml
index 76aacac..b90083b 100644
--- a/docs/components/antora.yml
+++ b/core/camel-base/src/main/docs/antora.yml
@@ -16,7 +16,4 @@
 #
 
 name: components
-title: Component reference
 version: 3.0.x
-nav:
-- modules/ROOT/nav.adoc
diff --git a/core/camel-base/src/main/docs/constant-language.adoc b/core/camel-base/src/main/docs/modules/languages/pages/constant-language.adoc
similarity index 100%
rename from core/camel-base/src/main/docs/constant-language.adoc
rename to core/camel-base/src/main/docs/modules/languages/pages/constant-language.adoc
diff --git a/core/camel-base/src/main/docs/exchangeProperty-language.adoc b/core/camel-base/src/main/docs/modules/languages/pages/exchangeProperty-language.adoc
similarity index 100%
rename from core/camel-base/src/main/docs/exchangeProperty-language.adoc
rename to core/camel-base/src/main/docs/modules/languages/pages/exchangeProperty-language.adoc
diff --git a/core/camel-base/src/main/docs/file-language.adoc b/core/camel-base/src/main/docs/modules/languages/pages/file-language.adoc
similarity index 100%
rename from core/camel-base/src/main/docs/file-language.adoc
rename to core/camel-base/src/main/docs/modules/languages/pages/file-language.adoc
diff --git a/core/camel-base/src/main/docs/header-language.adoc b/core/camel-base/src/main/docs/modules/languages/pages/header-language.adoc
similarity index 100%
rename from core/camel-base/src/main/docs/header-language.adoc
rename to core/camel-base/src/main/docs/modules/languages/pages/header-language.adoc
diff --git a/core/camel-base/src/main/docs/ref-language.adoc b/core/camel-base/src/main/docs/modules/languages/pages/ref-language.adoc
similarity index 100%
rename from core/camel-base/src/main/docs/ref-language.adoc
rename to core/camel-base/src/main/docs/modules/languages/pages/ref-language.adoc
diff --git a/core/camel-base/src/main/docs/simple-language.adoc b/core/camel-base/src/main/docs/modules/languages/pages/simple-language.adoc
similarity index 100%
rename from core/camel-base/src/main/docs/simple-language.adoc
rename to core/camel-base/src/main/docs/modules/languages/pages/simple-language.adoc
diff --git a/core/camel-base/src/main/docs/tokenize-language.adoc b/core/camel-base/src/main/docs/modules/languages/pages/tokenize-language.adoc
similarity index 100%
rename from core/camel-base/src/main/docs/tokenize-language.adoc
rename to core/camel-base/src/main/docs/modules/languages/pages/tokenize-language.adoc
diff --git a/docs/components/antora.yml b/core/camel-jaxp/src/main/docs/antora.yml
similarity index 93%
copy from docs/components/antora.yml
copy to core/camel-jaxp/src/main/docs/antora.yml
index 76aacac..b90083b 100644
--- a/docs/components/antora.yml
+++ b/core/camel-jaxp/src/main/docs/antora.yml
@@ -16,7 +16,4 @@
 #
 
 name: components
-title: Component reference
 version: 3.0.x
-nav:
-- modules/ROOT/nav.adoc
diff --git a/core/camel-jaxp/src/main/docs/xtokenize-language.adoc b/core/camel-jaxp/src/main/docs/modules/languages/pages/xtokenize-language.adoc
similarity index 100%
rename from core/camel-jaxp/src/main/docs/xtokenize-language.adoc
rename to core/camel-jaxp/src/main/docs/modules/languages/pages/xtokenize-language.adoc
diff --git a/docs/component-nav.adoc.template b/docs/component-dataformats-nav.adoc.template
similarity index 65%
copy from docs/component-nav.adoc.template
copy to docs/component-dataformats-nav.adoc.template
index 169357f..0969ec7 100644
--- a/docs/component-nav.adoc.template
+++ b/docs/component-dataformats-nav.adoc.template
@@ -1,4 +1,5 @@
 <!-- generated:txt -->
 <!-- endinject -->
+* xref:dataformats:index.adoc[Data Formats]
 <!-- inject:adoc -->
 <!-- endinject -->
diff --git a/docs/component-nav.adoc.template b/docs/component-languages-nav.adoc.template
similarity index 67%
copy from docs/component-nav.adoc.template
copy to docs/component-languages-nav.adoc.template
index 169357f..df56b61 100644
--- a/docs/component-nav.adoc.template
+++ b/docs/component-languages-nav.adoc.template
@@ -1,4 +1,5 @@
 <!-- generated:txt -->
 <!-- endinject -->
+* xref:languages:index.adoc[Languages]
 <!-- inject:adoc -->
 <!-- endinject -->
diff --git a/docs/component-nav.adoc.template b/docs/component-nav.adoc.template
index 169357f..d96951a 100644
--- a/docs/component-nav.adoc.template
+++ b/docs/component-nav.adoc.template
@@ -1,4 +1,5 @@
 <!-- generated:txt -->
 <!-- endinject -->
+* xref:ROOT:index.adoc[Components]
 <!-- inject:adoc -->
 <!-- endinject -->
diff --git a/docs/components/antora.yml b/docs/components/antora.yml
index 76aacac..0565e39 100644
--- a/docs/components/antora.yml
+++ b/docs/components/antora.yml
@@ -19,4 +19,6 @@ name: components
 title: Component reference
 version: 3.0.x
 nav:
-- modules/ROOT/nav.adoc
+  - modules/ROOT/nav.adoc
+  - modules/dataformats/nav.adoc
+  - modules/languages/nav.adoc
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 8ca18f4..5047a53 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -1,406 +1,355 @@
 // this file is auto generated and changes to it will be overwritten
 // make edits in docs/*nav.adoc.template files instead
 
-* xref:activemq-component.adoc[ActiveMQ Component]
-* xref:ahc-ws-component.adoc[AHC Websocket Component]
-* xref:ahc-component.adoc[AHC Component]
-* xref:amqp-component.adoc[AMQP Component]
-* xref:any23-dataformat.adoc[Any23 DataFormat]
-* xref:apns-component.adoc[APNS Component]
-* xref:as2-component.adoc[AS2 Component]
-* xref:asn1-dataformat.adoc[ASN.1 File DataFormat]
-* xref:asterisk-component.adoc[Asterisk Component]
-* xref:atmos-component.adoc[Atmos Component]
-* xref:atmosphere-websocket-component.adoc[Atmosphere Websocket Component]
-* xref:atom-component.adoc[Atom Component]
-* xref:atomix-map-component.adoc[Atomix Map Component]
-* xref:atomix-messaging-component.adoc[Atomix Messaging Component]
-* xref:atomix-multimap-component.adoc[Atomix MultiMap Component]
-* xref:atomix-queue-component.adoc[Atomix Queue Component]
-* xref:atomix-set-component.adoc[Atomix Set Component]
-* xref:atomix-value-component.adoc[Atomix Value Component]
-* xref:attachments.adoc[Attachments Component]
-* xref:avro-component.adoc[Avro Component]
-* xref:avro-dataformat.adoc[Avro DataFormat]
-* xref:aws-cw-component.adoc[AWS CloudWatch Component]
-* xref:aws-ddb-component.adoc[AWS DynamoDB Component]
-* xref:aws-ddbstream-component.adoc[AWS DynamoDB Streams Component]
-* xref:aws-ec2-component.adoc[AWS EC2 Component]
-* xref:aws-ecs-component.adoc[AWS ECS Component]
-* xref:aws-eks-component.adoc[AWS EKS Component]
-* xref:aws-iam-component.adoc[AWS IAM Component]
-* xref:aws-kinesis-component.adoc[AWS Kinesis Component]
-* xref:aws-kinesis-firehose-component.adoc[AWS Kinesis Firehose Component]
-* xref:aws-kms-component.adoc[AWS KMS Component]
-* xref:aws-lambda-component.adoc[AWS Lambda Component]
-* xref:aws-mq-component.adoc[AWS MQ Component]
-* xref:aws-msk-component.adoc[AWS MSK Component]
-* xref:aws-s3-component.adoc[AWS S3 Storage Service Component]
-* xref:aws-sdb-component.adoc[AWS SimpleDB Component]
-* xref:aws-ses-component.adoc[AWS Simple Email Service Component]
-* xref:aws-sns-component.adoc[AWS Simple Notification System Component]
-* xref:aws-sqs-component.adoc[AWS Simple Queue Service Component]
-* xref:aws-swf-component.adoc[AWS Simple Workflow Component]
-* xref:aws-translate-component.adoc[AWS Translate Component]
-* xref:aws-xray.adoc[AWS XRay Component]
-* xref:azure-blob-component.adoc[Azure Storage Blob Service Component]
-* xref:azure-queue-component.adoc[Azure Storage Queue Service Component]
-* xref:azure.adoc[Camel Components for Windows Azure Services]
-* xref:barcode-dataformat.adoc[Barcode DataFormat]
-* xref:base64-dataformat.adoc[Base64 DataFormat]
-* xref:bean-validator-component.adoc[Bean Validator Component]
-* xref:bean-component.adoc[Bean Component]
-* xref:bean-language.adoc[Bean method Language]
-* xref:class-component.adoc[Class Component]
-* xref:beanio-dataformat.adoc[BeanIO DataFormat]
-* xref:beanstalk-component.adoc[Beanstalk Component]
-* xref:bindy-dataformat.adoc[Bindy DataFormat]
-* xref:blueprint.adoc[Using OSGi blueprint with Camel]
-* xref:bonita-component.adoc[Bonita Component]
-* xref:box-component.adoc[Box Component]
-* xref:braintree-component.adoc[Braintree Component]
-* xref:browse-component.adoc[Browse Component]
-* xref:caffeine-cache-component.adoc[Caffeine Cache Component]
-* xref:caffeine-loadcache-component.adoc[Caffeine LoadCache Component]
-* xref:cql-component.adoc[Cassandra CQL Component]
-* xref:cbor-dataformat.adoc[CBOR DataFormat]
-* xref:cdi.adoc[Camel CDI]
-* xref:chatscript-component.adoc[ChatScript Component]
-* xref:chunk-component.adoc[Chunk Component]
-* xref:cm-sms-component.adoc[CM SMS Gateway Component]
-* xref:cmis-component.adoc[CMIS Component]
-* xref:coap-component.adoc[CoAP Component]
-* xref:cometd-component.adoc[CometD Component]
-* xref:consul-component.adoc[Consul Component]
-* xref:controlbus-component.adoc[Control Bus Component]
-* xref:corda-component.adoc[Corda Component]
-* xref:couchbase-component.adoc[Couchbase Component]
-* xref:couchdb-component.adoc[CouchDB Component]
-* xref:crypto-cms-component.adoc[Crypto CMS Component]
-* xref:crypto-component.adoc[Crypto (JCE) Component]
-* xref:crypto-dataformat.adoc[Crypto (Java Cryptographic Extension) DataFormat]
-* xref:pgp-dataformat.adoc[PGP DataFormat]
-* xref:csv-dataformat.adoc[CSV DataFormat]
-* xref:cxf-transport.adoc[CXF Transport Component]
-* xref:cxf-component.adoc[CXF Component]
-* xref:cxfrs-component.adoc[CXF-RS Component]
-* xref:dataformat-component.adoc[Data Format Component]
-* xref:dataset-component.adoc[Dataset Component]
-* xref:dataset-test-component.adoc[DataSet Test Component]
-* xref:debezium-mongodb-component.adoc[Debezium MongoDB Connector Component]
-* xref:debezium-mysql-component.adoc[Debezium MySQL Connector Component]
-* xref:debezium-postgres-component.adoc[Debezium PostgresSQL Connector Component]
-* xref:debezium-sqlserver-component.adoc[Debezium SQL Server Connector Component]
-* xref:digitalocean-component.adoc[DigitalOcean Component]
-* xref:direct-component.adoc[Direct Component]
-* xref:direct-vm-component.adoc[Direct VM Component]
-* xref:disruptor-component.adoc[Disruptor Component]
-* xref:dns-component.adoc[DNS Component]
-* xref:docker-component.adoc[Docker Component]
-* xref:dozer-component.adoc[Dozer Component]
-* xref:drill-component.adoc[Drill Component]
-* xref:dropbox-component.adoc[Dropbox Component]
-* xref:ehcache-component.adoc[Ehcache Component]
-* xref:elasticsearch-rest-component.adoc[Elastichsearch Rest Component]
-* xref:elsql-component.adoc[ElSQL Component]
-* xref:etcd-component.adoc[Etcd Component]
-* xref:eventadmin-component.adoc[OSGi EventAdmin Component]
-* xref:exec-component.adoc[Exec Component]
-* xref:facebook-component.adoc[Facebook Component]
-* xref:json-fastjson-dataformat.adoc[JSon Fastjson DataFormat]
-* xref:fhir-component.adoc[FHIR Component]
-* xref:fhirJson-dataformat.adoc[FHIR JSon DataFormat]
-* xref:fhirXml-dataformat.adoc[FHIR XML DataFormat]
-* xref:file-watch-component.adoc[file-watch Component]
-* xref:file-component.adoc[File Component]
-* xref:flatpack-component.adoc[Flatpack Component]
-* xref:flatpack-dataformat.adoc[Flatpack DataFormat]
-* xref:flink-component.adoc[Flink Component]
-* xref:fop-component.adoc[FOP Component]
-* xref:freemarker-component.adoc[Freemarker Component]
-* xref:ftp-component.adoc[FTP Component]
-* xref:ftps-component.adoc[FTPS Component]
-* xref:sftp-component.adoc[SFTP Component]
-* xref:ganglia-component.adoc[Ganglia Component]
-* xref:geocoder-component.adoc[Geocoder Component]
-* xref:git-component.adoc[Git Component]
-* xref:github-component.adoc[GitHub Component]
-* xref:google-bigquery-component.adoc[Google BigQuery Component]
-* xref:google-bigquery-sql-component.adoc[Google BigQuery Standard SQL Component]
-* xref:google-calendar-component.adoc[Google Calendar Component]
-* xref:google-calendar-stream-component.adoc[Google Calendar Stream Component]
-* xref:google-drive-component.adoc[Google Drive Component]
-* xref:google-mail-component.adoc[Google Mail Component]
-* xref:google-mail-stream-component.adoc[Google Mail Stream Component]
-* xref:google-pubsub-component.adoc[Google Pubsub Component]
-* xref:google-sheets-component.adoc[Google Sheets Component]
-* xref:google-sheets-stream-component.adoc[Google Sheets Stream Component]
-* xref:gora-component.adoc[Gora Component]
-* xref:grape-component.adoc[Grape Component]
-* xref:graphql-component.adoc[GraphQL Component]
-* xref:grok-dataformat.adoc[Grok DataFormat]
-* xref:groovy-language.adoc[Groovy Language]
-* xref:grpc-component.adoc[gRPC Component]
-* xref:json-gson-dataformat.adoc[JSon GSon DataFormat]
-* xref:guava-eventbus-component.adoc[Guava EventBus Component]
-* xref:hazelcast-atomicvalue-component.adoc[Hazelcast Atomic Number Component]
-* xref:hazelcast-instance-component.adoc[Hazelcast Instance Component]
-* xref:hazelcast-list-component.adoc[Hazelcast List Component]
-* xref:hazelcast-map-component.adoc[Hazelcast Map Component]
-* xref:hazelcast-multimap-component.adoc[Hazelcast Multimap Component]
-* xref:hazelcast-queue-component.adoc[Hazelcast Queue Component]
-* xref:hazelcast-replicatedmap-component.adoc[Hazelcast Replicated Map Component]
-* xref:hazelcast-ringbuffer-component.adoc[Hazelcast Ringbuffer Component]
-* xref:hazelcast-seda-component.adoc[Hazelcast SEDA Component]
-* xref:hazelcast-set-component.adoc[Hazelcast Set Component]
-* xref:hazelcast-topic-component.adoc[Hazelcast Topic Component]
-* xref:hazelcast.adoc[Hazelcast Component]
-* xref:hbase-component.adoc[HBase Component]
-* xref:hdfs-component.adoc[HDFS Component]
-* xref:hipchat-component.adoc[Hipchat Component]
-* xref:hl7-dataformat.adoc[HL7 DataFormat]
-* xref:hl7terser-language.adoc[HL7 Terser Language]
-* xref:http-component.adoc[HTTP Component]
-* xref:hystrix.adoc[Hystrix Component]
-* xref:ical-dataformat.adoc[iCal DataFormat]
-* xref:iec60870-client-component.adoc[IEC 60870 Client Component]
-* xref:iec60870-server-component.adoc[IEC 60870 Server Component]
-* xref:ignite-cache-component.adoc[Ignite Cache Component]
-* xref:ignite-compute-component.adoc[Ignite Compute Component]
-* xref:ignite-events-component.adoc[Ignite Events Component]
-* xref:ignite-idgen-component.adoc[Ignite ID Generator Component]
-* xref:ignite-messaging-component.adoc[Ignite Messaging Component]
-* xref:ignite-queue-component.adoc[Ignite Queues Component]
-* xref:ignite-set-component.adoc[Ignite Sets Component]
-* xref:ignite.adoc[Ignite endpoints Component]
-* xref:infinispan-component.adoc[Infinispan Component]
-* xref:influxdb-component.adoc[InfluxDB Component]
-* xref:iota-component.adoc[IOTA Component]
-* xref:ipfs-component.adoc[IPFS Component]
-* xref:irc-component.adoc[IRC Component]
-* xref:ironmq-component.adoc[IronMQ Component]
-* xref:json-jackson-dataformat.adoc[JSon Jackson DataFormat]
-* xref:jacksonxml-dataformat.adoc[JacksonXML DataFormat]
-* xref:jasypt.adoc[Jasypt component]
-* xref:jaxb-dataformat.adoc[JAXB DataFormat]
-* xref:jbpm-component.adoc[JBPM Component]
-* xref:jcache-component.adoc[JCache Component]
-* xref:jclouds-component.adoc[JClouds Component]
-* xref:jcr-component.adoc[JCR Component]
-* xref:jdbc-component.adoc[JDBC Component]
-* xref:jetty-component.adoc[Jetty Component]
-* xref:jgroups-raft-component.adoc[JGroups raft Component]
-* xref:jgroups-component.adoc[JGroups Component]
-* xref:jing-component.adoc[Jing Component]
-* xref:jira-component.adoc[Jira Component]
-* xref:jms-component.adoc[JMS Component]
-* xref:jmx-component.adoc[JMX Component]
-* xref:json-johnzon-dataformat.adoc[JSon Johnzon DataFormat]
-* xref:jolt-component.adoc[JOLT Component]
-* xref:jooq-component.adoc[JOOQ Component]
-* xref:jpa-component.adoc[JPA Component]
-* xref:scp-component.adoc[SCP Component]
-* xref:json-validator-component.adoc[JSON Schema Validator Component]
-* xref:jsonApi-dataformat.adoc[JSonApi DataFormat]
-* xref:jsonpath-language.adoc[JsonPath Language]
-* xref:jt400-component.adoc[JT400 Component]
-* xref:kafka-component.adoc[Kafka Component]
-* xref:kubernetes-config-maps-component.adoc[Kubernetes ConfigMap Component]
-* xref:kubernetes-deployments-component.adoc[Kubernetes Deployments Component]
-* xref:kubernetes-hpa-component.adoc[Kubernetes HPA Component]
-* xref:kubernetes-job-component.adoc[Kubernetes Job Component]
-* xref:kubernetes-namespaces-component.adoc[Kubernetes Namespaces Component]
-* xref:kubernetes-nodes-component.adoc[Kubernetes Nodes Component]
-* xref:kubernetes-persistent-volumes-claims-component.adoc[Kubernetes Persistent Volume Claim Component]
-* xref:kubernetes-persistent-volumes-component.adoc[Kubernetes Persistent Volume Component]
-* xref:kubernetes-pods-component.adoc[Kubernetes Pods Component]
-* xref:kubernetes-replication-controllers-component.adoc[Kubernetes Replication Controller Component]
-* xref:kubernetes-resources-quota-component.adoc[Kubernetes Resources Quota Component]
-* xref:kubernetes-secrets-component.adoc[Kubernetes Secrets Component]
-* xref:kubernetes-service-accounts-component.adoc[Kubernetes Service Account Component]
-* xref:kubernetes-services-component.adoc[Kubernetes Services Component]
-* xref:kubernetes.adoc[Kubernetes Components]
-* xref:openshift-build-configs-component.adoc[Openshift Build Config Component]
-* xref:openshift-builds-component.adoc[Openshift Builds Component]
-* xref:kudu-component.adoc[Kudu Component]
-* xref:kura.adoc[Eclipse Kura component]
-* xref:language-component.adoc[Language Component]
-* xref:ldap-component.adoc[LDAP Component]
-* xref:ldif-component.adoc[LDIF Component]
-* xref:leveldb.adoc[LevelDB]
-* xref:log-component.adoc[Log Component]
-* xref:lra.adoc[LRA Component]
-* xref:lucene-component.adoc[Lucene Component]
-* xref:lumberjack-component.adoc[Lumberjack Component]
-* xref:lzf-dataformat.adoc[LZF Deflate Compression DataFormat]
-* xref:mail-component.adoc[Mail Component]
-* xref:mime-multipart-dataformat.adoc[MIME Multipart DataFormat]
-* xref:master-component.adoc[Master Component]
-* xref:metrics-component.adoc[Metrics Component]
-* xref:micrometer-component.adoc[Micrometer Component]
-* xref:microprofile-config.adoc[MicroProfile Config]
-* xref:microprofile-health.adoc[MicroProfile Health]
-* xref:microprofile-metrics-component.adoc[MicroProfile Metrics Component]
-* xref:milo-client-component.adoc[OPC UA Client Component]
-* xref:milo-server-component.adoc[OPC UA Server Component]
-* xref:mina-component.adoc[Mina Component]
-* xref:mllp-component.adoc[MLLP Component]
-* xref:mock-component.adoc[Mock Component]
-* xref:mongodb-gridfs-component.adoc[MongoDB GridFS Component]
-* xref:mongodb-component.adoc[MongoDB Component]
-* xref:msv-component.adoc[MSV Component]
-* xref:mustache-component.adoc[Mustache Component]
-* xref:mvel-component.adoc[MVEL Component]
-* xref:mvel-language.adoc[MVEL Language]
-* xref:mybatis-bean-component.adoc[MyBatis Bean Component]
-* xref:mybatis-component.adoc[MyBatis Component]
-* xref:nagios-component.adoc[Nagios Component]
-* xref:nats-component.adoc[Nats Component]
-* xref:netty-http-component.adoc[Netty HTTP Component]
-* xref:netty-component.adoc[Netty Component]
-* xref:nitrite-component.adoc[Nitrite Component]
-* xref:nsq-component.adoc[NSQ Component]
-* xref:ognl-language.adoc[OGNL Language]
-* xref:olingo2-component.adoc[Olingo2 Component]
-* xref:olingo4-component.adoc[Olingo4 Component]
-* xref:openstack-cinder-component.adoc[OpenStack Cinder Component]
-* xref:openstack-glance-component.adoc[OpenStack Glance Component]
-* xref:openstack-keystone-component.adoc[OpenStack Keystone Component]
-* xref:openstack-neutron-component.adoc[OpenStack Neutron Component]
-* xref:openstack-nova-component.adoc[OpenStack Nova Component]
-* xref:openstack-swift-component.adoc[OpenStack Swift Component]
-* xref:openstack.adoc[Openstack Component]
-* xref:opentracing.adoc[OpenTracing Component]
-* xref:optaplanner-component.adoc[OptaPlanner Component]
-* xref:paho-component.adoc[Paho Component]
-* xref:paxlogging-component.adoc[OSGi PAX Logging Component]
-* xref:pdf-component.adoc[PDF Component]
-* xref:pg-replication-slot-component.adoc[PostgresSQL Replication Slot Component]
-* xref:pgevent-component.adoc[PostgresSQL Event Component]
-* xref:platform-http-component.adoc[Platform HTTP Component]
-* xref:lpr-component.adoc[Printer Component]
-* xref:protobuf-dataformat.adoc[Protobuf DataFormat]
-* xref:pubnub-component.adoc[PubNub Component]
-* xref:pulsar-component.adoc[Pulsar Component]
-* xref:quartz-component.adoc[Quartz Component]
-* xref:quickfix-component.adoc[QuickFix Component]
-* xref:rabbitmq-component.adoc[RabbitMQ Component]
-* xref:reactive-executor-vertx.adoc[ReactiveExecutor VertX]
-* xref:reactive-streams-component.adoc[Reactive Streams Component]
-* xref:reactor.adoc[Reactor Component]
-* xref:ref-component.adoc[Ref Component]
-* xref:resilience4j.adoc[Resilience4j Component]
-* xref:rest-swagger-component.adoc[REST Swagger Component]
-* xref:rest-api-component.adoc[REST API Component]
-* xref:rest-component.adoc[REST Component]
-* xref:ribbon.adoc[Ribbon Component]
-* xref:robotframework-component.adoc[Robot Framework Component]
-* xref:rss-component.adoc[RSS Component]
-* xref:rss-dataformat.adoc[RSS DataFormat]
-* xref:rxjava.adoc[RxJava Component]
-* xref:saga-component.adoc[Saga Component]
-* xref:salesforce-component.adoc[Salesforce Component]
-* xref:sap-netweaver-component.adoc[SAP NetWeaver Component]
-* xref:xquery-component.adoc[XQuery Component]
-* xref:xquery-language.adoc[XQuery Language]
-* xref:scheduler-component.adoc[Scheduler Component]
-* xref:schematron-component.adoc[Schematron Component]
-* xref:seda-component.adoc[SEDA Component]
-* xref:service-component.adoc[Service Component]
-* xref:servicenow-component.adoc[ServiceNow Component]
-* xref:servlet-component.adoc[Servlet Component]
-* xref:shiro.adoc[Shiro Security Component]
-* xref:sip-component.adoc[SIP Component]
-* xref:sjms-batch-component.adoc[Simple JMS Batch Component]
-* xref:sjms-component.adoc[Simple JMS Component]
-* xref:sjms2-component.adoc[Simple JMS2 Component]
-* xref:slack-component.adoc[Slack Component]
-* xref:smpp-component.adoc[SMPP Component]
-* xref:yaml-snakeyaml-dataformat.adoc[YAML SnakeYAML DataFormat]
-* xref:snmp-component.adoc[SNMP Component]
-* xref:soapjaxb-dataformat.adoc[SOAP DataFormat]
-* xref:solr-component.adoc[Solr Component]
-* xref:soroush-component.adoc[Soroush Component]
-* xref:spark-rest-component.adoc[Spark Rest Component]
-* xref:spark-component.adoc[Spark Component]
-* xref:splunk-component.adoc[Splunk Component]
-* xref:spring-batch-component.adoc[Spring Batch Component]
-* xref:spring-boot.adoc[Spring Boot]
-* xref:spring-cloud-consul.adoc[Spring Cloud Consul]
-* xref:spring-cloud-netflix.adoc[Spring Cloud Netflix]
-* xref:spring-cloud-zookeeper.adoc[Spring Cloud Zookeeper]
-* xref:spring-cloud.adoc[Spring Cloud]
-* xref:spring-integration-component.adoc[Spring Integration Component]
-* xref:spring-javaconfig.adoc[Spring Java Config]
-* xref:spring-ldap-component.adoc[Spring LDAP Component]
-* xref:spring-redis-component.adoc[Spring Redis Component]
-* xref:spring-security.adoc[Spring Security]
-* xref:spring-ws-component.adoc[Spring WebService Component]
-* xref:spel-language.adoc[SpEL Language]
-* xref:spring-event-component.adoc[Spring Event Component]
-* xref:spring.adoc[Spring Support]
-* xref:sql-component.adoc[SQL Component]
-* xref:sql-stored-component.adoc[SQL Stored Procedure Component]
-* xref:ssh-component.adoc[SSH Component]
-* xref:stax-component.adoc[StAX Component]
-* xref:stomp-component.adoc[Stomp Component]
-* xref:stream-component.adoc[Stream Component]
-* xref:string-template-component.adoc[String Template Component]
-* xref:stub-component.adoc[Stub Component]
-* xref:swagger-java.adoc[Swagger Java Component]
-* xref:syslog-dataformat.adoc[Syslog DataFormat]
-* xref:tidyMarkup-dataformat.adoc[TidyMarkup DataFormat]
-* xref:tarfile-dataformat.adoc[Tar File DataFormat]
-* xref:telegram-component.adoc[Telegram Component]
-* xref:test-blueprint.adoc[Blueprint Testing]
-* xref:test-cdi.adoc[CDI Testing]
-* xref:test-junit5.adoc[Test Module]
-* xref:test-karaf.adoc[Test Karaf]
-* xref:test-spring-junit5.adoc[Camel Test Spring JUnit 5]
-* xref:test-spring.adoc[Test Spring]
-* xref:test.adoc[Test Module]
-* xref:testcontainers-junit5.adoc[Testcontainers]
-* xref:testcontainers-spring-junit5.adoc[Testcontainers Spring]
-* xref:testcontainers-spring.adoc[Testcontainers Spring]
-* xref:testcontainers.adoc[Testcontainers]
-* xref:thrift-component.adoc[Thrift Component]
-* xref:thrift-dataformat.adoc[Thrift DataFormat]
-* xref:tika-component.adoc[Tika Component]
-* xref:timer-component.adoc[Timer Component]
-* xref:twilio-component.adoc[Twilio Component]
-* xref:twitter-directmessage-component.adoc[Twitter Direct Message Component]
-* xref:twitter-search-component.adoc[Twitter Search Component]
-* xref:twitter-timeline-component.adoc[Twitter Timeline Component]
-* xref:undertow-component.adoc[Undertow Component]
-* xref:univocity-csv-dataformat.adoc[uniVocity CSV DataFormat]
-* xref:univocity-fixed-dataformat.adoc[uniVocity Fixed Length DataFormat]
-* xref:univocity-tsv-dataformat.adoc[uniVocity TSV DataFormat]
-* xref:validator-component.adoc[Validator Component]
-* xref:velocity-component.adoc[Velocity Component]
-* xref:vertx-component.adoc[Vert.x Component]
-* xref:vm-component.adoc[VM Component]
-* xref:weather-component.adoc[Weather Component]
-* xref:web3j-component.adoc[Web3j Ethereum Blockchain Component]
-* xref:webhook-component.adoc[Webhook Component]
-* xref:websocket-jsr356-component.adoc[Javax Websocket Component]
-* xref:websocket-component.adoc[Jetty Websocket Component]
-* xref:wordpress-component.adoc[Wordpress Component]
-* xref:xchange-component.adoc[XChange Component]
-* xref:xj-component.adoc[XJ Component]
-* xref:secureXML-dataformat.adoc[XML Security DataFormat]
-* xref:xmlsecurity-component.adoc[XML Security Component]
-* xref:xmpp-component.adoc[XMPP Component]
-* xref:xpath-language.adoc[XPath Language]
-* xref:xslt-saxon-component.adoc[XSLT Saxon Component]
-* xref:xslt-component.adoc[XSLT Component]
-* xref:json-xstream-dataformat.adoc[JSon XStream DataFormat]
-* xref:xstream-dataformat.adoc[XStream DataFormat]
-* xref:yammer-component.adoc[Yammer Component]
-* xref:zendesk-component.adoc[Zendesk Component]
-* xref:gzipdeflater-dataformat.adoc[GZip Deflater DataFormat]
-* xref:zipdeflater-dataformat.adoc[Zip Deflate Compression DataFormat]
-* xref:zipfile-dataformat.adoc[Zip File DataFormat]
-* xref:zipkin.adoc[Zipkin Component]
-* xref:zookeeper-master-component.adoc[ZooKeeper Master Component]
-* xref:zookeeper-component.adoc[ZooKeeper Component]
-* xref:properties-component.adoc[Properties Component]
+* xref:ROOT:index.adoc[Components]
+** xref:activemq-component.adoc[ActiveMQ Component]
+** xref:ahc-component.adoc[AHC Component]
+** xref:ahc-ws-component.adoc[AHC Websocket Component]
+** xref:amqp-component.adoc[AMQP Component]
+** xref:apns-component.adoc[APNS Component]
+** xref:as2-component.adoc[AS2 Component]
+** xref:asterisk-component.adoc[Asterisk Component]
+** xref:atmos-component.adoc[Atmos Component]
+** xref:atmosphere-websocket-component.adoc[Atmosphere Websocket Component]
+** xref:atom-component.adoc[Atom Component]
+** xref:atomix-map-component.adoc[Atomix Map Component]
+** xref:atomix-messaging-component.adoc[Atomix Messaging Component]
+** xref:atomix-multimap-component.adoc[Atomix MultiMap Component]
+** xref:atomix-queue-component.adoc[Atomix Queue Component]
+** xref:atomix-set-component.adoc[Atomix Set Component]
+** xref:atomix-value-component.adoc[Atomix Value Component]
+** xref:attachments.adoc[Attachments Component]
+** xref:avro-component.adoc[Avro Component]
+** xref:aws-cw-component.adoc[AWS CloudWatch Component]
+** xref:aws-ddb-component.adoc[AWS DynamoDB Component]
+** xref:aws-ddbstream-component.adoc[AWS DynamoDB Streams Component]
+** xref:aws-ec2-component.adoc[AWS EC2 Component]
+** xref:aws-ecs-component.adoc[AWS ECS Component]
+** xref:aws-eks-component.adoc[AWS EKS Component]
+** xref:aws-iam-component.adoc[AWS IAM Component]
+** xref:aws-kinesis-component.adoc[AWS Kinesis Component]
+** xref:aws-kinesis-firehose-component.adoc[AWS Kinesis Firehose Component]
+** xref:aws-kms-component.adoc[AWS KMS Component]
+** xref:aws-lambda-component.adoc[AWS Lambda Component]
+** xref:aws-mq-component.adoc[AWS MQ Component]
+** xref:aws-msk-component.adoc[AWS MSK Component]
+** xref:aws-s3-component.adoc[AWS S3 Storage Service Component]
+** xref:aws-ses-component.adoc[AWS Simple Email Service Component]
+** xref:aws-sns-component.adoc[AWS Simple Notification System Component]
+** xref:aws-sqs-component.adoc[AWS Simple Queue Service Component]
+** xref:aws-swf-component.adoc[AWS Simple Workflow Component]
+** xref:aws-sdb-component.adoc[AWS SimpleDB Component]
+** xref:aws-translate-component.adoc[AWS Translate Component]
+** xref:aws-xray.adoc[AWS XRay Component]
+** xref:azure-blob-component.adoc[Azure Storage Blob Service Component]
+** xref:azure-queue-component.adoc[Azure Storage Queue Service Component]
+** xref:bean-component.adoc[Bean Component]
+** xref:bean-validator-component.adoc[Bean Validator Component]
+** xref:beanstalk-component.adoc[Beanstalk Component]
+** xref:test-blueprint.adoc[Blueprint Testing]
+** xref:bonita-component.adoc[Bonita Component]
+** xref:box-component.adoc[Box Component]
+** xref:braintree-component.adoc[Braintree Component]
+** xref:browse-component.adoc[Browse Component]
+** xref:caffeine-cache-component.adoc[Caffeine Cache Component]
+** xref:caffeine-loadcache-component.adoc[Caffeine LoadCache Component]
+** xref:cdi.adoc[Camel CDI]
+** xref:azure.adoc[Camel Components for Windows Azure Services]
+** xref:test-spring-junit5.adoc[Camel Test Spring JUnit 5]
+** xref:cql-component.adoc[Cassandra CQL Component]
+** xref:test-cdi.adoc[CDI Testing]
+** xref:chatscript-component.adoc[ChatScript Component]
+** xref:chunk-component.adoc[Chunk Component]
+** xref:class-component.adoc[Class Component]
+** xref:cm-sms-component.adoc[CM SMS Gateway Component]
+** xref:cmis-component.adoc[CMIS Component]
+** xref:coap-component.adoc[CoAP Component]
+** xref:cometd-component.adoc[CometD Component]
+** xref:consul-component.adoc[Consul Component]
+** xref:controlbus-component.adoc[Control Bus Component]
+** xref:corda-component.adoc[Corda Component]
+** xref:couchbase-component.adoc[Couchbase Component]
+** xref:couchdb-component.adoc[CouchDB Component]
+** xref:crypto-component.adoc[Crypto (JCE) Component]
+** xref:crypto-cms-component.adoc[Crypto CMS Component]
+** xref:cxf-component.adoc[CXF Component]
+** xref:cxf-transport.adoc[CXF Transport Component]
+** xref:cxfrs-component.adoc[CXF-RS Component]
+** xref:dataformat-component.adoc[Data Format Component]
+** xref:dataset-component.adoc[Dataset Component]
+** xref:dataset-test-component.adoc[DataSet Test Component]
+** xref:debezium-mongodb-component.adoc[Debezium MongoDB Connector Component]
+** xref:debezium-mysql-component.adoc[Debezium MySQL Connector Component]
+** xref:debezium-postgres-component.adoc[Debezium PostgresSQL Connector Component]
+** xref:debezium-sqlserver-component.adoc[Debezium SQL Server Connector Component]
+** xref:digitalocean-component.adoc[DigitalOcean Component]
+** xref:direct-component.adoc[Direct Component]
+** xref:direct-vm-component.adoc[Direct VM Component]
+** xref:disruptor-component.adoc[Disruptor Component]
+** xref:dns-component.adoc[DNS Component]
+** xref:docker-component.adoc[Docker Component]
+** xref:dozer-component.adoc[Dozer Component]
+** xref:drill-component.adoc[Drill Component]
+** xref:dropbox-component.adoc[Dropbox Component]
+** xref:kura.adoc[Eclipse Kura component]
+** xref:ehcache-component.adoc[Ehcache Component]
+** xref:elasticsearch-rest-component.adoc[Elastichsearch Rest Component]
+** xref:elsql-component.adoc[ElSQL Component]
+** xref:etcd-component.adoc[Etcd Component]
+** xref:exec-component.adoc[Exec Component]
+** xref:facebook-component.adoc[Facebook Component]
+** xref:fhir-component.adoc[FHIR Component]
+** xref:file-component.adoc[File Component]
+** xref:file-watch-component.adoc[file-watch Component]
+** xref:flatpack-component.adoc[Flatpack Component]
+** xref:flink-component.adoc[Flink Component]
+** xref:fop-component.adoc[FOP Component]
+** xref:freemarker-component.adoc[Freemarker Component]
+** xref:ftp-component.adoc[FTP Component]
+** xref:ftps-component.adoc[FTPS Component]
+** xref:ganglia-component.adoc[Ganglia Component]
+** xref:geocoder-component.adoc[Geocoder Component]
+** xref:git-component.adoc[Git Component]
+** xref:github-component.adoc[GitHub Component]
+** xref:google-bigquery-component.adoc[Google BigQuery Component]
+** xref:google-bigquery-sql-component.adoc[Google BigQuery Standard SQL Component]
+** xref:google-calendar-component.adoc[Google Calendar Component]
+** xref:google-calendar-stream-component.adoc[Google Calendar Stream Component]
+** xref:google-drive-component.adoc[Google Drive Component]
+** xref:google-mail-component.adoc[Google Mail Component]
+** xref:google-mail-stream-component.adoc[Google Mail Stream Component]
+** xref:google-pubsub-component.adoc[Google Pubsub Component]
+** xref:google-sheets-component.adoc[Google Sheets Component]
+** xref:google-sheets-stream-component.adoc[Google Sheets Stream Component]
+** xref:gora-component.adoc[Gora Component]
+** xref:grape-component.adoc[Grape Component]
+** xref:graphql-component.adoc[GraphQL Component]
+** xref:grpc-component.adoc[gRPC Component]
+** xref:guava-eventbus-component.adoc[Guava EventBus Component]
+** xref:hazelcast-atomicvalue-component.adoc[Hazelcast Atomic Number Component]
+** xref:hazelcast.adoc[Hazelcast Component]
+** xref:hazelcast-instance-component.adoc[Hazelcast Instance Component]
+** xref:hazelcast-list-component.adoc[Hazelcast List Component]
+** xref:hazelcast-map-component.adoc[Hazelcast Map Component]
+** xref:hazelcast-multimap-component.adoc[Hazelcast Multimap Component]
+** xref:hazelcast-queue-component.adoc[Hazelcast Queue Component]
+** xref:hazelcast-replicatedmap-component.adoc[Hazelcast Replicated Map Component]
+** xref:hazelcast-ringbuffer-component.adoc[Hazelcast Ringbuffer Component]
+** xref:hazelcast-seda-component.adoc[Hazelcast SEDA Component]
+** xref:hazelcast-set-component.adoc[Hazelcast Set Component]
+** xref:hazelcast-topic-component.adoc[Hazelcast Topic Component]
+** xref:hbase-component.adoc[HBase Component]
+** xref:hdfs-component.adoc[HDFS Component]
+** xref:hipchat-component.adoc[Hipchat Component]
+** xref:http-component.adoc[HTTP Component]
+** xref:hystrix.adoc[Hystrix Component]
+** xref:iec60870-client-component.adoc[IEC 60870 Client Component]
+** xref:iec60870-server-component.adoc[IEC 60870 Server Component]
+** xref:ignite-cache-component.adoc[Ignite Cache Component]
+** xref:ignite-compute-component.adoc[Ignite Compute Component]
+** xref:ignite.adoc[Ignite endpoints Component]
+** xref:ignite-events-component.adoc[Ignite Events Component]
+** xref:ignite-idgen-component.adoc[Ignite ID Generator Component]
+** xref:ignite-messaging-component.adoc[Ignite Messaging Component]
+** xref:ignite-queue-component.adoc[Ignite Queues Component]
+** xref:ignite-set-component.adoc[Ignite Sets Component]
+** xref:infinispan-component.adoc[Infinispan Component]
+** xref:influxdb-component.adoc[InfluxDB Component]
+** xref:iota-component.adoc[IOTA Component]
+** xref:ipfs-component.adoc[IPFS Component]
+** xref:irc-component.adoc[IRC Component]
+** xref:ironmq-component.adoc[IronMQ Component]
+** xref:jasypt.adoc[Jasypt component]
+** xref:websocket-jsr356-component.adoc[Javax Websocket Component]
+** xref:jbpm-component.adoc[JBPM Component]
+** xref:jcache-component.adoc[JCache Component]
+** xref:jclouds-component.adoc[JClouds Component]
+** xref:jcr-component.adoc[JCR Component]
+** xref:jdbc-component.adoc[JDBC Component]
+** xref:jetty-component.adoc[Jetty Component]
+** xref:websocket-component.adoc[Jetty Websocket Component]
+** xref:jgroups-component.adoc[JGroups Component]
+** xref:jgroups-raft-component.adoc[JGroups raft Component]
+** xref:jing-component.adoc[Jing Component]
+** xref:jira-component.adoc[Jira Component]
+** xref:jms-component.adoc[JMS Component]
+** xref:jmx-component.adoc[JMX Component]
+** xref:jolt-component.adoc[JOLT Component]
+** xref:jooq-component.adoc[JOOQ Component]
+** xref:jpa-component.adoc[JPA Component]
+** xref:json-validator-component.adoc[JSON Schema Validator Component]
+** xref:jt400-component.adoc[JT400 Component]
+** xref:kafka-component.adoc[Kafka Component]
+** xref:kubernetes.adoc[Kubernetes Components]
+** xref:kubernetes-config-maps-component.adoc[Kubernetes ConfigMap Component]
+** xref:kubernetes-deployments-component.adoc[Kubernetes Deployments Component]
+** xref:kubernetes-hpa-component.adoc[Kubernetes HPA Component]
+** xref:kubernetes-job-component.adoc[Kubernetes Job Component]
+** xref:kubernetes-namespaces-component.adoc[Kubernetes Namespaces Component]
+** xref:kubernetes-nodes-component.adoc[Kubernetes Nodes Component]
+** xref:kubernetes-persistent-volumes-claims-component.adoc[Kubernetes Persistent Volume Claim Component]
+** xref:kubernetes-persistent-volumes-component.adoc[Kubernetes Persistent Volume Component]
+** xref:kubernetes-pods-component.adoc[Kubernetes Pods Component]
+** xref:kubernetes-replication-controllers-component.adoc[Kubernetes Replication Controller Component]
+** xref:kubernetes-resources-quota-component.adoc[Kubernetes Resources Quota Component]
+** xref:kubernetes-secrets-component.adoc[Kubernetes Secrets Component]
+** xref:kubernetes-service-accounts-component.adoc[Kubernetes Service Account Component]
+** xref:kubernetes-services-component.adoc[Kubernetes Services Component]
+** xref:kudu-component.adoc[Kudu Component]
+** xref:language-component.adoc[Language Component]
+** xref:ldap-component.adoc[LDAP Component]
+** xref:ldif-component.adoc[LDIF Component]
+** xref:leveldb.adoc[LevelDB]
+** xref:log-component.adoc[Log Component]
+** xref:lra.adoc[LRA Component]
+** xref:lucene-component.adoc[Lucene Component]
+** xref:lumberjack-component.adoc[Lumberjack Component]
+** xref:mail-component.adoc[Mail Component]
+** xref:master-component.adoc[Master Component]
+** xref:metrics-component.adoc[Metrics Component]
+** xref:micrometer-component.adoc[Micrometer Component]
+** xref:microprofile-config.adoc[MicroProfile Config]
+** xref:microprofile-health.adoc[MicroProfile Health]
+** xref:microprofile-metrics-component.adoc[MicroProfile Metrics Component]
+** xref:mina-component.adoc[Mina Component]
+** xref:mllp-component.adoc[MLLP Component]
+** xref:mock-component.adoc[Mock Component]
+** xref:mongodb-component.adoc[MongoDB Component]
+** xref:mongodb-gridfs-component.adoc[MongoDB GridFS Component]
+** xref:msv-component.adoc[MSV Component]
+** xref:mustache-component.adoc[Mustache Component]
+** xref:mvel-component.adoc[MVEL Component]
+** xref:mybatis-bean-component.adoc[MyBatis Bean Component]
+** xref:mybatis-component.adoc[MyBatis Component]
+** xref:nagios-component.adoc[Nagios Component]
+** xref:nats-component.adoc[Nats Component]
+** xref:netty-component.adoc[Netty Component]
+** xref:netty-http-component.adoc[Netty HTTP Component]
+** xref:nitrite-component.adoc[Nitrite Component]
+** xref:nsq-component.adoc[NSQ Component]
+** xref:olingo2-component.adoc[Olingo2 Component]
+** xref:olingo4-component.adoc[Olingo4 Component]
+** xref:milo-client-component.adoc[OPC UA Client Component]
+** xref:milo-server-component.adoc[OPC UA Server Component]
+** xref:openshift-build-configs-component.adoc[Openshift Build Config Component]
+** xref:openshift-builds-component.adoc[Openshift Builds Component]
+** xref:openstack-cinder-component.adoc[OpenStack Cinder Component]
+** xref:openstack.adoc[Openstack Component]
+** xref:openstack-glance-component.adoc[OpenStack Glance Component]
+** xref:openstack-keystone-component.adoc[OpenStack Keystone Component]
+** xref:openstack-neutron-component.adoc[OpenStack Neutron Component]
+** xref:openstack-nova-component.adoc[OpenStack Nova Component]
+** xref:openstack-swift-component.adoc[OpenStack Swift Component]
+** xref:opentracing.adoc[OpenTracing Component]
+** xref:optaplanner-component.adoc[OptaPlanner Component]
+** xref:eventadmin-component.adoc[OSGi EventAdmin Component]
+** xref:paxlogging-component.adoc[OSGi PAX Logging Component]
+** xref:paho-component.adoc[Paho Component]
+** xref:pdf-component.adoc[PDF Component]
+** xref:platform-http-component.adoc[Platform HTTP Component]
+** xref:pgevent-component.adoc[PostgresSQL Event Component]
+** xref:pg-replication-slot-component.adoc[PostgresSQL Replication Slot Component]
+** xref:lpr-component.adoc[Printer Component]
+** xref:properties-component.adoc[Properties Component]
+** xref:pubnub-component.adoc[PubNub Component]
+** xref:pulsar-component.adoc[Pulsar Component]
+** xref:quartz-component.adoc[Quartz Component]
+** xref:quickfix-component.adoc[QuickFix Component]
+** xref:rabbitmq-component.adoc[RabbitMQ Component]
+** xref:reactive-streams-component.adoc[Reactive Streams Component]
+** xref:reactive-executor-vertx.adoc[ReactiveExecutor VertX]
+** xref:reactor.adoc[Reactor Component]
+** xref:ref-component.adoc[Ref Component]
+** xref:resilience4j.adoc[Resilience4j Component]
+** xref:rest-api-component.adoc[REST API Component]
+** xref:rest-component.adoc[REST Component]
+** xref:rest-swagger-component.adoc[REST Swagger Component]
+** xref:ribbon.adoc[Ribbon Component]
+** xref:robotframework-component.adoc[Robot Framework Component]
+** xref:rss-component.adoc[RSS Component]
+** xref:rxjava.adoc[RxJava Component]
+** xref:saga-component.adoc[Saga Component]
+** xref:salesforce-component.adoc[Salesforce Component]
+** xref:sap-netweaver-component.adoc[SAP NetWeaver Component]
+** xref:scheduler-component.adoc[Scheduler Component]
+** xref:schematron-component.adoc[Schematron Component]
+** xref:scp-component.adoc[SCP Component]
+** xref:seda-component.adoc[SEDA Component]
+** xref:service-component.adoc[Service Component]
+** xref:servicenow-component.adoc[ServiceNow Component]
+** xref:servlet-component.adoc[Servlet Component]
+** xref:sftp-component.adoc[SFTP Component]
+** xref:shiro.adoc[Shiro Security Component]
+** xref:sjms-batch-component.adoc[Simple JMS Batch Component]
+** xref:sjms-component.adoc[Simple JMS Component]
+** xref:sjms2-component.adoc[Simple JMS2 Component]
+** xref:sip-component.adoc[SIP Component]
+** xref:slack-component.adoc[Slack Component]
+** xref:smpp-component.adoc[SMPP Component]
+** xref:snmp-component.adoc[SNMP Component]
+** xref:solr-component.adoc[Solr Component]
+** xref:soroush-component.adoc[Soroush Component]
+** xref:spark-component.adoc[Spark Component]
+** xref:spark-rest-component.adoc[Spark Rest Component]
+** xref:splunk-component.adoc[Splunk Component]
+** xref:spring-batch-component.adoc[Spring Batch Component]
+** xref:spring-boot.adoc[Spring Boot]
+** xref:spring-cloud.adoc[Spring Cloud]
+** xref:spring-cloud-consul.adoc[Spring Cloud Consul]
+** xref:spring-cloud-netflix.adoc[Spring Cloud Netflix]
+** xref:spring-cloud-zookeeper.adoc[Spring Cloud Zookeeper]
+** xref:spring-event-component.adoc[Spring Event Component]
+** xref:spring-integration-component.adoc[Spring Integration Component]
+** xref:spring-javaconfig.adoc[Spring Java Config]
+** xref:spring-ldap-component.adoc[Spring LDAP Component]
+** xref:spring-redis-component.adoc[Spring Redis Component]
+** xref:spring-security.adoc[Spring Security]
+** xref:spring.adoc[Spring Support]
+** xref:spring-ws-component.adoc[Spring WebService Component]
+** xref:sql-component.adoc[SQL Component]
+** xref:sql-stored-component.adoc[SQL Stored Procedure Component]
+** xref:ssh-component.adoc[SSH Component]
+** xref:stax-component.adoc[StAX Component]
+** xref:stomp-component.adoc[Stomp Component]
+** xref:stream-component.adoc[Stream Component]
+** xref:string-template-component.adoc[String Template Component]
+** xref:stub-component.adoc[Stub Component]
+** xref:swagger-java.adoc[Swagger Java Component]
+** xref:telegram-component.adoc[Telegram Component]
+** xref:test-karaf.adoc[Test Karaf]
+** xref:test.adoc[Test Module]
+** xref:test-junit5.adoc[Test Module]
+** xref:test-spring.adoc[Test Spring]
+** xref:testcontainers.adoc[Testcontainers]
+** xref:testcontainers-junit5.adoc[Testcontainers]
+** xref:testcontainers-spring-junit5.adoc[Testcontainers Spring]
+** xref:testcontainers-spring.adoc[Testcontainers Spring]
+** xref:thrift-component.adoc[Thrift Component]
+** xref:tika-component.adoc[Tika Component]
+** xref:timer-component.adoc[Timer Component]
+** xref:twilio-component.adoc[Twilio Component]
+** xref:twitter-directmessage-component.adoc[Twitter Direct Message Component]
+** xref:twitter-search-component.adoc[Twitter Search Component]
+** xref:twitter-timeline-component.adoc[Twitter Timeline Component]
+** xref:undertow-component.adoc[Undertow Component]
+** xref:blueprint.adoc[Using OSGi blueprint with Camel]
+** xref:validator-component.adoc[Validator Component]
+** xref:velocity-component.adoc[Velocity Component]
+** xref:vertx-component.adoc[Vert.x Component]
+** xref:vm-component.adoc[VM Component]
+** xref:weather-component.adoc[Weather Component]
+** xref:web3j-component.adoc[Web3j Ethereum Blockchain Component]
+** xref:webhook-component.adoc[Webhook Component]
+** xref:wordpress-component.adoc[Wordpress Component]
+** xref:xchange-component.adoc[XChange Component]
+** xref:xj-component.adoc[XJ Component]
+** xref:xmlsecurity-component.adoc[XML Security Component]
+** xref:xmpp-component.adoc[XMPP Component]
+** xref:xquery-component.adoc[XQuery Component]
+** xref:xslt-component.adoc[XSLT Component]
+** xref:xslt-saxon-component.adoc[XSLT Saxon Component]
+** xref:yammer-component.adoc[Yammer Component]
+** xref:zendesk-component.adoc[Zendesk Component]
+** xref:zipkin.adoc[Zipkin Component]
+** xref:zookeeper-component.adoc[ZooKeeper Component]
+** xref:zookeeper-master-component.adoc[ZooKeeper Master Component]
diff --git a/docs/components/modules/ROOT/pages/constant-language.adoc b/docs/components/modules/ROOT/pages/constant-language.adoc
deleted file mode 100644
index 338765f..0000000
--- a/docs/components/modules/ROOT/pages/constant-language.adoc
+++ /dev/null
@@ -1,72 +0,0 @@
-[[constant-language]]
-= Constant Language
-:page-source: core/camel-base/src/main/docs/constant-language.adoc
-
-*Since Camel 1.5*
-
-The Constant Expression Language is really just a way to specify
-constant strings as a type of expression.
-
-NOTE: This is a fixed constant value that is only set once during starting up the route,
-      do not use this if you want dynamic values during routing.
-
-== Constant Options
-
-
-// language options: START
-The Constant language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-
-== Example usage
-
-The setHeader element of the Spring DSL can utilize a constant
-expression like:
-
-[source,xml]
-----
-<route>
-  <from uri="seda:a"/>
-  <setHeader name="theHeader">
-    <constant>the value</constant>
-  </setHeader>
-  <to uri="mock:b"/>
-</route>
-----
-
-in this case, the Message coming from the seda:a
-Endpoint will have 'theHeader' header set to the
-constant value 'the value'.
-
-And the same example using Java DSL:
-
-[source,java]
-----
-from("seda:a")
-  .setHeader("theHeader", constant("the value"))
-  .to("mock:b");
-----
-
-== Loading constant from external resource
-
-You can externalize the constant and have Camel load it from a resource
-such as `"classpath:"`, `"file:"`, or `"http:"`. +
- This is done using the following syntax: `"resource:scheme:location"`,
-eg to refer to a file on the classpath you can do:
-
-[source,java]
-----
-.setHeader("myHeader").constant("resource:classpath:constant.txt")
-----
-
-== Dependencies
-
-The Constant language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/exchangeProperty-language.adoc b/docs/components/modules/ROOT/pages/exchangeProperty-language.adoc
deleted file mode 100644
index f26a26f..0000000
--- a/docs/components/modules/ROOT/pages/exchangeProperty-language.adoc
+++ /dev/null
@@ -1,61 +0,0 @@
-[[exchangeProperty-language]]
-= ExchangeProperty Language
-:page-source: core/camel-base/src/main/docs/exchangeProperty-language.adoc
-
-*Since Camel 2.0*
-
-The ExchangeProperty Expression Language allows you to extract values of
-named exchange properties.
-
-== Exchange Property Options
-
-// language options: START
-The ExchangeProperty language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Example usage
-
-The recipientList element of the Spring DSL can utilize a
-exchangeProperty expression like:
-
-In this case, the list of recipients are contained in the property
-'myProperty'.
-
-[source,xml]
-----
-<route>
-  <from uri="direct:a" />
-  <recipientList>
-    <exchangeProperty>myProperty</exchangeProperty>
-  </recipientList>
-</route>
-----
-
-And the same example in Java DSL:
-
-[source,java]
-----
-from("direct:a").recipientList(exchangeProperty("myProperty"));
-----
-
-And with a slightly different syntax where you use the builder to the
-fullest (i.e. avoid using parameters but using stacked operations,
-notice that exchangeProperty is not a parameter but a stacked method
-call)
-
-[source,java]
-----
-from("direct:a").recipientList().exchangeProperty("myProperty");
-----
-
-== Dependencies
-
-The ExchangeProperty language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/file-language.adoc b/docs/components/modules/ROOT/pages/file-language.adoc
deleted file mode 100644
index a0ae9b0..0000000
--- a/docs/components/modules/ROOT/pages/file-language.adoc
+++ /dev/null
@@ -1,295 +0,0 @@
-[[file-language]]
-= File Language
-:page-source: core/camel-base/src/main/docs/file-language.adoc
-
-*Since Camel 1.1*
-
-The file language is merged with
-xref:simple-language.adoc[Simple] language which means you can use all the file
-syntax directly within the simple language.
-
-The File Expression Language is an extension to the
-xref:simple-language.adoc[Simple] language, adding file related capabilities.
-These capabilities are related to common use cases working with file
-path and names. The goal is to allow expressions to be used with the
-File and FTP components for setting
-dynamic file patterns for both consumer and producer.
-
-== File Language options
-
-// language options: START
-The File language supports 2 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| resultType |  | String | Sets the class name of the result type (type from output)
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Syntax
-
-This language is an *extension* to the xref:simple-language.adoc[Simple] language
-so the xref:simple-language.adoc[Simple] syntax applies also. So the table below
-only lists the additional.  +
- As opposed to xref:simple-language.adoc[Simple] language
-xref:file-language.adoc[File Language] also supports
-xref:constant-language.adoc[Constant] expressions so you can enter a fixed
-filename.
-
-All the file tokens use the same expression name as the method on the
-`java.io.File` object, for instance `file:absolute` refers to the
-`java.io.File.getAbsolute()` method. Notice that not all expressions are
-supported by the current Exchange. For instance the xref:components::ftp-component.adoc[FTP]
-component supports some of the options, where as the
-File component supports all of them.
-
-
-[width="100%",cols="10%,10%,10%,10%,10%,25%,25%",options="header",]
-|===
-|Expression |Type |File Consumer |File Producer |FTP Consumer |FTP Producer |Description
-
-|file:name |String |yes |no |yes |no |refers to the file name (is relative to the starting directory, see note
-below)
-
-|file:name.ext |String |yes |no |yes |no |refers to the file extension only
-
-|file:name.ext.single |String |yes |no |yes |no |refers to the file extension. If the file
-extension has mutiple dots, then this expression strips and only returns
-the last part.
-
-|file:name.noext |String |yes |no |yes |no |refers to the file name with no extension (is relative to the starting
-directory, see note below)
-
-|file:name.noext.single |String |yes |no |yes |no |refers to the file name with no extension (is
-relative to the starting directory, see note below). If the file
-extension has multiple dots, then this expression strips only the last
-part, and keep the others.
-
-|file:onlyname |String |yes |no |yes |no |refers to the file name only with no leading paths.
-
-|file:onlyname.noext |String |yes |no |yes |no |refers to the file name only with no extension and with no leading
-paths.
-
-|file:onlyname.noext.single |String |yes |no |yes |no |refers to the file name only with no extension and
-with no leading paths. If the file extension has multiple dots, then
-this expression strips only the last part, and keep the others.
-
-|file:ext |String |yes |no |yes |no |refers to the file extension only
-
-|file:parent |String |yes |no |yes |no |refers to the file parent
-
-|file:path |String |yes |no |yes |no |refers to the file path
-
-|file:absolute |Boolean |yes |no |no |no |refers to whether the file is regarded as absolute or relative
-
-|file:absolute.path |String |yes |no |no |no |refers to the absolute file path
-
-|file:length |Long |yes |no |yes |no |refers to the file length returned as a Long type
-
-|file:size |Long |yes |no |yes |no |refers to the file length returned as a Long type
-
-|file:modified |Date |yes |no |yes |no |Refers to the file last modified returned as a Date type
-
-|date:_command:pattern_ |String |yes |yes |yes |yes |for date formatting using the `java.text.SimpleDateFormat` patterns. Is
-an *extension* to the xref:simple-language.adoc[Simple] language. Additional
-command is: *file* (consumers only) for the last modified timestamp of
-the file. Notice: all the commands from the xref:simple-language.adoc[Simple]
-language can also be used.
-|===
-
-== File token example
-
-=== Relative paths
-
-We have a `java.io.File` handle for the file `hello.txt` in the
-following *relative* directory: `.\filelanguage\test`. And we configure
-our endpoint to use this starting directory `.\filelanguage`. The file
-tokens will return as:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Expression |Returns
-
-|file:name |test\hello.txt
-
-|file:name.ext |txt
-
-|file:name.noext |test\hello
-
-|file:onlyname |hello.txt
-
-|file:onlyname.noext |hello
-
-|file:ext |txt
-
-|file:parent |filelanguage\test
-
-|file:path |filelanguage\test\hello.txt
-
-|file:absolute |false
-
-|file:absolute.path |\workspace\camel\camel-core\target\filelanguage\test\hello.txt
-|===
-
-=== Absolute paths
-
-We have a `java.io.File` handle for the file `hello.txt` in the
-following *absolute* directory:
-`\workspace\camel\camel-core\target\filelanguage\test`. And we configure
-out endpoint to use the absolute starting directory
-`\workspace\camel\camel-core\target\filelanguage`. The file tokens will
-return as:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Expression |Returns
-
-|file:name |test\hello.txt 
-
-|file:name.ext |txt
-
-|file:name.noext |test\hello
-
-|file:onlyname |hello.txt
-
-|file:onlyname.noext |hello
-
-|file:ext |txt
-
-|file:parent |\workspace\camel\camel-core\target\filelanguage\test
-
-|file:path |\workspace\camel\camel-core\target\filelanguage\test\hello.txt
-
-|file:absolute |true
-
-|file:absolute.path |\workspace\camel\camel-core\target\filelanguage\test\hello.txt
-|===
-
-== Samples
-
-You can enter a fixed xref:constant-language.adoc[Constant] expression such as
-`myfile.txt`:
-
-[source]
-----
-fileName="myfile.txt"
-----
-
-Lets assume we use the file consumer to read files and want to move the
-read files to backup folder with the current date as a sub folder. This
-can be archieved using an expression like:
-
-[source]
-----
-fileName="backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"
-----
-
-relative folder names are also supported so suppose the backup folder
-should be a sibling folder then you can append .. as:
-
-[source]
-----
-fileName="../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"
-----
-
-As this is an extension to the xref:simple-language.adoc[Simple] language we have
-access to all the goodies from this language also, so in this use case
-we want to use the in.header.type as a parameter in the dynamic
-expression:
-
-[source]
-----
-fileName="../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak"
-----
-
-If you have a custom Date you want to use in the expression then Camel
-supports retrieving dates from the message header.
-
-[source]
-----
-fileName="orders/order-${in.header.customerId}-${date:in.header.orderDate:yyyyMMdd}.xml"
-----
-
-And finally we can also use a bean expression to invoke a POJO class
-that generates some String output (or convertible to String) to be used:
-
-[source]
-----
-fileName="uniquefile-${bean:myguidgenerator.generateid}.txt"
-----
-
-And of course all this can be combined in one expression where you can
-use the xref:file-language.adoc[File Language], xref:file-language.adoc[Simple]
-and the xref:components::bean-component.adoc[Bean] language in one combined expression. This
-is pretty powerful for those common file path patterns.
-
-== Using Spring PropertyPlaceholderConfigurer together with the File component
-
-In Camel you can use the xref:file-language.adoc[File Language] directly
-from the xref:simple-language.adoc[Simple] language which makes a
-Content Based Router easier to do in
-Spring XML, where we can route based on file extensions as shown below:
-
-[source,xml]
-----
-<from uri="file://input/orders"/>
-   <choice>
-     <when>
-         <simple>${file:ext} == 'txt'</simple>
-         <to uri="bean:orderService?method=handleTextFiles"/>
-     </when>
-     <when>
-         <simple>${file:ext} == 'xml'</simple>
-         <to uri="bean:orderService?method=handleXmlFiles"/>
-     </when>
-     <otherwise>
-         <to uri="bean:orderService?method=handleOtherFiles"/>
-     </otherwise>
-  </choice>
-----
-
-If you use the `fileName` option on the File endpoint
-to set a dynamic filename using the xref:file-language.adoc[File Language] then make sure you  +
- use the alternative syntax to avoid
-clashing with Springs `PropertyPlaceholderConfigurer`.
-
-*bundle-context.xml*
-
-[source,xml]
-----
-<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-    <property name="location" value="classpath:bundle-context.cfg" />
-</bean>
-
-<bean id="sampleRoute" class="SampleRoute">
-    <property name="fromEndpoint" value="${fromEndpoint}" />
-    <property name="toEndpoint" value="${toEndpoint}" />
-</bean>
-----
-
-*bundle-context.cfg*
-
-[source]
-----
-fromEndpoint=activemq:queue:test
-toEndpoint=file://fileRoute/out?fileName=test-$simple{date:now:yyyyMMdd}.txt
-----
-
-Notice how we use the $simple\{ } syntax in the `toEndpoint` above. +
- If you don't do this, there is a clash and Spring will throw an
-exception like
-
-[source,java]
-----------------------------------------------------------------------------------------------------
-org.springframework.beans.factory.BeanDefinitionStoreException:
-Invalid bean definition with name 'sampleRoute' defined in class path resource [bundle-context.xml]:
-Could not resolve placeholder 'date:now:yyyyMMdd'
-----------------------------------------------------------------------------------------------------
-
-== Dependencies
-
-The File language is part of *camel-core*.
diff --git a/docs/components/modules/ROOT/pages/header-language.adoc b/docs/components/modules/ROOT/pages/header-language.adoc
deleted file mode 100644
index e80167b..0000000
--- a/docs/components/modules/ROOT/pages/header-language.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-[[header-language]]
-= Header Language
-:page-source: core/camel-base/src/main/docs/header-language.adoc
-
-*Since Camel 1.5*
-
-The Header Expression Language allows you to extract values of named
-headers.
-
-== Header Options
-
-// language options: START
-The Header language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Example usage
-
-The recipientList element of the Spring DSL can utilize a header
-expression like:
-
-In this case, the list of recipients are contained in the header
-'myHeader'.
-
-And the same example in Java DSL:
-
-And with a slightly different syntax where you use the builder to the
-fullest (i.e. avoid using parameters but using stacked operations,
-notice that header is not a parameter but a stacked method call)
-
-[source,java]
-----
-from("direct:a").recipientList().header("myHeader");
-----
-
-== Dependencies
-
-The Header language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/index.adoc b/docs/components/modules/ROOT/pages/index.adoc
index c06978c..ee623de 100644
--- a/docs/components/modules/ROOT/pages/index.adoc
+++ b/docs/components/modules/ROOT/pages/index.adoc
@@ -1,9 +1,12 @@
 [list-of-camel-components]
-= List of Camel components
+= Components
+:toc:
 
 The following Apache Camel artifacts are provided:
 
-== Components
+Below is the list of components that are provided by Apache Camel.
+
+== List of Components
 
 // components: START
 Number of Components: 305 in 243 JAR artifacts (0 deprecated)
@@ -625,152 +628,6 @@ Number of Components: 305 in 243 JAR artifacts (0 deprecated)
 |===
 // components: END
 
-== Data Formats
-
-// dataformats: START
-Number of Data Formats: 45 in 37 JAR artifacts (0 deprecated)
-
-[width="100%",cols="4,1,5",options="header"]
-|===
-| Data Format | Since | Description
-
-| xref:any23-dataformat.adoc[Any23] (camel-any23) | 3.0 | Any23 data format is used for parsing data to RDF.
-
-| xref:asn1-dataformat.adoc[ASN.1 File] (camel-asn1) | 2.20 | The ASN.1 data format is used for file transfer with telecommunications protocols.
-
-| xref:avro-dataformat.adoc[Avro] (camel-avro) | 2.14 | The Avro data format is used for serialization and deserialization of messages using Apache Avro binary dataformat.
-
-| xref:barcode-dataformat.adoc[Barcode] (camel-barcode) | 2.14 | The Barcode data format is used for creating barccode images (such as QR-Code)
-
-| xref:base64-dataformat.adoc[Base64] (camel-base64) | 2.11 | The Base64 data format is used for base64 encoding and decoding.
-
-| xref:beanio-dataformat.adoc[BeanIO] (camel-beanio) | 2.10 | The BeanIO data format is used for working with flat payloads (such as CSV, delimited, or fixed length formats).
-
-| xref:bindy-dataformat.adoc[Bindy CSV] (camel-bindy) | 2.0 | The Bindy data format is used for working with flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
-
-| xref:bindy-dataformat.adoc[Bindy Fixed Length] (camel-bindy) | 2.0 | The Bindy data format is used for working with flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
-
-| xref:bindy-dataformat.adoc[Bindy Key Value Pair] (camel-bindy) | 2.0 | The Bindy data format is used for working with flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
-
-| xref:cbor-dataformat.adoc[CBOR] (camel-cbor) | 3.0 | CBOR data format is used for unmarshal a CBOR payload to POJO or to marshal POJO back to CBOR payload.
-
-| xref:crypto-dataformat.adoc[Crypto (Java Cryptographic Extension)] (camel-crypto) | 2.3 | Crypto data format is used for encrypting and decrypting of messages using Java Cryptographic Extension.
-
-| xref:csv-dataformat.adoc[CSV] (camel-csv) | 1.3 | The CSV data format is used for handling CSV payloads.
-
-| xref:fhirJson-dataformat.adoc[FHIR JSon] (camel-fhir) | 2.21 | The FHIR JSon data format is used to marshall/unmarshall to/from FHIR objects to/from JSON.
-
-| xref:fhirXml-dataformat.adoc[FHIR XML] (camel-fhir) | 2.21 | The FHIR XML data format is used to marshall/unmarshall from/to FHIR objects to/from XML.
-
-| xref:flatpack-dataformat.adoc[Flatpack] (camel-flatpack) | 2.1 | The Flatpack data format is used for working with flat payloads (such as CSV, delimited, or fixed length formats).
-
-| xref:grok-dataformat.adoc[Grok] (camel-grok) | 3.0 | The Grok data format is used for unmarshalling unstructured data to objects using Logstash based Grok patterns.
-
-| xref:gzipdeflater-dataformat.adoc[GZip Deflater] (camel-zip-deflater) | 2.0 | The GZip data format is a message compression and de-compression format (which works with the popular gzip/gunzip tools).
-
-| xref:hl7-dataformat.adoc[HL7] (camel-hl7) | 2.0 | The HL7 data format can be used to marshal or unmarshal HL7 (Health Care) model objects.
-
-| xref:ical-dataformat.adoc[iCal] (camel-ical) | 2.12 | The iCal dataformat is used for working with iCalendar messages.
-
-| xref:jacksonxml-dataformat.adoc[JacksonXML] (camel-jacksonxml) | 2.16 | JacksonXML data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
-
-| xref:jaxb-dataformat.adoc[JAXB] (camel-jaxb) | 1.0 | JAXB data format uses the JAXB2 XML marshalling standard to unmarshal an XML payload into Java objects or to marshal Java objects into an XML payload.
-
-| xref:json-fastjson-dataformat.adoc[JSon Fastjson] (camel-fastjson) | 2.20 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
-
-| xref:json-gson-dataformat.adoc[JSon GSon] (camel-gson) | 2.10 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
-
-| xref:json-jackson-dataformat.adoc[JSon Jackson] (camel-jackson) | 2.0 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
-
-| xref:json-johnzon-dataformat.adoc[JSon Johnzon] (camel-johnzon) | 2.18 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
-
-| xref:json-xstream-dataformat.adoc[JSon XStream] (camel-xstream) | 2.0 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
-
-| xref:jsonApi-dataformat.adoc[JSonApi] (camel-jsonapi) | 3.0 | JSonApi data format is used for marshal and unmarshal Json API object.
-
-| xref:lzf-dataformat.adoc[LZF Deflate Compression] (camel-lzf) | 2.17 | The LZF data format is a message compression and de-compression format (uses the LZF deflate algorithm).
-
-| xref:mime-multipart-dataformat.adoc[MIME Multipart] (camel-mail) | 2.17 | The MIME Multipart data format is used for marshalling Camel messages with attachments into MIME-Multipart message, and vise-versa.
-
-| xref:pgp-dataformat.adoc[PGP] (camel-crypto) | 2.9 | PGP data format is used for encrypting and decrypting of messages using Java Cryptographic Extension and PGP.
-
-| xref:protobuf-dataformat.adoc[Protobuf] (camel-protobuf) | 2.2 | The Protobuf data format is used for serializing between Java objects and the Google Protobuf protocol.
-
-| xref:rss-dataformat.adoc[RSS] (camel-rss) | 2.1 | RSS data format is used for working with RSS sync feed Java Objects and transforming to XML and vice-versa.
-
-| xref:soapjaxb-dataformat.adoc[SOAP] (camel-soap) | 2.3 | SOAP is a data format which uses JAXB2 and JAX-WS annotations to marshal and unmarshal SOAP payloads.
-
-| xref:syslog-dataformat.adoc[Syslog] (camel-syslog) | 2.6 | The Syslog dataformat is used for working with RFC3164 and RFC5424 messages (logging and monitoring).
-
-| xref:tarfile-dataformat.adoc[Tar File] (camel-tarfile) | 2.16 | The Tar File data format is a message compression and de-compression format of tar files.
-
-| xref:thrift-dataformat.adoc[Thrift] (camel-thrift) | 2.20 | The Thrift data format is used for serialization and deserialization of messages using Apache Thrift binary dataformat.
-
-| xref:tidyMarkup-dataformat.adoc[TidyMarkup] (camel-tagsoup) | 2.0 | TidyMarkup data format is used for parsing HTML and return it as pretty well-formed HTML.
-
-| xref:univocity-csv-dataformat.adoc[uniVocity CSV] (camel-univocity-parsers) | 2.15 | The uniVocity CSV data format is used for working with CSV (Comma Separated Values) flat payloads.
-
-| xref:univocity-fixed-dataformat.adoc[uniVocity Fixed Length] (camel-univocity-parsers) | 2.15 | The uniVocity Fixed Length data format is used for working with fixed length flat payloads.
-
-| xref:univocity-tsv-dataformat.adoc[uniVocity TSV] (camel-univocity-parsers) | 2.15 | The uniVocity TSV data format is used for working with TSV (Tabular Separated Values) flat payloads.
-
-| xref:secureXML-dataformat.adoc[XML Security] (camel-xmlsecurity) | 2.0 | The XML Security data format facilitates encryption and decryption of XML payloads.
-
-| xref:xstream-dataformat.adoc[XStream] (camel-xstream) | 1.3 | XSTream data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
-
-| xref:yaml-snakeyaml-dataformat.adoc[YAML SnakeYAML] (camel-snakeyaml) | 2.17 | YAML is a data format to marshal and unmarshal Java objects to and from YAML.
-
-| xref:zipdeflater-dataformat.adoc[Zip Deflate Compression] (camel-zip-deflater) | 2.12 | Zip Deflate Compression data format is a message compression and de-compression format (not zip files).
-
-| xref:zipfile-dataformat.adoc[Zip File] (camel-zipfile) | 2.11 | The Zip File data format is a message compression and de-compression format of zip files.
-|===
-// dataformats: END
-
-== Expression Languages
-
-// languages: START
-Number of Languages: 17 in 11 JAR artifacts (0 deprecated)
-
-[width="100%",cols="4,1,5",options="header"]
-|===
-| Language | Since | Description
-
-| xref:bean-language.adoc[Bean method] (camel-bean) | 1.3 | To use a Java bean (aka method call) in Camel expressions or predicates.
-
-| xref:constant-language.adoc[Constant] (camel-base) | 1.5 | To use a constant value in Camel expressions or predicates.
-
-| xref:exchangeProperty-language.adoc[ExchangeProperty] (camel-base) | 2.0 | To use a Camel Exchange property in expressions or predicates.
-
-| xref:file-language.adoc[File] (camel-base) | 1.1 | For expressions and predicates using the file/simple language.
-
-| xref:groovy-language.adoc[Groovy] (camel-groovy) | 1.3 | To use Groovy scripts in Camel expressions or predicates.
-
-| xref:header-language.adoc[Header] (camel-base) | 1.5 | To use a Camel Message header in expressions or predicates.
-
-| xref:hl7terser-language.adoc[HL7 Terser] (camel-hl7) | 2.11 | To use HL7 terser scripts in Camel expressions or predicates.
-
-| xref:jsonpath-language.adoc[JsonPath] (camel-jsonpath) | 2.13 | To use JsonPath in Camel expressions or predicates.
-
-| xref:mvel-language.adoc[MVEL] (camel-mvel) | 2.0 | To use MVEL scripts in Camel expressions or predicates.
-
-| xref:ognl-language.adoc[OGNL] (camel-ognl) | 1.1 | To use OGNL scripts in Camel expressions or predicates.
-
-| xref:ref-language.adoc[Ref] (camel-base) | 2.8 | Reference to an existing Camel expression or predicate, which is looked up from the Camel registry.
-
-| xref:simple-language.adoc[Simple] (camel-base) | 1.1 | To use Camels built-in Simple language in Camel expressions or predicates.
-
-| xref:spel-language.adoc[SpEL] (camel-spring) | 2.7 | To use Spring Expression Language (SpEL) in Camel expressions or predicates.
-
-| xref:tokenize-language.adoc[Tokenize] (camel-base) | 2.0 | To use Camel message body or header with a tokenizer in Camel expressions or predicates.
-
-| xref:xtokenize-language.adoc[XML Tokenize] (camel-jaxp) | 2.14 | To use Camel message body or header with a XML tokenizer in Camel expressions or predicates.
-
-| xref:xpath-language.adoc[XPath] (camel-xpath) | 1.1 | To use XPath (XML) in Camel expressions or predicates.
-
-| xref:xquery-language.adoc[XQuery] (camel-saxon) | 1.0 | To use XQuery (XML) in Camel expressions or predicates.
-|===
-// languages: END
-
 == Miscellaneous Components
 
 // others: START
diff --git a/docs/components/modules/ROOT/pages/ref-language.adoc b/docs/components/modules/ROOT/pages/ref-language.adoc
deleted file mode 100644
index 1423291..0000000
--- a/docs/components/modules/ROOT/pages/ref-language.adoc
+++ /dev/null
@@ -1,58 +0,0 @@
-[[ref-language]]
-= Ref Language
-:page-source: core/camel-base/src/main/docs/ref-language.adoc
-
-*Since Camel 2.8*
-
-The Ref Expression Language is really just a way to lookup a custom
-Expression or Predicate from the Registry.
-
-This is particular useable in XML DSLs.
-
-== Ref Language options
-
-// language options: START
-The Ref language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Example usage
-
-The Splitter in XML DSL can utilize a custom
-expression using `<ref>` like:
-
-[source,xml]
-----
-<bean id="myExpression" class="com.mycompany.MyCustomExpression"/>
-
-<route>
-  <from uri="seda:a"/>
-  <split>
-    <ref>myExpression</ref>   
-    <to uri="mock:b"/>
-  </split>     
-</route>
-----
-
-in this case, the Message coming from the seda:a
-Endpoint will be splitted using a custom
-Expression which has the id `myExpression` in the
-Registry.
-
-And the same example using Java DSL:
-
-[source,java]
-----
-from("seda:a").split().ref("myExpression").to("seda:b");
-----
-
-== Dependencies
-
-The Ref language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/simple-language.adoc b/docs/components/modules/ROOT/pages/simple-language.adoc
deleted file mode 100644
index 7b1e4fa..0000000
--- a/docs/components/modules/ROOT/pages/simple-language.adoc
+++ /dev/null
@@ -1,878 +0,0 @@
-[[simple-language]]
-= Simple Language
-:page-source: core/camel-base/src/main/docs/simple-language.adoc
-
-*Since Camel 1.1*
-
-The Simple Expression Language was a really simple language when it was
-created, but has since grown more powerful. It is primarily intended for
-being a really small and simple language for evaluating
-Expressions and Predicates
-without requiring any new dependencies or knowledge of
-xref:xpath-language.adoc[XPath]; so it is ideal for testing in camel-core. The
-idea was to cover 95% of the common use cases when you need a little bit
-of expression based script in your Camel routes.
-
-However for much more complex use cases you are generally recommended to
-choose a more expressive and powerful language such as:
-
-* xref:groovy-language.adoc[Groovy]
-* xref:spel-language.adoc[SpEL]
-* xref:mvel-component.adoc[MVEL]
-* xref:ognl-language.adoc[OGNL]
-
-The simple language uses `${body`} placeholders for complex expressions
-where the expression contains constant literals. The $\{ } placeholders
-can be omitted if the expression is only the token itself.
-
-TIP: *Alternative syntax* You can also use the alternative syntax which
-uses `$simple{ }` as placeholders. This can be used in situations to avoid clashes when using for example
-Spring property placeholder together with Camel.
-
-
-== Simple Language options
-
-// language options: START
-The Simple language supports 2 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| resultType |  | String | Sets the class name of the result type (type from output)
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Variables
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Variable |Type |Description
-
-|camelId |String |the CamelContext name
-
-|camelContext.*OGNL* |Object |the CamelContext invoked using a Camel OGNL expression.
-
-|exchange |Exchange |the Exchange
-
-|exchange.*OGNL* |Object |the Exchange invoked using a Camel
-OGNL expression.
-
-|exchangeId |String |the exchange id
-
-|id |String |the input message id
-
-|body |Object |the input body
-
-|in.body |Object |*deprecated* the input body
-
-|body.*OGNL* |Object |the input body invoked using a Camel OGNL expression.
-
-|in.body.*OGNL* |Object |*deprecated* the input body invoked using a Camel OGNL expression.
-
-|bodyAs(_type_) |Type |Converts the body to the given type determined by its
-classname. The converted body can be null.
-
-|bodyAs(_type_).*OGNL* |Object |Converts the body to the given type determined by its
-classname and then invoke methods using a Camel OGNL expression. The
-converted body can be null.
-
-|bodyOneLine | String | Converts the body to a String and removes all line-breaks so the string is in one line.
-
-|mandatoryBodyAs(_type_) |Type |Converts the body to the given type determined by its
-classname, and expects the body to be not null.
-
-|mandatoryBodyAs(_type_).*OGNL* |Object |Converts the body to the given type determined by its
-classname and then invoke methods using a Camel OGNL expression.
-
-|header.foo |Object |refer to the input foo header
-
-|header:foo |Object |refer to the input foo header
-
-|header[foo] |Object |refer to the input foo header
-
-|headers.foo |Object |refer to the input foo header
-
-|headers:foo |Object |refer to the input foo header
-
-|headers[foo] |Object |refer to the input foo header
-
-|in.header.foo |Object |*deprecated* refer to the input foo header
-
-|in.header:foo |Object |*deprecated* refer to the input foo header
-
-|in.header[foo] |Object |*deprecated* refer to the input foo header
-
-|in.headers.foo |Object |*deprecated* refer to the input foo header
-
-|in.headers:foo |Object |*deprecated* refer to the input foo header
-
-|in.headers[foo] |Object |*deprecated* refer to the input foo header
-
-|header.foo[bar] |Object |regard input foo header as a map and perform lookup on the
-map with bar as key
-
-|in.header.foo[bar] |Object |*deprecated* regard input foo header as a map and perform lookup on the
-map with bar as key
-
-|in.headers.foo[bar] |Object |*deprecated* regard input foo header as a map and perform lookup on the
-map with bar as key
-
-|header.foo.*OGNL* |Object |refer to the input foo header and invoke its value using a
-Camel OGNL expression.
-
-|in.header.foo.*OGNL* |Object |*deprecated* refer to the input foo header and invoke its value using a
-Camel OGNL expression.
-
-|in.headers.foo.*OGNL* |Object |*deprecated* refer to the input foo header and invoke its value using a
-Camel OGNL expression.
-
-|headerAs(_key_,_type_) |Type |converts the header to the given type determined by its
-classname
-
-|headers |Map |refer to the input headers
-
-|in.headers |Map |*deprecated* refer to the input headers
-
-|exchangeProperty.foo |Object |refer to the foo property on the exchange
-
-|exchangeProperty[foo] |Object |refer to the foo property on the exchange
-
-|exchangeProperty.foo.*OGNL* |Object |refer to the foo property on the exchange and invoke its
-value using a Camel OGNL expression.
-
-|sys.foo |String |refer to the JVM system property
-
-|sysenv.foo |String |refer to the system environment variable
-
-|env.foo |String |refer to the system environment variable
-
-|exception |Object |refer to the exception object on the exchange, is *null* if
-no exception set on exchange. Will fallback and grab caught exceptions
-(`Exchange.EXCEPTION_CAUGHT`) if the Exchange has any.
-
-|exception.*OGNL* |Object |refer to the exchange exception invoked using a Camel OGNL
-expression object
-
-|exception.message |String |refer to the exception.message on the exchange, is *null* if no
-exception set on exchange. Will fallback and grab caught exceptions
-(`Exchange.EXCEPTION_CAUGHT`) if the Exchange has any.
-
-|exception.stacktrace |String |refer to the exception.stracktrace on the exchange, is
-*null* if no exception set on exchange. Will fallback and grab caught
-exceptions (`Exchange.EXCEPTION_CAUGHT`) if the Exchange has any.
-
-|date:_command_ |Date |evaluates to a Date object.
-Supported commands are: *now* for current timestamp, *in.header.xxx* or
-*header.xxx* to use the Date object header with the key xxx.
-*exchangeProperty.xxx* to use the Date object in the exchange property with the key xxx.
-*file* for the last modified timestamp of the file (available with a File consumer).
-Command accepts offsets such as: *now-24h* or *in.header.xxx+1h* or even *now+1h30m-100*.
-
-|date:_command:pattern_ |String |Date formatting using `java.text.SimpleDataFormat` patterns.
-
-|date-with-timezone:_command:timezone:pattern_ |String |Date formatting using `java.text.SimpleDataFormat` timezones and patterns.
-
-|bean:_bean expression_ |Object |Invoking a bean expression using the xref:bean-component.adoc[Bean] language.
-Specifying a method name you must use dot as separator. We also support
-the ?method=methodname syntax that is used by the xref:bean-component.adoc[Bean]
-component.
-
-|`properties:key:default` |String |Lookup a property with the given key. If the key does
-not exists or has no value, then an optional default value can be
-specified.
-
-|routeId |String |Returns the id of the current route the
-Exchange is being routed.
-
-|stepId |String |Returns the id of the current step the
-Exchange is being routed.
-
-|threadName |String |Returns the name of the current thread. Can be used for
-logging purpose.
-
-|ref:xxx |Object |To lookup a bean from the Registry with
-the given id.
-
-|type:name.field |Object |To refer to a type or field by its FQN name. To refer to a
-field you can append .FIELD_NAME. For example you can refer to the
-constant field from Exchange as: `org.apache.camel.Exchange.FILE_NAME`
-
-|null |null |represents a *null*
-
-|random_(value)_ |Integer |returns a random Integer between 0 (included) and _value_
-(excluded)
-
-|random_(min,max)_ |Integer |returns a random Integer between _min_ (included) and
-_max_ (excluded)
-
-|collate(group) |List |The collate function iterates the message body and groups
-the data into sub lists of specified size. This can be used with the
-Splitter EIP to split a message body and group/batch
-the splitted sub message into a group of N sub lists. This method works
-similar to the collate method in Groovy.
-
-|skip(number) |Iterator |The skip function iterates the message body and skips
-the first number of items. This can be used with the
-Splitter EIP to split a message body and skip the first N number of items.
-
-|messageHistory |String |The message history of the current exchange how it has
-been routed. This is similar to the route stack-trace message history
-the error handler logs in case of an unhandled exception.
-
-|messageHistory(false) |String |As messageHistory but without the exchange details (only
-includes the route strack-trace). This can be used if you do not want to
-log sensitive data from the message itself.
-|=======================================================================
-
-== OGNL expression support
-
-INFO:Camel's OGNL support is for invoking methods only. You cannot access
-fields. Camel support accessing the length field of Java arrays.
-
-
-The xref:simple-language.adoc[Simple] and xref:simple-language.adoc[Bean] language now
-supports a Camel OGNL notation for invoking beans in a chain like
-fashion. Suppose the Message IN body contains a POJO which has a `getAddress()`
-method.
-
-Then you can use Camel OGNL notation to access the address object:
-
-[source,java]
---------------------------------
-simple("${body.address}")
-simple("${body.address.street}")
-simple("${body.address.zip}")
---------------------------------
-
-Camel understands the shorthand names for getters, but you can invoke
-any method or use the real name such as:
-
-[source,java]
---------------------------------------
-simple("${body.address}")
-simple("${body.getAddress.getStreet}")
-simple("${body.address.getZip}")
-simple("${body.doSomething}")
---------------------------------------
-
-You can also use the null safe operator (`?.`) to avoid NPE if for
-example the body does NOT have an address
-
-[source,java]
-----------------------------------
-simple("${body?.address?.street}")
-----------------------------------
-
-It is also possible to index in `Map` or `List` types, so you can do:
-
-[source,java]
----------------------------
-simple("${body[foo].name}")
----------------------------
-
-To assume the body is `Map` based and lookup the value with `foo` as
-key, and invoke the `getName` method on that value.
-
-If the key has space, then you *must* enclose the key with quotes, for
-example 'foo bar':
-
-[source,java]
----------------------------------
-simple("${body['foo bar'].name}")
----------------------------------
-
-You can access the `Map` or `List` objects directly using their key name
-(with or without dots) :
-
-[source,java]
-------------------------------
-simple("${body[foo]}")
-simple("${body[this.is.foo]}")
-------------------------------
-
-Suppose there was no value with the key `foo` then you can use the null
-safe operator to avoid the NPE as shown:
-
-[source,java]
-----------------------------
-simple("${body[foo]?.name}")
-----------------------------
-
-You can also access `List` types, for example to get lines from the
-address you can do:
-
-[source,java]
-----------------------------------
-simple("${body.address.lines[0]}")
-simple("${body.address.lines[1]}")
-simple("${body.address.lines[2]}")
-----------------------------------
-
-There is a special `last` keyword which can be used to get the last
-value from a list.
-
-[source,java]
--------------------------------------
-simple("${body.address.lines[last]}")
--------------------------------------
-
-And to get the 2nd last you can subtract a number, so we can use
-`last-1` to indicate this:
-
-[source,java]
----------------------------------------
-simple("${body.address.lines[last-1]}")
----------------------------------------
-
-And the 3rd last is of course:
-
-[source,java]
----------------------------------------
-simple("${body.address.lines[last-2]}")
----------------------------------------
-
-And you can call the size method on the list with
-
-[source,java]
-------------------------------------
-simple("${body.address.lines.size}")
-------------------------------------
-
-Camel supports the length field for Java arrays as well, eg:
-
-[source,java]
----------------------------------------------------
-String[] lines = new String[]{"foo", "bar", "cat"};
-exchange.getIn().setBody(lines);
-
-simple("There are ${body.length} lines")
----------------------------------------------------
-
-And yes you can combine this with the operator support as shown below:
-
-[source,java]
-------------------------------------
-simple("${body.address.zip} > 1000")
-------------------------------------
-
-== Operator support
-
-The parser is limited to only support a single operator.
-
-To enable it the left value must be enclosed in $\{ }. The syntax is:
-
-[source]
---------------------------
-${leftValue} OP rightValue
---------------------------
-
-Where the `rightValue` can be a String literal enclosed in `' '`,
-`null`, a constant value or another expression enclosed in $\{ }.
-
-IMPORTANT: There *must* be spaces around the operator.
-
-Camel will automatically type convert the rightValue type to the
-leftValue type, so it is able to eg. convert a string into a numeric so
-you can use > comparison for numeric values.
-
-The following operators are supported:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Operator |Description
-
-|== |equals
-
-|=~ |equals ignore case (will ignore case when comparing String values)
-
-|> |greater than
-
-|>= |greater than or equals
-
-|< |less than
-
-|<= |less than or equals
-
-|!=~ |not equals
-
-|!=~ |not equals ignore case (will ignore case when comparing String values)
-
-|contains |For testing if contains in a string based value
-
-|!contains |For testing if not contains in a string based value
-
-|~~ |For testing if contains by ignoring case sensitivity in a string based value
-
-|!~~ |For testing if not contains by ignoring case sensitivity in a string based value
-
-|regex |For matching against a given regular expression pattern defined as a
-String value
-
-|!regex |For not matching against a given regular expression pattern defined as a
-String value
-
-|in |For matching if in a set of values, each element must be separated by
-comma. If you want to include an empty value, then it must be defined using double comma, eg ',,bronze,silver,gold', which
-is a set of four values with an empty value and then the three medals.
-
-|!in |For matching if not in a set of values, each element must be separated
-by comma. If you want to include an empty value, then it must be defined using double comma, eg ',,bronze,silver,gold', which
-is a set of four values with an empty value and then the three medals.
-
-|is |For matching if the left hand side type is an instanceof the value.
-
-|!is |For matching if the left hand side type is not an instanceof the value.
-
-|range |For matching if the left hand side is within a range of values defined
-as numbers: `from..to`..
-
-|!range |For matching if the left hand side is not within a range of values
-defined as numbers: `from..to`. .
-
-|startsWith |For testing if the left hand side string starts
-with the right hand string.
-
-|endsWith |For testing if the left hand side string ends with
-the right hand string.
-|===
-
-And the following unary operators can be used:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Operator |Description
-
-|++ |To increment a number by one. The left hand side must be a
-function, otherwise parsed as literal.
-
-|-- |To decrement a number by one. The left hand side must be a
-function, otherwise parsed as literal.
-
-|\ |To escape a value, eg \$, to indicate a $ sign.
-Special: Use \n for new line, \t for tab, and \r for carriage return.
-*Notice:* Escaping is *not* supported using the
-xref:file-language.adoc[File Language]. *Notice:* The escape character is not supported, use the
-following three special escaping instead.
-
-|\n |To use newline character.
-
-|\t |To use tab character.
-
-|\r |To use carriage return character.
-
-|\} |To use the } character as text
-|===
-
-And the following logical operators can be used to group expressions:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Operator |Description
-
-|&& |The logical and operator is used to group two expressions.
-
-| \|\| |The logical or operator is used to group two expressions.
-|===
-
-The syntax for AND is:
-
-[source]
-----------------------------------------------------------
-${leftValue} OP rightValue && ${leftValue} OP rightValue
-----------------------------------------------------------
-
-And the syntax for OR is:
-
-[source]
----------------------------------------------------------
-${leftValue} OP rightValue || ${leftValue} OP rightValue
----------------------------------------------------------
-
-Some examples:
-
-[source,java]
-----
-// exact equals match
-simple("${in.header.foo} == 'foo'")
-
-// ignore case when comparing, so if the header has value FOO this will match
-simple("${in.header.foo} =~ 'foo'")
-
-// here Camel will type convert '100' into the type of in.header.bar and if it is an Integer '100' will also be converter to an Integer
-simple("${in.header.bar} == '100'")
-
-simple("${in.header.bar} == 100")
-
-// 100 will be converter to the type of in.header.bar so we can do > comparison
-simple("${in.header.bar} > 100")
-----
-
-=== Comparing with different types
-
-When you compare with different types such as String and int, then you
-have to take a bit care. Camel will use the type from the left hand side
-as 1st priority. And fallback to the right hand side type if both values
-couldn't be compared based on that type. +
- This means you can flip the values to enforce a specific type. Suppose
-the bar value above is a String. Then you can flip the equation:
-
-[source,java]
-----
-simple("100 < ${in.header.bar}")
-----
-
-which then ensures the int type is used as 1st priority.
-
-This may change in the future if the Camel team improves the binary
-comparison operations to prefer numeric types over String based. It's
-most often the String type which causes problem when comparing with
-numbers.
-
-[source,java]
-----
-// testing for null
-simple("${in.header.baz} == null")
-
-// testing for not null
-simple("${in.header.baz} != null")
-----
-
-And a bit more advanced example where the right value is another
-expression
-
-[source,java]
-----
-simple("${in.header.date} == ${date:now:yyyyMMdd}")
-
-simple("${in.header.type} == ${bean:orderService?method=getOrderType}")
-----
-
-And an example with contains, testing if the title contains the word
-Camel
-
-[source,java]
-----
-simple("${in.header.title} contains 'Camel'")
-----
-
-And an example with regex, testing if the number header is a 4 digit
-value:
-
-[source,java]
-----
-simple("${in.header.number} regex '\\d{4}'")
-----
-
-And finally an example if the header equals any of the values in the
-list. Each element must be separated by comma, and no space around. +
- This also works for numbers etc, as Camel will convert each element
-into the type of the left hand side.
-
-[source,java]
-----
-simple("${in.header.type} in 'gold,silver'")
-----
-
-And for all the last 3 we also support the negate test using not:
-
-[source,java]
-----
-simple("${in.header.type} !in 'gold,silver'")
-----
-
-And you can test if the type is a certain instance, eg for instance a
-String
-
-[source,java]
-----
-simple("${in.header.type} is 'java.lang.String'")
-----
-
-We have added a shorthand for all `java.lang` types so you can write it
-as:
-
-[source,java]
-----
-simple("${in.header.type} is 'String'")
-----
-
-Ranges are also supported. The range interval requires numbers and both
-from and end are inclusive. For instance to test whether a value is
-between 100 and 199:
-
-[source,java]
-----
-simple("${in.header.number} range 100..199")
-----
-
-Notice we use `..` in the range without spaces. It is based on the same
-syntax as Groovy.
-
-From *Camel 2.9* onwards the range value must be in single quotes
-
-[source,java]
-----
-simple("${in.header.number} range '100..199'")
-----
-
-=== Using Spring XML
-
-As the Spring XML does not have all the power as the Java DSL with all
-its various builder methods, you have to resort to use some other
-languages for testing with simple operators. Now you can do this with the simple
-language. In the sample below we want to test if the header is a widget
-order:
-
-[source,xml]
-----
-<from uri="seda:orders">
-   <filter>
-       <simple>${in.header.type} == 'widget'</simple>
-       <to uri="bean:orderService?method=handleWidget"/>
-   </filter>
-</from>
-----
-
-== Using and / or
-
-If you have two expressions you can combine them with the `&&` or `||`
-operator.
-
-For instance:
-
-[source,java]
------
-simple("${in.header.title} contains 'Camel' && ${in.header.type'} == 'gold'")
------
-
-And of course the `||` is also supported. The sample would be:
-
-[source,java]
------
-simple("${in.header.title} contains 'Camel' || ${in.header.type'} == 'gold'")
------
-
-*Notice:* Currently `&&` or `||` can only be used *once* in a simple
-language expression. This might change in the future. +
- So you *cannot* do:
-
-[source,java]
------
-simple("${in.header.title} contains 'Camel' && ${in.header.type'} == 'gold' && ${in.header.number} range 100..200")
------
-
-
-== Samples
-
-In the Spring XML sample below we filter based on a header value:
-
-[source,xml]
---------------------------------------------
-<from uri="seda:orders">
-   <filter>
-       <simple>${in.header.foo}</simple>
-       <to uri="mock:fooOrders"/>
-   </filter>
-</from>
---------------------------------------------
-
-The Simple language can be used for the predicate test above in the
-Message Filter pattern, where we test if the
-in message has a `foo` header (a header with the key `foo` exists). If
-the expression evaluates to *true* then the message is routed to the
-`mock:fooOrders` endpoint, otherwise the message is dropped.
-
-The same example in Java DSL:
-
-[source,java]
-----
-from("seda:orders")
-    .filter().simple("${in.header.foo}")
-        .to("seda:fooOrders");
-----
-
-You can also use the simple language for simple text concatenations such
-as:
-
-[source,java]
-----
-from("direct:hello")
-    .transform().simple("Hello ${in.header.user} how are you?")
-    .to("mock:reply");
-----
-
-Notice that we must use $\{ } placeholders in the expression now to
-allow Camel to parse it correctly.
-
-And this sample uses the date command to output current date.
-
-[source,java]
-----
-from("direct:hello")
-    .transform().simple("The today is ${date:now:yyyyMMdd} and it is a great day.")
-    .to("mock:reply");
-----
-
-And in the sample below we invoke the bean language to invoke a method
-on a bean to be included in the returned string:
-
-[source,java]
-----
-from("direct:order")
-    .transform().simple("OrderId: ${bean:orderIdGenerator}")
-    .to("mock:reply");
-----
-
-Where `orderIdGenerator` is the id of the bean registered in the
-Registry. If using Spring then it is the Spring bean
-id.
-
-If we want to declare which method to invoke on the order id generator
-bean we must prepend `.method name` such as below where we invoke the
-`generateId` method.
-
-[source,java]
-----
-from("direct:order")
-    .transform().simple("OrderId: ${bean:orderIdGenerator.generateId}")
-    .to("mock:reply");
-----
-
-We can use the `?method=methodname` option that we are familiar with the
-xref:bean-component.adoc[Bean] component itself:
-
-[source,java]
-----
-from("direct:order")
-    .transform().simple("OrderId: ${bean:orderIdGenerator?method=generateId}")
-    .to("mock:reply");
-----
-
-You can also convert the body to a given
-type, for example to ensure that it is a String you can do:
-
-[source,xml]
-----
-<transform>
-  <simple>Hello ${bodyAs(String)} how are you?</simple>
-</transform>
-----
-
-There are a few types which have a shorthand notation, so we can use
-`String` instead of `java.lang.String`. These are:
-`byte[], String, Integer, Long`. All other types must use their FQN
-name, e.g. `org.w3c.dom.Document`.
-
-It is also possible to lookup a value from a header `Map`:
-
-[source,xml]
-----
-<transform>
-  <simple>The gold value is ${header.type[gold]}</simple>
-</transform>
-----
-
-In the code above we lookup the header with name `type` and regard it as
-a `java.util.Map` and we then lookup with the key `gold` and return the
-value. If the header is not convertible to Map an exception is thrown. If the
-header with name `type` does not exist `null` is returned.
-
-You can nest functions, such as shown below:
-
-[source,xml]
-----
-<setHeader name="myHeader">
-  <simple>${properties:${header.someKey}}</simple>
-</setHeader>
-----
-
-== Referring to constants or enums
-
-Suppose you have an enum for customers
-
-And in a Content Based Router we can use
-the xref:simple-language.adoc[Simple] language to refer to this enum, to check
-the message which enum it matches.
-
-== Using new lines or tabs in XML DSLs
-
-It is easier to specify new lines or tabs in
-XML DSLs as you can escape the value now
-
-[source,xml]
-----
-<transform>
-  <simple>The following text\nis on a new line</simple>
-</transform>
-----
-
-== Leading and trailing whitespace handling
-
-The trim attribute of the expression can be
-used to control whether the leading and trailing whitespace characters
-are removed or preserved. The default value is true, which removes the
-whitespace characters.
-
-[source,xml]
-----
-<setBody>
-  <simple trim="false">You get some trailing whitespace characters.     </simple>
-</setBody>
-----
-
-== Setting result type
-
-You can now provide a result type to the xref:simple-language.adoc[Simple]
-expression, which means the result of the evaluation will be converted
-to the desired type. This is most usable to define types such as
-booleans, integers, etc.
-
-For example to set a header as a boolean type you can do:
-
-[source,java]
-----
-.setHeader("cool", simple("true", Boolean.class))
-----
-
-And in XML DSL
-
-[source,xml]
-----
-<setHeader name="cool">
-  <!-- use resultType to indicate that the type should be a java.lang.Boolean -->
-  <simple resultType="java.lang.Boolean">true</simple>
-</setHeader>
-----
-
-== Loading script from external resource
-
-You can externalize the script and have Camel load it from a resource
-such as `"classpath:"`, `"file:"`, or `"http:"`. +
- This is done using the following syntax: `"resource:scheme:location"`,
-eg to refer to a file on the classpath you can do:
-
-[source,java]
-----
-.setHeader("myHeader").simple("resource:classpath:mysimple.txt")
-----
-
-== Setting Spring beans to Exchange properties
-
-You can set a spring bean into an exchange property as shown below:
-
-[source,xml]
-----
-<bean id="myBeanId" class="my.package.MyCustomClass" />
-...
-<route>
-  ...
-  <setProperty name="monitoring.message">
-    <simple>ref:myBeanId</simple>
-  </setProperty>
-  ...
-</route>
-----
-
diff --git a/docs/components/modules/ROOT/pages/tokenize-language.adoc b/docs/components/modules/ROOT/pages/tokenize-language.adoc
deleted file mode 100644
index 250b9cf..0000000
--- a/docs/components/modules/ROOT/pages/tokenize-language.adoc
+++ /dev/null
@@ -1,40 +0,0 @@
-[[tokenize-language]]
-= Tokenize Language
-:page-source: core/camel-base/src/main/docs/tokenize-language.adoc
-
-*Since Camel 2.0*
-
-The tokenizer language is a built-in language in camel-core, which is
-most often used only with the Splitter EIP to split
-a message using a token-based strategy. +
-The tokenizer language is intended to tokenize text documents using a
-specified delimiter pattern. It can also be used to tokenize XML
-documents with some limited capability. For a truly XML-aware
-tokenization, the use of the XMLTokenizer
-language is recommended as it offers a faster, more efficient
-tokenization specifically for XML documents. For more details
-see Splitter.
-
-== Tokenize Options
-
-// language options: START
-The Tokenize language supports 11 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| token |  | String | The (start) token to use as tokenizer, for example you can use the new line token. You can use simple language as the token to support dynamic tokens.
-| endToken |  | String | The end token to use as tokenizer if using start/end token pairs. You can use simple language as the token to support dynamic tokens.
-| inheritNamespaceTagName |  | String | To inherit namespaces from a root/parent tag name when using XML You can use simple language as the tag name to support dynamic names.
-| headerName |  | String | Name of header to tokenize instead of using the message body.
-| regex | false | Boolean | If the token is a regular expression pattern. The default value is false
-| xml | false | Boolean | Whether the input is XML messages. This option must be set to true if working with XML payloads.
-| includeTokens | false | Boolean | Whether to include the tokens in the parts when using pairs The default value is false
-| group |  | String | To group N parts together, for example to split big files into chunks of 1000 lines. You can use simple language as the group to support dynamic group sizes.
-| groupDelimiter |  | String | Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter.
-| skipFirst | false | Boolean | To skip the very first element
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
diff --git a/docs/components/modules/ROOT/pages/xtokenize-language.adoc b/docs/components/modules/ROOT/pages/xtokenize-language.adoc
deleted file mode 100644
index ae10996..0000000
--- a/docs/components/modules/ROOT/pages/xtokenize-language.adoc
+++ /dev/null
@@ -1,32 +0,0 @@
-[[xtokenize-language]]
-= XML Tokenize Language
-:page-source: core/camel-jaxp/src/main/docs/xtokenize-language.adoc
-
-*Since Camel 2.14*
-
-The xml tokenizer language is a built-in language in camel-core, which
-is a truly XML-aware tokenizer that can be used with the Splitter as the
-conventional Tokenizer to efficiently and
-effectively tokenize XML documents. XMLTokenizer is capable of not only
-recognizing XML namespaces and hierarchical structures of the document
-but also more efficiently tokenizing XML documents than the conventional
-Tokenizer. 
-
-For more details see Splitter.
-
-== XML Tokenizer Options
-
-// language options: START
-The XML Tokenize language supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| headerName |  | String | Name of header to tokenize instead of using the message body.
-| mode |  | String | The extraction mode. The available extraction modes are: i - injecting the contextual namespace bindings into the extracted token (default) w - wrapping the extracted token in its ancestor context u - unwrapping the extracted token to its child content t - extracting the text content of the specified element
-| group |  | Integer | To group N parts together
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
\ No newline at end of file
diff --git a/docs/components/modules/dataformats/nav.adoc b/docs/components/modules/dataformats/nav.adoc
new file mode 100644
index 0000000..2892f79
--- /dev/null
+++ b/docs/components/modules/dataformats/nav.adoc
@@ -0,0 +1,47 @@
+// this file is auto generated and changes to it will be overwritten
+// make edits in docs/*nav.adoc.template files instead
+
+* xref:dataformats:index.adoc[Data Formats]
+** xref:dataformats:any23-dataformat.adoc[Any23 DataFormat]
+** xref:dataformats:asn1-dataformat.adoc[ASN.1 File DataFormat]
+** xref:dataformats:avro-dataformat.adoc[Avro DataFormat]
+** xref:dataformats:barcode-dataformat.adoc[Barcode DataFormat]
+** xref:dataformats:base64-dataformat.adoc[Base64 DataFormat]
+** xref:dataformats:beanio-dataformat.adoc[BeanIO DataFormat]
+** xref:dataformats:bindy-dataformat.adoc[Bindy DataFormat]
+** xref:dataformats:cbor-dataformat.adoc[CBOR DataFormat]
+** xref:dataformats:crypto-dataformat.adoc[Crypto (Java Cryptographic Extension) DataFormat]
+** xref:dataformats:csv-dataformat.adoc[CSV DataFormat]
+** xref:dataformats:fhirJson-dataformat.adoc[FHIR JSon DataFormat]
+** xref:dataformats:fhirXml-dataformat.adoc[FHIR XML DataFormat]
+** xref:dataformats:flatpack-dataformat.adoc[Flatpack DataFormat]
+** xref:dataformats:grok-dataformat.adoc[Grok DataFormat]
+** xref:dataformats:gzipdeflater-dataformat.adoc[GZip Deflater DataFormat]
+** xref:dataformats:hl7-dataformat.adoc[HL7 DataFormat]
+** xref:dataformats:ical-dataformat.adoc[iCal DataFormat]
+** xref:dataformats:jacksonxml-dataformat.adoc[JacksonXML DataFormat]
+** xref:dataformats:jaxb-dataformat.adoc[JAXB DataFormat]
+** xref:dataformats:json-fastjson-dataformat.adoc[JSon Fastjson DataFormat]
+** xref:dataformats:json-gson-dataformat.adoc[JSon GSon DataFormat]
+** xref:dataformats:json-jackson-dataformat.adoc[JSon Jackson DataFormat]
+** xref:dataformats:json-johnzon-dataformat.adoc[JSon Johnzon DataFormat]
+** xref:dataformats:json-xstream-dataformat.adoc[JSon XStream DataFormat]
+** xref:dataformats:jsonApi-dataformat.adoc[JSonApi DataFormat]
+** xref:dataformats:lzf-dataformat.adoc[LZF Deflate Compression DataFormat]
+** xref:dataformats:mime-multipart-dataformat.adoc[MIME Multipart DataFormat]
+** xref:dataformats:pgp-dataformat.adoc[PGP DataFormat]
+** xref:dataformats:protobuf-dataformat.adoc[Protobuf DataFormat]
+** xref:dataformats:rss-dataformat.adoc[RSS DataFormat]
+** xref:dataformats:soapjaxb-dataformat.adoc[SOAP DataFormat]
+** xref:dataformats:syslog-dataformat.adoc[Syslog DataFormat]
+** xref:dataformats:tarfile-dataformat.adoc[Tar File DataFormat]
+** xref:dataformats:thrift-dataformat.adoc[Thrift DataFormat]
+** xref:dataformats:tidyMarkup-dataformat.adoc[TidyMarkup DataFormat]
+** xref:dataformats:univocity-csv-dataformat.adoc[uniVocity CSV DataFormat]
+** xref:dataformats:univocity-fixed-dataformat.adoc[uniVocity Fixed Length DataFormat]
+** xref:dataformats:univocity-tsv-dataformat.adoc[uniVocity TSV DataFormat]
+** xref:dataformats:secureXML-dataformat.adoc[XML Security DataFormat]
+** xref:dataformats:xstream-dataformat.adoc[XStream DataFormat]
+** xref:dataformats:yaml-snakeyaml-dataformat.adoc[YAML SnakeYAML DataFormat]
+** xref:dataformats:zipdeflater-dataformat.adoc[Zip Deflate Compression DataFormat]
+** xref:dataformats:zipfile-dataformat.adoc[Zip File DataFormat]
diff --git a/docs/components/modules/ROOT/pages/any23-dataformat.adoc b/docs/components/modules/dataformats/pages/any23-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/any23-dataformat.adoc
rename to docs/components/modules/dataformats/pages/any23-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/asn1-dataformat.adoc b/docs/components/modules/dataformats/pages/asn1-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/asn1-dataformat.adoc
rename to docs/components/modules/dataformats/pages/asn1-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/avro-dataformat.adoc b/docs/components/modules/dataformats/pages/avro-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/avro-dataformat.adoc
rename to docs/components/modules/dataformats/pages/avro-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/barcode-dataformat.adoc b/docs/components/modules/dataformats/pages/barcode-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/barcode-dataformat.adoc
rename to docs/components/modules/dataformats/pages/barcode-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/base64-dataformat.adoc b/docs/components/modules/dataformats/pages/base64-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/base64-dataformat.adoc
rename to docs/components/modules/dataformats/pages/base64-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/beanio-dataformat.adoc b/docs/components/modules/dataformats/pages/beanio-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/beanio-dataformat.adoc
rename to docs/components/modules/dataformats/pages/beanio-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/bindy-dataformat.adoc b/docs/components/modules/dataformats/pages/bindy-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/bindy-dataformat.adoc
rename to docs/components/modules/dataformats/pages/bindy-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/cbor-dataformat.adoc b/docs/components/modules/dataformats/pages/cbor-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/cbor-dataformat.adoc
rename to docs/components/modules/dataformats/pages/cbor-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/crypto-dataformat.adoc b/docs/components/modules/dataformats/pages/crypto-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/crypto-dataformat.adoc
rename to docs/components/modules/dataformats/pages/crypto-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/csv-dataformat.adoc b/docs/components/modules/dataformats/pages/csv-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/csv-dataformat.adoc
rename to docs/components/modules/dataformats/pages/csv-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/fhirJson-dataformat.adoc b/docs/components/modules/dataformats/pages/fhirJson-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/fhirJson-dataformat.adoc
rename to docs/components/modules/dataformats/pages/fhirJson-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/fhirXml-dataformat.adoc b/docs/components/modules/dataformats/pages/fhirXml-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/fhirXml-dataformat.adoc
rename to docs/components/modules/dataformats/pages/fhirXml-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/flatpack-dataformat.adoc b/docs/components/modules/dataformats/pages/flatpack-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/flatpack-dataformat.adoc
rename to docs/components/modules/dataformats/pages/flatpack-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/grok-dataformat.adoc b/docs/components/modules/dataformats/pages/grok-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/grok-dataformat.adoc
rename to docs/components/modules/dataformats/pages/grok-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/gzipdeflater-dataformat.adoc b/docs/components/modules/dataformats/pages/gzipdeflater-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/gzipdeflater-dataformat.adoc
rename to docs/components/modules/dataformats/pages/gzipdeflater-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/hl7-dataformat.adoc b/docs/components/modules/dataformats/pages/hl7-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/hl7-dataformat.adoc
rename to docs/components/modules/dataformats/pages/hl7-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/ical-dataformat.adoc b/docs/components/modules/dataformats/pages/ical-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/ical-dataformat.adoc
rename to docs/components/modules/dataformats/pages/ical-dataformat.adoc
diff --git a/docs/components/modules/dataformats/pages/index.adoc b/docs/components/modules/dataformats/pages/index.adoc
new file mode 100644
index 0000000..6f2a394
--- /dev/null
+++ b/docs/components/modules/dataformats/pages/index.adoc
@@ -0,0 +1,105 @@
+[list-of-camel-data-formats]
+= Data Formats
+
+Below are the list of data formats that are provided by Apache Camel.
+
+
+// dataformats: START
+Number of Data Formats: 45 in 37 JAR artifacts (0 deprecated)
+
+[width="100%",cols="4,1,5",options="header"]
+|===
+| Data Format | Since | Description
+
+| xref:dataformats:any23-dataformat.adoc[Any23] (camel-any23) | 3.0 | Any23 data format is used for parsing data to RDF.
+
+| xref:dataformats:asn1-dataformat.adoc[ASN.1 File] (camel-asn1) | 2.20 | The ASN.1 data format is used for file transfer with telecommunications protocols.
+
+| xref:dataformats:avro-dataformat.adoc[Avro] (camel-avro) | 2.14 | The Avro data format is used for serialization and deserialization of messages using Apache Avro binary dataformat.
+
+| xref:dataformats:barcode-dataformat.adoc[Barcode] (camel-barcode) | 2.14 | The Barcode data format is used for creating barccode images (such as QR-Code)
+
+| xref:dataformats:base64-dataformat.adoc[Base64] (camel-base64) | 2.11 | The Base64 data format is used for base64 encoding and decoding.
+
+| xref:dataformats:beanio-dataformat.adoc[BeanIO] (camel-beanio) | 2.10 | The BeanIO data format is used for working with flat payloads (such as CSV, delimited, or fixed length formats).
+
+| xref:dataformats:bindy-dataformat.adoc[Bindy CSV] (camel-bindy) | 2.0 | The Bindy data format is used for working with flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
+
+| xref:dataformats:bindy-dataformat.adoc[Bindy Fixed Length] (camel-bindy) | 2.0 | The Bindy data format is used for working with flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
+
+| xref:dataformats:bindy-dataformat.adoc[Bindy Key Value Pair] (camel-bindy) | 2.0 | The Bindy data format is used for working with flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
+
+| xref:dataformats:cbor-dataformat.adoc[CBOR] (camel-cbor) | 3.0 | CBOR data format is used for unmarshal a CBOR payload to POJO or to marshal POJO back to CBOR payload.
+
+| xref:dataformats:crypto-dataformat.adoc[Crypto (Java Cryptographic Extension)] (camel-crypto) | 2.3 | Crypto data format is used for encrypting and decrypting of messages using Java Cryptographic Extension.
+
+| xref:dataformats:csv-dataformat.adoc[CSV] (camel-csv) | 1.3 | The CSV data format is used for handling CSV payloads.
+
+| xref:dataformats:fhirJson-dataformat.adoc[FHIR JSon] (camel-fhir) | 2.21 | The FHIR JSon data format is used to marshall/unmarshall to/from FHIR objects to/from JSON.
+
+| xref:dataformats:fhirXml-dataformat.adoc[FHIR XML] (camel-fhir) | 2.21 | The FHIR XML data format is used to marshall/unmarshall from/to FHIR objects to/from XML.
+
+| xref:dataformats:flatpack-dataformat.adoc[Flatpack] (camel-flatpack) | 2.1 | The Flatpack data format is used for working with flat payloads (such as CSV, delimited, or fixed length formats).
+
+| xref:dataformats:grok-dataformat.adoc[Grok] (camel-grok) | 3.0 | The Grok data format is used for unmarshalling unstructured data to objects using Logstash based Grok patterns.
+
+| xref:dataformats:gzipdeflater-dataformat.adoc[GZip Deflater] (camel-zip-deflater) | 2.0 | The GZip data format is a message compression and de-compression format (which works with the popular gzip/gunzip tools).
+
+| xref:dataformats:hl7-dataformat.adoc[HL7] (camel-hl7) | 2.0 | The HL7 data format can be used to marshal or unmarshal HL7 (Health Care) model objects.
+
+| xref:dataformats:ical-dataformat.adoc[iCal] (camel-ical) | 2.12 | The iCal dataformat is used for working with iCalendar messages.
+
+| xref:dataformats:jacksonxml-dataformat.adoc[JacksonXML] (camel-jacksonxml) | 2.16 | JacksonXML data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
+
+| xref:dataformats:jaxb-dataformat.adoc[JAXB] (camel-jaxb) | 1.0 | JAXB data format uses the JAXB2 XML marshalling standard to unmarshal an XML payload into Java objects or to marshal Java objects into an XML payload.
+
+| xref:dataformats:json-fastjson-dataformat.adoc[JSon Fastjson] (camel-fastjson) | 2.20 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
+
+| xref:dataformats:json-gson-dataformat.adoc[JSon GSon] (camel-gson) | 2.10 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
+
+| xref:dataformats:json-jackson-dataformat.adoc[JSon Jackson] (camel-jackson) | 2.0 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
+
+| xref:dataformats:json-johnzon-dataformat.adoc[JSon Johnzon] (camel-johnzon) | 2.18 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
+
+| xref:dataformats:json-xstream-dataformat.adoc[JSon XStream] (camel-xstream) | 2.0 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.
+
+| xref:dataformats:jsonApi-dataformat.adoc[JSonApi] (camel-jsonapi) | 3.0 | JSonApi data format is used for marshal and unmarshal Json API object.
+
+| xref:dataformats:lzf-dataformat.adoc[LZF Deflate Compression] (camel-lzf) | 2.17 | The LZF data format is a message compression and de-compression format (uses the LZF deflate algorithm).
+
+| xref:dataformats:mime-multipart-dataformat.adoc[MIME Multipart] (camel-mail) | 2.17 | The MIME Multipart data format is used for marshalling Camel messages with attachments into MIME-Multipart message, and vise-versa.
+
+| xref:dataformats:pgp-dataformat.adoc[PGP] (camel-crypto) | 2.9 | PGP data format is used for encrypting and decrypting of messages using Java Cryptographic Extension and PGP.
+
+| xref:dataformats:protobuf-dataformat.adoc[Protobuf] (camel-protobuf) | 2.2 | The Protobuf data format is used for serializing between Java objects and the Google Protobuf protocol.
+
+| xref:dataformats:rss-dataformat.adoc[RSS] (camel-rss) | 2.1 | RSS data format is used for working with RSS sync feed Java Objects and transforming to XML and vice-versa.
+
+| xref:dataformats:soapjaxb-dataformat.adoc[SOAP] (camel-soap) | 2.3 | SOAP is a data format which uses JAXB2 and JAX-WS annotations to marshal and unmarshal SOAP payloads.
+
+| xref:dataformats:syslog-dataformat.adoc[Syslog] (camel-syslog) | 2.6 | The Syslog dataformat is used for working with RFC3164 and RFC5424 messages (logging and monitoring).
+
+| xref:dataformats:tarfile-dataformat.adoc[Tar File] (camel-tarfile) | 2.16 | The Tar File data format is a message compression and de-compression format of tar files.
+
+| xref:dataformats:thrift-dataformat.adoc[Thrift] (camel-thrift) | 2.20 | The Thrift data format is used for serialization and deserialization of messages using Apache Thrift binary dataformat.
+
+| xref:dataformats:tidyMarkup-dataformat.adoc[TidyMarkup] (camel-tagsoup) | 2.0 | TidyMarkup data format is used for parsing HTML and return it as pretty well-formed HTML.
+
+| xref:dataformats:univocity-csv-dataformat.adoc[uniVocity CSV] (camel-univocity-parsers) | 2.15 | The uniVocity CSV data format is used for working with CSV (Comma Separated Values) flat payloads.
+
+| xref:dataformats:univocity-fixed-dataformat.adoc[uniVocity Fixed Length] (camel-univocity-parsers) | 2.15 | The uniVocity Fixed Length data format is used for working with fixed length flat payloads.
+
+| xref:dataformats:univocity-tsv-dataformat.adoc[uniVocity TSV] (camel-univocity-parsers) | 2.15 | The uniVocity TSV data format is used for working with TSV (Tabular Separated Values) flat payloads.
+
+| xref:dataformats:secureXML-dataformat.adoc[XML Security] (camel-xmlsecurity) | 2.0 | The XML Security data format facilitates encryption and decryption of XML payloads.
+
+| xref:dataformats:xstream-dataformat.adoc[XStream] (camel-xstream) | 1.3 | XStream data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
+
+| xref:dataformats:yaml-snakeyaml-dataformat.adoc[YAML SnakeYAML] (camel-snakeyaml) | 2.17 | YAML is a data format to marshal and unmarshal Java objects to and from YAML.
+
+| xref:dataformats:zipdeflater-dataformat.adoc[Zip Deflate Compression] (camel-zip-deflater) | 2.12 | Zip Deflate Compression data format is a message compression and de-compression format (not zip files).
+
+| xref:dataformats:zipfile-dataformat.adoc[Zip File] (camel-zipfile) | 2.11 | The Zip File data format is a message compression and de-compression format of zip files.
+|===
+// dataformats: END
+
diff --git a/docs/components/modules/ROOT/pages/jacksonxml-dataformat.adoc b/docs/components/modules/dataformats/pages/jacksonxml-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/jacksonxml-dataformat.adoc
rename to docs/components/modules/dataformats/pages/jacksonxml-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/jaxb-dataformat.adoc b/docs/components/modules/dataformats/pages/jaxb-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/jaxb-dataformat.adoc
rename to docs/components/modules/dataformats/pages/jaxb-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/json-fastjson-dataformat.adoc b/docs/components/modules/dataformats/pages/json-fastjson-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/json-fastjson-dataformat.adoc
rename to docs/components/modules/dataformats/pages/json-fastjson-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/json-gson-dataformat.adoc b/docs/components/modules/dataformats/pages/json-gson-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/json-gson-dataformat.adoc
rename to docs/components/modules/dataformats/pages/json-gson-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/json-jackson-dataformat.adoc b/docs/components/modules/dataformats/pages/json-jackson-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/json-jackson-dataformat.adoc
rename to docs/components/modules/dataformats/pages/json-jackson-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/json-johnzon-dataformat.adoc b/docs/components/modules/dataformats/pages/json-johnzon-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/json-johnzon-dataformat.adoc
rename to docs/components/modules/dataformats/pages/json-johnzon-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/json-xstream-dataformat.adoc b/docs/components/modules/dataformats/pages/json-xstream-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/json-xstream-dataformat.adoc
rename to docs/components/modules/dataformats/pages/json-xstream-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/jsonApi-dataformat.adoc b/docs/components/modules/dataformats/pages/jsonApi-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/jsonApi-dataformat.adoc
rename to docs/components/modules/dataformats/pages/jsonApi-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/lzf-dataformat.adoc b/docs/components/modules/dataformats/pages/lzf-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/lzf-dataformat.adoc
rename to docs/components/modules/dataformats/pages/lzf-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/mime-multipart-dataformat.adoc b/docs/components/modules/dataformats/pages/mime-multipart-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/mime-multipart-dataformat.adoc
rename to docs/components/modules/dataformats/pages/mime-multipart-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/pgp-dataformat.adoc b/docs/components/modules/dataformats/pages/pgp-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/pgp-dataformat.adoc
rename to docs/components/modules/dataformats/pages/pgp-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/protobuf-dataformat.adoc b/docs/components/modules/dataformats/pages/protobuf-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/protobuf-dataformat.adoc
rename to docs/components/modules/dataformats/pages/protobuf-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/rss-dataformat.adoc b/docs/components/modules/dataformats/pages/rss-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/rss-dataformat.adoc
rename to docs/components/modules/dataformats/pages/rss-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/secureXML-dataformat.adoc b/docs/components/modules/dataformats/pages/secureXML-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/secureXML-dataformat.adoc
rename to docs/components/modules/dataformats/pages/secureXML-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/soapjaxb-dataformat.adoc b/docs/components/modules/dataformats/pages/soapjaxb-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/soapjaxb-dataformat.adoc
rename to docs/components/modules/dataformats/pages/soapjaxb-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/syslog-dataformat.adoc b/docs/components/modules/dataformats/pages/syslog-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/syslog-dataformat.adoc
rename to docs/components/modules/dataformats/pages/syslog-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/tarfile-dataformat.adoc b/docs/components/modules/dataformats/pages/tarfile-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/tarfile-dataformat.adoc
rename to docs/components/modules/dataformats/pages/tarfile-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/thrift-dataformat.adoc b/docs/components/modules/dataformats/pages/thrift-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/thrift-dataformat.adoc
rename to docs/components/modules/dataformats/pages/thrift-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/tidyMarkup-dataformat.adoc b/docs/components/modules/dataformats/pages/tidyMarkup-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/tidyMarkup-dataformat.adoc
rename to docs/components/modules/dataformats/pages/tidyMarkup-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/univocity-csv-dataformat.adoc b/docs/components/modules/dataformats/pages/univocity-csv-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/univocity-csv-dataformat.adoc
rename to docs/components/modules/dataformats/pages/univocity-csv-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/univocity-fixed-dataformat.adoc b/docs/components/modules/dataformats/pages/univocity-fixed-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/univocity-fixed-dataformat.adoc
rename to docs/components/modules/dataformats/pages/univocity-fixed-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/univocity-tsv-dataformat.adoc b/docs/components/modules/dataformats/pages/univocity-tsv-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/univocity-tsv-dataformat.adoc
rename to docs/components/modules/dataformats/pages/univocity-tsv-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/xstream-dataformat.adoc b/docs/components/modules/dataformats/pages/xstream-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/xstream-dataformat.adoc
rename to docs/components/modules/dataformats/pages/xstream-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/yaml-snakeyaml-dataformat.adoc b/docs/components/modules/dataformats/pages/yaml-snakeyaml-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/yaml-snakeyaml-dataformat.adoc
rename to docs/components/modules/dataformats/pages/yaml-snakeyaml-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/zipdeflater-dataformat.adoc b/docs/components/modules/dataformats/pages/zipdeflater-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/zipdeflater-dataformat.adoc
rename to docs/components/modules/dataformats/pages/zipdeflater-dataformat.adoc
diff --git a/docs/components/modules/ROOT/pages/zipfile-dataformat.adoc b/docs/components/modules/dataformats/pages/zipfile-dataformat.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/zipfile-dataformat.adoc
rename to docs/components/modules/dataformats/pages/zipfile-dataformat.adoc
diff --git a/docs/components/modules/languages/nav.adoc b/docs/components/modules/languages/nav.adoc
new file mode 100644
index 0000000..c22ba56
--- /dev/null
+++ b/docs/components/modules/languages/nav.adoc
@@ -0,0 +1,21 @@
+// this file is auto generated and changes to it will be overwritten
+// make edits in docs/*nav.adoc.template files instead
+
+* xref:languages:index.adoc[Languages]
+** xref:languages:bean-language.adoc[Bean method Language]
+** xref:languages:constant-language.adoc[Constant Language]
+** xref:languages:exchangeProperty-language.adoc[ExchangeProperty Language]
+** xref:languages:file-language.adoc[File Language]
+** xref:languages:groovy-language.adoc[Groovy Language]
+** xref:languages:header-language.adoc[Header Language]
+** xref:languages:hl7terser-language.adoc[HL7 Terser Language]
+** xref:languages:jsonpath-language.adoc[JsonPath Language]
+** xref:languages:mvel-language.adoc[MVEL Language]
+** xref:languages:ognl-language.adoc[OGNL Language]
+** xref:languages:ref-language.adoc[Ref Language]
+** xref:languages:simple-language.adoc[Simple Language]
+** xref:languages:spel-language.adoc[SpEL Language]
+** xref:languages:tokenize-language.adoc[Tokenize Language]
+** xref:languages:xtokenize-language.adoc[XML Tokenize Language]
+** xref:languages:xpath-language.adoc[XPath Language]
+** xref:languages:xquery-language.adoc[XQuery Language]
diff --git a/docs/components/modules/ROOT/pages/bean-language.adoc b/docs/components/modules/languages/pages/bean-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/bean-language.adoc
rename to docs/components/modules/languages/pages/bean-language.adoc
diff --git a/docs/components/modules/ROOT/pages/groovy-language.adoc b/docs/components/modules/languages/pages/groovy-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/groovy-language.adoc
rename to docs/components/modules/languages/pages/groovy-language.adoc
diff --git a/docs/components/modules/ROOT/pages/hl7terser-language.adoc b/docs/components/modules/languages/pages/hl7terser-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/hl7terser-language.adoc
rename to docs/components/modules/languages/pages/hl7terser-language.adoc
diff --git a/docs/components/modules/languages/pages/index.adoc b/docs/components/modules/languages/pages/index.adoc
new file mode 100644
index 0000000..8d876fe8
--- /dev/null
+++ b/docs/components/modules/languages/pages/index.adoc
@@ -0,0 +1,48 @@
+[list-of-camel-expression-languages]
+= Expression Languages
+
+Below is the list of expression languages that are provided by Apache Camel.
+
+
+// languages: START
+Number of Languages: 17 in 11 JAR artifacts (0 deprecated)
+
+[width="100%",cols="4,1,5",options="header"]
+|===
+| Language | Since | Description
+
+| xref:languages:bean-language.adoc[Bean method] (camel-bean) | 1.3 | To use a Java bean (aka method call) in Camel expressions or predicates.
+
+| xref:languages:constant-language.adoc[Constant] (camel-base) | 1.5 | To use a constant value in Camel expressions or predicates.
+
+| xref:languages:exchangeProperty-language.adoc[ExchangeProperty] (camel-base) | 2.0 | To use a Camel Exchange property in expressions or predicates.
+
+| xref:languages:file-language.adoc[File] (camel-base) | 1.1 | For expressions and predicates using the file/simple language.
+
+| xref:languages:groovy-language.adoc[Groovy] (camel-groovy) | 1.3 | To use Groovy scripts in Camel expressions or predicates.
+
+| xref:languages:header-language.adoc[Header] (camel-base) | 1.5 | To use a Camel Message header in expressions or predicates.
+
+| xref:languages:hl7terser-language.adoc[HL7 Terser] (camel-hl7) | 2.11 | To use HL7 terser scripts in Camel expressions or predicates.
+
+| xref:languages:jsonpath-language.adoc[JsonPath] (camel-jsonpath) | 2.13 | To use JsonPath in Camel expressions or predicates.
+
+| xref:languages:mvel-language.adoc[MVEL] (camel-mvel) | 2.0 | To use MVEL scripts in Camel expressions or predicates.
+
+| xref:languages:ognl-language.adoc[OGNL] (camel-ognl) | 1.1 | To use OGNL scripts in Camel expressions or predicates.
+
+| xref:languages:ref-language.adoc[Ref] (camel-base) | 2.8 | Reference to an existing Camel expression or predicate, which is looked up from the Camel registry.
+
+| xref:languages:simple-language.adoc[Simple] (camel-base) | 1.1 | To use Camels built-in Simple language in Camel expressions or predicates.
+
+| xref:languages:spel-language.adoc[SpEL] (camel-spring) | 2.7 | To use Spring Expression Language (SpEL) in Camel expressions or predicates.
+
+| xref:languages:tokenize-language.adoc[Tokenize] (camel-base) | 2.0 | To use Camel message body or header with a tokenizer in Camel expressions or predicates.
+
+| xref:languages:xtokenize-language.adoc[XML Tokenize] (camel-jaxp) | 2.14 | To use Camel message body or header with a XML tokenizer in Camel expressions or predicates.
+
+| xref:languages:xpath-language.adoc[XPath] (camel-xpath) | 1.1 | To use XPath (XML) in Camel expressions or predicates.
+
+| xref:languages:xquery-language.adoc[XQuery] (camel-saxon) | 1.0 | To use XQuery (XML) in Camel expressions or predicates.
+|===
+// languages: END
diff --git a/docs/components/modules/ROOT/pages/jsonpath-language.adoc b/docs/components/modules/languages/pages/jsonpath-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/jsonpath-language.adoc
rename to docs/components/modules/languages/pages/jsonpath-language.adoc
diff --git a/docs/components/modules/ROOT/pages/mvel-language.adoc b/docs/components/modules/languages/pages/mvel-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/mvel-language.adoc
rename to docs/components/modules/languages/pages/mvel-language.adoc
diff --git a/docs/components/modules/ROOT/pages/ognl-language.adoc b/docs/components/modules/languages/pages/ognl-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/ognl-language.adoc
rename to docs/components/modules/languages/pages/ognl-language.adoc
diff --git a/docs/components/modules/ROOT/pages/spel-language.adoc b/docs/components/modules/languages/pages/spel-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/spel-language.adoc
rename to docs/components/modules/languages/pages/spel-language.adoc
diff --git a/docs/components/modules/ROOT/pages/xpath-language.adoc b/docs/components/modules/languages/pages/xpath-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/xpath-language.adoc
rename to docs/components/modules/languages/pages/xpath-language.adoc
diff --git a/docs/components/modules/ROOT/pages/xquery-language.adoc b/docs/components/modules/languages/pages/xquery-language.adoc
similarity index 100%
rename from docs/components/modules/ROOT/pages/xquery-language.adoc
rename to docs/components/modules/languages/pages/xquery-language.adoc
diff --git a/docs/gulpfile.js b/docs/gulpfile.js
index 3620f98..0e009d5 100644
--- a/docs/gulpfile.js
+++ b/docs/gulpfile.js
@@ -16,6 +16,7 @@
  */
 const { dest, series, parallel, src, symlink } = require('gulp');
 const del = require('del');
+const filter = require('gulp-filter');
 const inject = require('gulp-inject');
 const map = require('map-stream')
 const path = require('path');
@@ -35,7 +36,9 @@ function deleteComponentImageSymlinks() {
 }
 
 function createComponentSymlinks() {
-    return src(['../core/camel-base/src/main/docs/*.adoc', '../core/camel-jaxp/src/main/docs/*.adoc', '../components/{*,*/*}/src/main/docs/*.adoc'])
+    const f = filter(['**','!**/*-language.adoc', '!**/*-dataformat.adoc'])
+    return src(['../core/camel-base/src/main/docs/*.adoc','../components/{*,*/*}/src/main/docs/*.adoc'])
+        .pipe(f)
         .pipe(map((file, done) => {
             // this flattens the output to just .../pages/....adoc
             // instead of .../pages/camel-.../src/main/docs/....adoc
@@ -55,8 +58,8 @@ function createComponentSymlinks() {
         .pipe(dest('components/modules/ROOT/pages/'));
 }
 
-function createComponentImageSymlinks() {
-    return src('../components/{*,*/*}/src/main/docs/*.png')
+function createComponentDataFormatSymlinks() {
+    return src(['../components/{*,*/*}/src/main/docs/*-dataformat.adoc'])
         .pipe(map((file, done) => {
             // this flattens the output to just .../pages/....adoc
             // instead of .../pages/camel-.../src/main/docs/....adoc
@@ -72,26 +75,49 @@ function createComponentImageSymlinks() {
         // }));
         // uncomment above .pipe() and remove the .pipe() below
         // when antora#188 is resolved
-        .pipe(dest('components/modules/ROOT/assets/images/'));
+        .pipe(insertSourceAttribute())
+        .pipe(dest('components/modules/dataformats/pages/'));
 }
 
-function deleteUserManualSymlinks() {
-    return del(['user-manual/modules/ROOT/pages/*-eip.adoc', 'user-manual/modules/ROOT/pages/*-language.adoc']);
+function createComponentLanguageSymlinks() {
+    return src(['../components/{*,*/*}/src/main/docs/*-language.adoc'])
+        .pipe(map((file, done) => {
+            // this flattens the output to just .../pages/....adoc
+            // instead of .../pages/camel-.../src/main/docs/....adoc
+            file.base = path.dirname(file.path);
+            done(null, file);
+        }))
+        // Antora disabled symlinks, there is an issue open
+        // https://gitlab.com/antora/antora/issues/188
+        // to reinstate symlink support, until that's resolved
+        // we'll simply copy over instead of creating symlinks
+        // .pipe(symlink('components/modules/ROOT/pages/', {
+        //     relativeSymlinks: true
+        // }));
+        // uncomment above .pipe() and remove the .pipe() below
+        // when antora#188 is resolved
+        .pipe(insertSourceAttribute())
+        .pipe(dest('components/modules/languages/pages/'));
 }
 
-function createUserManualSymlinks() {
-    return src(['../core/camel-base/src/main/docs/*.adoc', '../core/camel-jaxp/src/main/docs/*.adoc', '../core/camel-core-engine/src/main/docs/eips/*.adoc'])
+function createComponentImageSymlinks() {
+    return src('../components/{*,*/*}/src/main/docs/*.png')
+        .pipe(map((file, done) => {
+            // this flattens the output to just .../pages/....adoc
+            // instead of .../pages/camel-.../src/main/docs/....adoc
+            file.base = path.dirname(file.path);
+            done(null, file);
+        }))
         // Antora disabled symlinks, there is an issue open
         // https://gitlab.com/antora/antora/issues/188
         // to reinstate symlink support, until that's resolved
         // we'll simply copy over instead of creating symlinks
-        // .pipe(symlink('user-manual/modules/ROOT/pages/', {
+        // .pipe(symlink('components/modules/ROOT/pages/', {
         //     relativeSymlinks: true
         // }));
         // uncomment above .pipe() and remove the .pipe() below
         // when antora#188 is resolved
-        .pipe(insertSourceAttribute())
-        .pipe(dest('user-manual/modules/ROOT/pages/'));
+        .pipe(dest('components/modules/ROOT/assets/images/'));
 }
 
 function titleFrom(file) {
@@ -103,14 +129,19 @@ function titleFrom(file) {
     return maybeName[1];
 }
 
+function compare (file1, file2) {
+    if (file1 === file2) return 0
+    return titleFrom(file1).toUpperCase() < titleFrom(file2).toUpperCase() ? -1: 1
+}
+
 function insertGeneratedNotice() {
     return inject(src('./generated.txt'), {
-               name: 'generated',
-               removeTags: true,
-               transform: (filename, file) => {
-                   return file.contents.toString('utf8');
-               }
-           });
+        name: 'generated',
+        removeTags: true,
+        transform: (filename, file) => {
+            return file.contents.toString('utf8');
+        }
+    });
 }
 
 function insertSourceAttribute() {
@@ -122,41 +153,72 @@ function insertSourceAttribute() {
 function createComponentNav() {
     return src('component-nav.adoc.template')
         .pipe(insertGeneratedNotice())
-        .pipe(inject(src(['../core/camel-base/src/main/docs/*-component.adoc', '../components/{*,*/*}/src/main/docs/*.adoc']).pipe(sort()), {
+        .pipe(inject(src(['components/modules/ROOT/pages/**/*.adoc',
+			  '!components/modules/ROOT/pages/index.adoc'])
+		     .pipe(sort(compare)), {
             removeTags: true,
             transform: (filename, file) => {
                 const filepath = path.basename(filename);
                 const title = titleFrom(file);
-                return `* xref:${filepath}[${title}]`;
+                return `** xref:${filepath}[${title}]`;
             }
         }))
         .pipe(rename('nav.adoc'))
         .pipe(dest('components/modules/ROOT/'))
 }
 
-function createUserManualNav() {
-    return src('user-manual-nav.adoc.template')
+function createComponentDataFormatsNav() {
+    return src('component-dataformats-nav.adoc.template')
+        .pipe(insertGeneratedNotice())
+        .pipe(inject(src(['components/modules/dataformats/pages/**/*.adoc',
+			  '!components/modules/dataformats/pages/index.adoc'])
+		     .pipe(sort(compare)), {
+            removeTags: true,
+            transform: (filename, file) => {
+                const filepath = path.basename(filename);
+                const title = titleFrom(file);
+                return `** xref:dataformats:${filepath}[${title}]`;
+            }
+        }))
+        .pipe(rename('nav.adoc'))
+        .pipe(dest('components/modules/dataformats/'))
+}
+
+function createComponentLanguagesNav() {
+    return src('component-languages-nav.adoc.template')
         .pipe(insertGeneratedNotice())
-        .pipe(inject(src('../core/camel-base/src/main/docs/*.adoc').pipe(sort()), {
+        .pipe(inject(src(['components/modules/languages/pages/**/*.adoc',
+			  '../core/camel-base/src/main/docs/modules/languages/pages/*.adoc',
+			  '../core/camel-jaxp/src/main/docs/modules/languages/pages/*.adoc',
+			  '!components/modules/languages/pages/index.adoc'])
+		     .pipe(sort(compare)), {
             removeTags: true,
-            name: 'languages',
             transform: (filename, file) => {
                 const filepath = path.basename(filename);
                 const title = titleFrom(file);
-                return ` ** xref:${filepath}[${title}]`;
+                return `** xref:languages:${filepath}[${title}]`;
             }
         }))
-        .pipe(inject(src('../core/camel-core-engine/src/main/docs/eips/*.adoc').pipe(sort()), {
+        .pipe(rename('nav.adoc'))
+        .pipe(dest('components/modules/languages/'))
+}
+
+function createEIPNav() {
+    const f = filter(['**','!**/enterprise-integration-patterns.adoc'])
+    return src('eip-nav.adoc.template')
+        .pipe(insertGeneratedNotice())
+        .pipe(inject(src('../core/camel-core-engine/src/main/docs/modules/eips/pages/*.adoc').pipe(f)
+		     .pipe(sort(compare)), {
             removeTags: true,
             name: 'eips',
             transform: (filename, file) => {
                 const filepath = path.basename(filename);
                 const title = titleFrom(file);
-                return ` ** xref:${filepath}[${title}]`;
+                return ` ** xref:eips:${filepath}[${title}]`;
             }
         }))
         .pipe(rename('nav.adoc'))
-        .pipe(dest('user-manual/modules/ROOT/'))
+        .pipe(dest('../core/camel-core-engine/src/main/docs/modules/eips/'))
 }
 
 const extractExamples = function(file, enc, next) {
@@ -168,7 +230,7 @@ const extractExamples = function(file, enc, next) {
         let examplePath = path.resolve(path.join('..', example[1]));
         exampleFiles.add(examplePath);
     }
-
+    // (exampleFiles.size > 0) && console.log('example files', exampleFiles)
     exampleFiles.forEach(examplePath => this.push(new File({
         base: path.resolve('..'),
         path: examplePath,
@@ -188,6 +250,18 @@ function createUserManualExamples() {
         .pipe(dest('user-manual/modules/ROOT/examples/'));
 }
 
+function createEIPExamples() {
+    return src('../core/camel-core-engine/src/main/docs/modules/eips/**/*.adoc')
+        .pipe(through2.obj(extractExamples))
+        .pipe(dest('../core/camel-core-engine/src/main/docs/modules/eips/examples/'));
+}
+
+function createUserManualLanguageExamples() {
+    return src('../core/camel-core-languages/src/main/docs/user-manual/modules/languages/**/*.adoc')
+        .pipe(through2.obj(extractExamples))
+        .pipe(dest('user-manual/modules/ROOT/examples/'));
+}
+
 function createComponentExamples() {
     return src('../components/{*,*/*}/src/main/docs/*.adoc')
         .pipe(through2.obj(extractExamples))
@@ -195,12 +269,11 @@ function createComponentExamples() {
 }
 
 const symlinks = parallel(
-  series(deleteComponentSymlinks, createComponentSymlinks),
-  series(deleteComponentImageSymlinks, createComponentImageSymlinks),
-  series(deleteUserManualSymlinks, createUserManualSymlinks)
+    series(deleteComponentSymlinks, createComponentSymlinks, createComponentDataFormatSymlinks, createComponentLanguageSymlinks),
+    series(deleteComponentImageSymlinks, createComponentImageSymlinks)
 );
-const nav = parallel(createComponentNav, createUserManualNav);
-const examples = series(deleteExamples, createUserManualExamples, createComponentExamples);
+const nav = parallel(createComponentNav, createComponentDataFormatsNav, createComponentLanguagesNav/*, createEIPNav*/);
+const examples = series(deleteExamples, /*createUserManualExamples, createEIPExamples, createUserManualLanguageExamples,*/ createComponentExamples);
 
 exports.symlinks = symlinks;
 exports.nav = nav;
diff --git a/docs/package.json b/docs/package.json
index b28be99..f338d23 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -7,6 +7,7 @@
     "del": "^3.0.0",
     "gulp": "^4.0.0",
     "gulp-cli": "^2.0.1",
+    "gulp-filter": "^6.0.0",
     "gulp-inject": "^5.0.2",
     "gulp-rename": "^1.4.0",
     "gulp-replace": "^1.0.0",
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-jms/src/test/resources/org/apache/camel/component/jms/jmsRouteUsingSpring.xml b/docs/user-manual/modules/ROOT/examples/components/camel-jms/src/test/resources/org/apache/camel/component/jms/jmsRouteUsingSpring.xml
deleted file mode 100644
index b3d2d54..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-jms/src/test/resources/org/apache/camel/component/jms/jmsRouteUsingSpring.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-  <!-- START SNIPPET: example -->
-  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-      <jmxAgent id="agent" disabled="true"/>
-  </camelContext>
-
-  <bean id="activemq" class="org.apache.camel.component.jms.JmsComponent">
-    <property name="connectionFactory">
-      <bean class="org.apache.activemq.ActiveMQConnectionFactory">
-        <property name="brokerURL" value="vm://localhost?broker.persistent=false&amp;broker.useJmx=false"/>
-      </bean>
-    </property>
-  </bean>
-  <!-- END SNIPPET: example -->
-
-</beans>
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/patterns/FilterTest.java b/docs/user-manual/modules/ROOT/examples/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/patterns/FilterTest.java
deleted file mode 100644
index 7dde0d9..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/patterns/FilterTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.javaconfig.patterns;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration;
-import org.apache.camel.test.spring.CamelSpringDelegatingTestContextLoader;
-import org.apache.camel.test.spring.CamelSpringJUnit4ClassRunner;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-
-/**
- * Tests filtering using Spring Test and Java Config
- */
-// START SNIPPET: example
-// tag::example[]
-@RunWith(CamelSpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = {FilterTest.ContextConfig.class}, loader = CamelSpringDelegatingTestContextLoader.class)
-public class FilterTest extends AbstractJUnit4SpringContextTests {
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate template;
-
-    @DirtiesContext
-    @Test
-    public void testSendMatchingMessage() throws Exception {
-        String expectedBody = "<matched/>";
-
-        resultEndpoint.expectedBodiesReceived(expectedBody);
-
-        template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @DirtiesContext
-    @Test
-    public void testSendNotMatchingMessage() throws Exception {
-        resultEndpoint.expectedMessageCount(0);
-
-        template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Configuration
-    public static class ContextConfig extends SingleRouteCamelConfiguration {
-        @Override
-        @Bean
-        public RouteBuilder route() {
-            return new RouteBuilder() {
-                public void configure() {
-                    from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
-                }
-            };
-        }
-    }
-}
-// end::example[]
-// END SNIPPET: example
-
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/test/CamelSpringDelegatingTestContextLoaderTest.java b/docs/user-manual/modules/ROOT/examples/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/test/CamelSpringDelegatingTestContextLoaderTest.java
deleted file mode 100644
index 9fe6e40..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/test/CamelSpringDelegatingTestContextLoaderTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.javaconfig.test;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration;
-import org.apache.camel.test.spring.CamelSpringDelegatingTestContextLoader;
-import org.apache.camel.test.spring.CamelSpringRunner;
-import org.apache.camel.test.spring.MockEndpoints;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.test.context.ContextConfiguration;
-
-/**
- * Test for CamelSpringDelegatingTestContextLoader.
- */
-//START SNIPPET: example
-// tag::example[]
-@RunWith(CamelSpringRunner.class)
-@ContextConfiguration(
-        classes = {CamelSpringDelegatingTestContextLoaderTest.TestConfig.class},
-        // Since Camel 2.11.0 
-        loader = CamelSpringDelegatingTestContextLoader.class
-    )
-@MockEndpoints
-public class CamelSpringDelegatingTestContextLoaderTest {
-    @EndpointInject("mock:direct:end")
-    protected MockEndpoint endEndpoint;
-
-    @EndpointInject("mock:direct:error")
-    protected MockEndpoint errorEndpoint;
-
-    @Produce("direct:test")
-    protected ProducerTemplate testProducer;
-
-    @Configuration
-    public static class TestConfig extends SingleRouteCamelConfiguration {
-        @Bean
-        @Override
-        public RouteBuilder route() {
-            return new RouteBuilder() {
-                @Override
-                public void configure() throws Exception {
-                    from("direct:test").errorHandler(deadLetterChannel("direct:error")).to("direct:end");
-
-                    from("direct:error").log("Received message on direct:error endpoint.");
-
-                    from("direct:end").log("Received message on direct:end endpoint.");
-                }
-            };
-        }
-    }
-
-    @Test
-    public void testRoute() throws InterruptedException {
-        endEndpoint.expectedMessageCount(1);
-        errorEndpoint.expectedMessageCount(0);
-
-        testProducer.sendBody("<name>test</name>");
-
-        endEndpoint.assertIsSatisfied();
-        errorEndpoint.assertIsSatisfied();
-    }
-}
-// end::example[]
-//END SNIPPET: example
-
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/java/org/apache/camel/spring/SpringConsumerTemplateTest.java b/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/java/org/apache/camel/spring/SpringConsumerTemplateTest.java
deleted file mode 100644
index fa9a355..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/java/org/apache/camel/spring/SpringConsumerTemplateTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring;
-
-import org.apache.camel.ConsumerTemplate;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-
-/**
- * Unit test using the ConsumerTemplate
- */
-// tag::e1[]
-@ContextConfiguration
-public class SpringConsumerTemplateTest extends SpringRunWithTestSupport {
-
-    @Autowired
-    private ProducerTemplate producer;
-
-    @Autowired
-    private ConsumerTemplate consumer;
-
-    @EndpointInject("ref:result")
-    private MockEndpoint mock;
-
-    @Test
-    public void testConsumeTemplate() throws Exception {
-        // we expect Hello World received in our mock endpoint
-        mock.expectedBodiesReceived("Hello World");
-
-        // we use the producer template to send a message to the seda:start endpoint
-        producer.sendBody("seda:start", "Hello World");
-
-        // we consume the body from seda:start
-        String body = consumer.receiveBody("seda:start", String.class);
-        assertEquals("Hello World", body);
-
-        // and then we send the body again to seda:foo so it will be routed to the mock
-        // endpoint so our unit test can complete
-        producer.sendBody("seda:foo", body);
-
-        // assert mock received the body
-        mock.assertIsSatisfied();
-    }
-
-}
-// end::e1[]
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/java/org/apache/camel/spring/patterns/FilterTest.java b/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/java/org/apache/camel/spring/patterns/FilterTest.java
deleted file mode 100644
index 2ea204a..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/java/org/apache/camel/spring/patterns/FilterTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.patterns;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spring.SpringRunWithTestSupport;
-import org.junit.Test;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-
-/**
- * Tests filtering using Spring Test and XML Config
-  */
-// START SNIPPET: example
-// tag::example[]
-@ContextConfiguration
-public class FilterTest extends SpringRunWithTestSupport {
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate template;
-
-    @DirtiesContext
-    @Test
-    public void testSendMatchingMessage() throws Exception {
-        String expectedBody = "<matched/>";
-
-        resultEndpoint.expectedBodiesReceived(expectedBody);
-
-        template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @DirtiesContext
-    @Test
-    public void testSendNotMatchingMessage() throws Exception {
-        resultEndpoint.expectedMessageCount(0);
-
-        template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-}
-// end::example[]
-// END SNIPPET: example
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringConsumerTemplateTest-context.xml b/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringConsumerTemplateTest-context.xml
deleted file mode 100644
index 149b407..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/resources/org/apache/camel/spring/SpringConsumerTemplateTest-context.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-  <!-- tag::e1[] -->
-  <camelContext xmlns="http://camel.apache.org/schema/spring">
-    <!-- define a producer template -->
-    <template id="producer"/>
-    <!-- define a consumer template -->
-    <consumerTemplate id="consumer"/>
-    <!-- define endpoint -->
-    <endpoint id="result" uri="mock:result"/>
-
-    <route>
-      <from uri="seda:foo"/>
-      <to uri="ref:result"/>
-    </route>
-  </camelContext>
-  <!-- end::e1[] -->
-
-</beans>
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml b/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml
deleted file mode 100644
index 0541bd1..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-spring/src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<!-- START SNIPPET: example -->
-<!-- tag::example[] -->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-  <camelContext xmlns="http://camel.apache.org/schema/spring">
-    <route>
-      <from uri="direct:start"/>
-      <filter>
-        <xpath>$foo = 'bar'</xpath>
-        <to uri="mock:result"/>
-      </filter>
-    </route>
-  </camelContext>
-
-</beans>
-<!-- end::example[] -->
-<!-- END SNIPPET: example -->
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/DebugBlueprintTest.java b/docs/user-manual/modules/ROOT/examples/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/DebugBlueprintTest.java
deleted file mode 100644
index ade5182..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/DebugBlueprintTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.test.blueprint;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.model.ProcessorDefinition;
-import org.junit.Test;
-
-// START SNIPPET: example
-// tag::example[]
-// to use camel-test-blueprint, then extend the CamelBlueprintTestSupport class,
-// and add your unit tests methods as shown below.
-public class DebugBlueprintTest extends CamelBlueprintTestSupport {
-
-    private boolean debugBeforeMethodCalled;
-    private boolean debugAfterMethodCalled;
-
-    // override this method, and return the location of our Blueprint XML file to be used for testing
-    @Override
-    protected String getBlueprintDescriptor() {
-        return "org/apache/camel/test/blueprint/camelContext.xml";
-    }
-
-    // here we have regular JUnit @Test method
-    @Test
-    public void testRoute() throws Exception {
-
-        // set mock expectations
-        getMockEndpoint("mock:a").expectedMessageCount(1);
-
-        // send a message
-        template.sendBody("direct:start", "World");
-
-        // assert mocks
-        assertMockEndpointsSatisfied();
-
-        // assert on the debugBefore/debugAfter methods below being called as we've enabled the debugger
-        assertTrue(debugBeforeMethodCalled);
-        assertTrue(debugAfterMethodCalled);
-    }
-
-    @Override
-    public boolean isUseDebugger() {
-        // must enable debugger
-        return true;
-    }
-
-    @Override
-    protected void debugBefore(Exchange exchange, org.apache.camel.Processor processor, ProcessorDefinition<?> definition, String id, String label) {
-        log.info("Before " + definition + " with body " + exchange.getIn().getBody());
-        debugBeforeMethodCalled = true;
-    }
-
-    @Override
-    protected void debugAfter(Exchange exchange, org.apache.camel.Processor processor, ProcessorDefinition<?> definition, String id, String label, long timeTaken) {
-        log.info("After " + definition + " with body " + exchange.getIn().getBody());
-        debugAfterMethodCalled = true;
-    }
-}
-// end::example[]
-// END SNIPPET: example
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/camelContext.xml b/docs/user-manual/modules/ROOT/examples/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/camelContext.xml
deleted file mode 100644
index a7763c9..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/camelContext.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<!-- START SNIPPET: example -->
-<!-- tag::example[] -->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-           xsi:schemaLocation="
-             http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
-
-  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
-
-    <route>
-      <from uri="direct:start"/>
-      <transform>
-        <simple>Hello ${body}</simple>
-      </transform>
-      <to uri="mock:a"/>
-    </route>
-
-  </camelContext>
-
-</blueprint>
-<!-- end::example[] -->
-<!-- END SNIPPET: example -->
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java b/docs/user-manual/modules/ROOT/examples/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java
deleted file mode 100644
index 4171106..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.test.cdi;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-// START SNIPPET: example
-// tag::example[]
-@RunWith(CamelCdiRunner.class)
-public class FilterTest {
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate template;
-
-    @Before
-    public void before() {
-        resultEndpoint.reset();
-    }
-
-    @Test
-    public void testSendMatchingMessage() throws Exception {
-        String expectedBody = "<matched/>";
-
-        resultEndpoint.expectedBodiesReceived(expectedBody);
-
-        template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Test
-    public void testSendNotMatchingMessage() throws Exception {
-        resultEndpoint.expectedMessageCount(0);
-
-        template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    static class ContextConfig extends RouteBuilder {
-
-        @Override
-        public void configure() {
-            from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
-        }
-    }
-}
-// end::example[]
-// END SNIPPET: example
diff --git a/docs/user-manual/modules/ROOT/examples/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerPlainTest.java b/docs/user-manual/modules/ROOT/examples/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerPlainTest.java
deleted file mode 100644
index f5d0fb6..0000000
--- a/docs/user-manual/modules/ROOT/examples/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerPlainTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.test.spring;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.ServiceStatus;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.engine.DefaultManagementStrategy;
-import org.apache.camel.util.StopWatch;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.BootstrapWith;
-import org.springframework.test.context.ContextConfiguration;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-// tag::example[]
-@RunWith(CamelSpringRunner.class)
-// must tell Spring to bootstrap with Camel
-@BootstrapWith(CamelTestContextBootstrapper.class)
-@ContextConfiguration()
-// Put here to prevent Spring context caching across tests and test methods since some tests inherit
-// from this test and therefore use the same Spring context.  Also because we want to reset the
-// Camel context and mock endpoints between test methods automatically.
-@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
-public class CamelSpringRunnerPlainTest {
-    
-    @Autowired
-    protected CamelContext camelContext;
-    
-    @EndpointInject(value = "mock:a")
-    protected MockEndpoint mockA;
-    
-    @EndpointInject(value = "mock:b")
-    protected MockEndpoint mockB;
-    
-    @Produce(value = "direct:start")
-    protected ProducerTemplate start;
-    
-    @Test
-    public void testPositive() throws Exception {
-        assertEquals(ServiceStatus.Started, camelContext.getStatus());
-
-        mockA.expectedBodiesReceived("David");
-        mockB.expectedBodiesReceived("Hello David");
-
-        start.sendBody("David");
-
-        MockEndpoint.assertIsSatisfied(camelContext);
-    }
-    
-    @Test
-    public void testJmx() throws Exception {
-        assertEquals(DefaultManagementStrategy.class, camelContext.getManagementStrategy().getClass());
-    }
-    
-    @Test
-    public void testShutdownTimeout() throws Exception {
-        assertEquals(10, camelContext.getShutdownStrategy().getTimeout());
-        assertEquals(TimeUnit.SECONDS, camelContext.getShutdownStrategy().getTimeUnit());
-    }
-    
-    @Test
-    public void testStopwatch() {
-        StopWatch stopWatch = StopWatchTestExecutionListener.getStopWatch();
-        
-        assertNotNull(stopWatch);
-        assertTrue(stopWatch.taken() < 100);
-    }
-    
-    @Test
-    public void testExcludedRoute() {
-        assertNotNull(camelContext.getRoute("excludedRoute"));
-    }
-    
-    @Test
-    public void testProvidesBreakpoint() {
-        assertNull(camelContext.getDebugger());
-    }
-
-    @Test
-    public void testRouteCoverage() throws Exception {
-        // noop
-    }
-
-}
-// end::example[]
-
diff --git a/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/FilterTest.java b/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/FilterTest.java
deleted file mode 100644
index 3b783a5..0000000
--- a/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/FilterTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.processor;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
-
-// START SNIPPET: example
-// tag::example[]
-public class FilterTest extends ContextTestSupport {
-
-    @Test
-    public void testSendMatchingMessage() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.message(0).exchangeProperty(Exchange.FILTER_MATCHED).isEqualTo(true);
-
-        template.sendBodyAndHeader("direct:start", "<matched/>", "foo", "bar");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Test
-    public void testSendNotMatchingMessage() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-        resultEndpoint.expectedMessageCount(0);
-
-        template.sendBodyAndHeader("direct:start", "<notMatched/>", "foo", "notMatchedHeaderValue");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
-            }
-        };
-    }
-
-}
-// end::example[]
-// END SNIPPET: example
diff --git a/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/TransformTest.java b/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/TransformTest.java
deleted file mode 100644
index 9658893..0000000
--- a/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/TransformTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.processor;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Before;
-import org.junit.Test;
-
-public class TransformTest extends ContextTestSupport {
-    protected MockEndpoint resultEndpoint;
-
-    @Test
-    public void testSendingAMessageUsingMulticastReceivesItsOwnExchange() throws Exception {
-        resultEndpoint.expectedBodiesReceived("Hello World!");
-
-        sendBody("direct:start", "Hello");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-
-        resultEndpoint = getMockEndpoint("mock:result");
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                // tag::example[]
-                from("direct:start").process(new Processor() {
-                    public void process(Exchange exchange) {
-                        Message in = exchange.getIn();
-                        in.setBody(in.getBody(String.class) + " World!");
-                    }
-                }).to("mock:result");
-                // end::example[]
-            }
-        };
-    }
-}
diff --git a/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/TransformViaDSLTest.java b/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/TransformViaDSLTest.java
deleted file mode 100644
index 2b79ff2..0000000
--- a/docs/user-manual/modules/ROOT/examples/core/camel-core/src/test/java/org/apache/camel/processor/TransformViaDSLTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.processor;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Before;
-import org.junit.Test;
-
-public class TransformViaDSLTest extends ContextTestSupport {
-    protected MockEndpoint resultEndpoint;
-
-    @Test
-    public void testSendingAMessageUsingMulticastReceivesItsOwnExchange() throws Exception {
-        resultEndpoint.expectedBodiesReceived("Hello World!");
-
-        sendBody("direct:start", "Hello");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-
-        resultEndpoint = getMockEndpoint("mock:result");
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                // tag::example[]
-                from("direct:start").setBody(body().append(" World!")).to("mock:result");
-                // end::example[]
-            }
-        };
-    }
-}
diff --git a/docs/user-manual/modules/ROOT/examples/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java b/docs/user-manual/modules/ROOT/examples/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java
deleted file mode 100644
index ee20734..0000000
--- a/docs/user-manual/modules/ROOT/examples/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.management;
-
-import javax.management.Attribute;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.api.management.ManagedAttribute;
-import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.service.ServiceSupport;
-import org.junit.Test;
-
-public class ManagedCustomProcessorTest extends ManagementTestSupport {
-
-    @Test
-    public void testManageCustomProcessor() throws Exception {
-        // JMX tests dont work well on AIX CI servers (hangs them)
-        if (isPlatform("aix")) {
-            return;
-        }
-
-        MBeanServer mbeanServer = getMBeanServer();
-        ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=processors,name=\"custom\"");
-
-        getMockEndpoint("mock:result").expectedMessageCount(1);
-        getMockEndpoint("mock:result").expectedHeaderReceived("foo", "hey");
-        template.sendBody("direct:start", "Hello World");
-        assertMockEndpointsSatisfied();
-
-        String foo = (String) mbeanServer.getAttribute(on, "Foo");
-        assertEquals("hey", foo);
-
-        // change foo
-        mbeanServer.setAttribute(on, new Attribute("Foo", "changed"));
-
-        resetMocks();
-
-        getMockEndpoint("mock:result").expectedMessageCount(1);
-        getMockEndpoint("mock:result").expectedHeaderReceived("foo", "changed");
-        template.sendBody("direct:start", "Bye World");
-        assertMockEndpointsSatisfied();
-
-        String state = (String) mbeanServer.getAttribute(on, "State");
-        assertEquals("Started", state);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").routeId("foo")
-                    .process(new MyCustomProcessor()).id("custom")
-                    .to("mock:result");
-            }
-        };
-    }
-
-    // tag::e1[]
-    @ManagedResource(description = "My Managed Component")
-    public static class MyCustomProcessor extends ServiceSupport implements Processor {
-        private String foo = "hey";
-
-        @ManagedAttribute
-        public String getFoo() {
-            return foo;
-        }
-
-        @ManagedAttribute
-        public void setFoo(String foo) {
-            this.foo = foo;
-        }
-
-        @Override
-        public void process(Exchange exchange) throws Exception {
-            exchange.getIn().setHeader("foo", getFoo());
-        }
-
-        @Override
-        protected void doStart() throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            // noop
-        }
-    }
-    // end::e1[]
-
-}
diff --git a/docs/user-manual/modules/ROOT/examples/examples/camel-example-console/src/main/resources/META-INF/spring/camel-context.xml b/docs/user-manual/modules/ROOT/examples/examples/camel-example-console/src/main/resources/META-INF/spring/camel-context.xml
deleted file mode 100644
index 5cfd369..0000000
--- a/docs/user-manual/modules/ROOT/examples/examples/camel-example-console/src/main/resources/META-INF/spring/camel-context.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-  <!-- tag::e1[] -->
-  <!-- camelContext is the Camel runtime, where we can host Camel routes -->
-  <camelContext xmlns="http://camel.apache.org/schema/spring">
-    <route>
-      <!-- read input from the console using the stream component -->
-      <from uri="stream:in?promptMessage=Enter something: "/>
-      <!-- transform the input to upper case using the simple language -->
-      <!-- you can also use other languages such as groovy, ognl, mvel, javascript etc. -->
-      <transform>
-        <simple>${body.toUpperCase()}</simple>
-      </transform>
-      <!-- and then print to the console -->
-      <to uri="stream:out"/>
-    </route>
-  </camelContext>
-  <!-- end::e1[] -->
-
-</beans>
diff --git a/docs/user-manual/modules/ROOT/examples/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java b/docs/user-manual/modules/ROOT/examples/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java
deleted file mode 100644
index 4d949ff..0000000
--- a/docs/user-manual/modules/ROOT/examples/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.example.jmstofile;
-
-import javax.jms.ConnectionFactory;
-
-import org.apache.activemq.ActiveMQConnectionFactory;
-import org.apache.camel.CamelContext;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.jms.JmsComponent;
-import org.apache.camel.impl.DefaultCamelContext;
-
-/**
- * An example class for demonstrating some of the basics behind Camel. This
- * example sends some text messages on to a JMS Queue, consumes them and
- * persists them to disk
- */
-public final class CamelJmsToFileExample {
-
-    private CamelJmsToFileExample() {        
-    }
-    
-    public static void main(String args[]) throws Exception {
-        // tag::e1[]
-        CamelContext context = new DefaultCamelContext();
-        // end::e1[]
-        // Set up the ActiveMQ JMS Components
-        // tag::e2[]
-        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
-        // Note we can explicit name the component
-        context.addComponent("test-jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
-        // end::e2[]
-        // Add some configuration by hand ...
-        // tag::e3[]
-        context.addRoutes(new RouteBuilder() {
-            public void configure() {
-                from("test-jms:queue:test.queue").to("file://test");
-            }
-        });
-        // end::e3[]
-        // Camel template - a handy class for kicking off exchanges
-        // tag::e4[]
-        ProducerTemplate template = context.createProducerTemplate();
-        // end::e4[]
-        // Now everything is set up - lets start the context
-        context.start();
-        // Now send some test text to a component - for this case a JMS Queue
-        // The text get converted to JMS messages - and sent to the Queue
-        // test.queue
-        // The file component is listening for messages from the Queue
-        // test.queue, consumes
-        // them and stores them to disk. The content of each file will be the
-        // test we sent here.
-        // The listener on the file component gets notified when new files are
-        // found ... that's it!
-        // tag::e5[]
-        for (int i = 0; i < 10; i++) {
-            template.sendBody("test-jms:queue:test.queue", "Test Message: " + i);
-        }
-        // end::e5[]
-
-        // wait a bit and then stop
-        Thread.sleep(1000);
-        context.stop();
-    }
-}
diff --git a/docs/user-manual/modules/ROOT/pages/constant-language.adoc b/docs/user-manual/modules/ROOT/pages/constant-language.adoc
deleted file mode 100644
index 338765f..0000000
--- a/docs/user-manual/modules/ROOT/pages/constant-language.adoc
+++ /dev/null
@@ -1,72 +0,0 @@
-[[constant-language]]
-= Constant Language
-:page-source: core/camel-base/src/main/docs/constant-language.adoc
-
-*Since Camel 1.5*
-
-The Constant Expression Language is really just a way to specify
-constant strings as a type of expression.
-
-NOTE: This is a fixed constant value that is only set once during starting up the route,
-      do not use this if you want dynamic values during routing.
-
-== Constant Options
-
-
-// language options: START
-The Constant language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-
-== Example usage
-
-The setHeader element of the Spring DSL can utilize a constant
-expression like:
-
-[source,xml]
-----
-<route>
-  <from uri="seda:a"/>
-  <setHeader name="theHeader">
-    <constant>the value</constant>
-  </setHeader>
-  <to uri="mock:b"/>
-</route>
-----
-
-in this case, the Message coming from the seda:a
-Endpoint will have 'theHeader' header set to the
-constant value 'the value'.
-
-And the same example using Java DSL:
-
-[source,java]
-----
-from("seda:a")
-  .setHeader("theHeader", constant("the value"))
-  .to("mock:b");
-----
-
-== Loading constant from external resource
-
-You can externalize the constant and have Camel load it from a resource
-such as `"classpath:"`, `"file:"`, or `"http:"`. +
- This is done using the following syntax: `"resource:scheme:location"`,
-eg to refer to a file on the classpath you can do:
-
-[source,java]
-----
-.setHeader("myHeader").constant("resource:classpath:constant.txt")
-----
-
-== Dependencies
-
-The Constant language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/exchangeProperty-language.adoc b/docs/user-manual/modules/ROOT/pages/exchangeProperty-language.adoc
deleted file mode 100644
index f26a26f..0000000
--- a/docs/user-manual/modules/ROOT/pages/exchangeProperty-language.adoc
+++ /dev/null
@@ -1,61 +0,0 @@
-[[exchangeProperty-language]]
-= ExchangeProperty Language
-:page-source: core/camel-base/src/main/docs/exchangeProperty-language.adoc
-
-*Since Camel 2.0*
-
-The ExchangeProperty Expression Language allows you to extract values of
-named exchange properties.
-
-== Exchange Property Options
-
-// language options: START
-The ExchangeProperty language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Example usage
-
-The recipientList element of the Spring DSL can utilize a
-exchangeProperty expression like:
-
-In this case, the list of recipients are contained in the property
-'myProperty'.
-
-[source,xml]
-----
-<route>
-  <from uri="direct:a" />
-  <recipientList>
-    <exchangeProperty>myProperty</exchangeProperty>
-  </recipientList>
-</route>
-----
-
-And the same example in Java DSL:
-
-[source,java]
-----
-from("direct:a").recipientList(exchangeProperty("myProperty"));
-----
-
-And with a slightly different syntax where you use the builder to the
-fullest (i.e. avoid using parameters but using stacked operations,
-notice that exchangeProperty is not a parameter but a stacked method
-call)
-
-[source,java]
-----
-from("direct:a").recipientList().exchangeProperty("myProperty");
-----
-
-== Dependencies
-
-The ExchangeProperty language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/file-language.adoc b/docs/user-manual/modules/ROOT/pages/file-language.adoc
deleted file mode 100644
index a0ae9b0..0000000
--- a/docs/user-manual/modules/ROOT/pages/file-language.adoc
+++ /dev/null
@@ -1,295 +0,0 @@
-[[file-language]]
-= File Language
-:page-source: core/camel-base/src/main/docs/file-language.adoc
-
-*Since Camel 1.1*
-
-The file language is merged with
-xref:simple-language.adoc[Simple] language which means you can use all the file
-syntax directly within the simple language.
-
-The File Expression Language is an extension to the
-xref:simple-language.adoc[Simple] language, adding file related capabilities.
-These capabilities are related to common use cases working with file
-path and names. The goal is to allow expressions to be used with the
-File and FTP components for setting
-dynamic file patterns for both consumer and producer.
-
-== File Language options
-
-// language options: START
-The File language supports 2 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| resultType |  | String | Sets the class name of the result type (type from output)
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Syntax
-
-This language is an *extension* to the xref:simple-language.adoc[Simple] language
-so the xref:simple-language.adoc[Simple] syntax applies also. So the table below
-only lists the additional.  +
- As opposed to xref:simple-language.adoc[Simple] language
-xref:file-language.adoc[File Language] also supports
-xref:constant-language.adoc[Constant] expressions so you can enter a fixed
-filename.
-
-All the file tokens use the same expression name as the method on the
-`java.io.File` object, for instance `file:absolute` refers to the
-`java.io.File.getAbsolute()` method. Notice that not all expressions are
-supported by the current Exchange. For instance the xref:components::ftp-component.adoc[FTP]
-component supports some of the options, where as the
-File component supports all of them.
-
-
-[width="100%",cols="10%,10%,10%,10%,10%,25%,25%",options="header",]
-|===
-|Expression |Type |File Consumer |File Producer |FTP Consumer |FTP Producer |Description
-
-|file:name |String |yes |no |yes |no |refers to the file name (is relative to the starting directory, see note
-below)
-
-|file:name.ext |String |yes |no |yes |no |refers to the file extension only
-
-|file:name.ext.single |String |yes |no |yes |no |refers to the file extension. If the file
-extension has mutiple dots, then this expression strips and only returns
-the last part.
-
-|file:name.noext |String |yes |no |yes |no |refers to the file name with no extension (is relative to the starting
-directory, see note below)
-
-|file:name.noext.single |String |yes |no |yes |no |refers to the file name with no extension (is
-relative to the starting directory, see note below). If the file
-extension has multiple dots, then this expression strips only the last
-part, and keep the others.
-
-|file:onlyname |String |yes |no |yes |no |refers to the file name only with no leading paths.
-
-|file:onlyname.noext |String |yes |no |yes |no |refers to the file name only with no extension and with no leading
-paths.
-
-|file:onlyname.noext.single |String |yes |no |yes |no |refers to the file name only with no extension and
-with no leading paths. If the file extension has multiple dots, then
-this expression strips only the last part, and keep the others.
-
-|file:ext |String |yes |no |yes |no |refers to the file extension only
-
-|file:parent |String |yes |no |yes |no |refers to the file parent
-
-|file:path |String |yes |no |yes |no |refers to the file path
-
-|file:absolute |Boolean |yes |no |no |no |refers to whether the file is regarded as absolute or relative
-
-|file:absolute.path |String |yes |no |no |no |refers to the absolute file path
-
-|file:length |Long |yes |no |yes |no |refers to the file length returned as a Long type
-
-|file:size |Long |yes |no |yes |no |refers to the file length returned as a Long type
-
-|file:modified |Date |yes |no |yes |no |Refers to the file last modified returned as a Date type
-
-|date:_command:pattern_ |String |yes |yes |yes |yes |for date formatting using the `java.text.SimpleDateFormat` patterns. Is
-an *extension* to the xref:simple-language.adoc[Simple] language. Additional
-command is: *file* (consumers only) for the last modified timestamp of
-the file. Notice: all the commands from the xref:simple-language.adoc[Simple]
-language can also be used.
-|===
-
-== File token example
-
-=== Relative paths
-
-We have a `java.io.File` handle for the file `hello.txt` in the
-following *relative* directory: `.\filelanguage\test`. And we configure
-our endpoint to use this starting directory `.\filelanguage`. The file
-tokens will return as:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Expression |Returns
-
-|file:name |test\hello.txt
-
-|file:name.ext |txt
-
-|file:name.noext |test\hello
-
-|file:onlyname |hello.txt
-
-|file:onlyname.noext |hello
-
-|file:ext |txt
-
-|file:parent |filelanguage\test
-
-|file:path |filelanguage\test\hello.txt
-
-|file:absolute |false
-
-|file:absolute.path |\workspace\camel\camel-core\target\filelanguage\test\hello.txt
-|===
-
-=== Absolute paths
-
-We have a `java.io.File` handle for the file `hello.txt` in the
-following *absolute* directory:
-`\workspace\camel\camel-core\target\filelanguage\test`. And we configure
-out endpoint to use the absolute starting directory
-`\workspace\camel\camel-core\target\filelanguage`. The file tokens will
-return as:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Expression |Returns
-
-|file:name |test\hello.txt 
-
-|file:name.ext |txt
-
-|file:name.noext |test\hello
-
-|file:onlyname |hello.txt
-
-|file:onlyname.noext |hello
-
-|file:ext |txt
-
-|file:parent |\workspace\camel\camel-core\target\filelanguage\test
-
-|file:path |\workspace\camel\camel-core\target\filelanguage\test\hello.txt
-
-|file:absolute |true
-
-|file:absolute.path |\workspace\camel\camel-core\target\filelanguage\test\hello.txt
-|===
-
-== Samples
-
-You can enter a fixed xref:constant-language.adoc[Constant] expression such as
-`myfile.txt`:
-
-[source]
-----
-fileName="myfile.txt"
-----
-
-Lets assume we use the file consumer to read files and want to move the
-read files to backup folder with the current date as a sub folder. This
-can be archieved using an expression like:
-
-[source]
-----
-fileName="backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"
-----
-
-relative folder names are also supported so suppose the backup folder
-should be a sibling folder then you can append .. as:
-
-[source]
-----
-fileName="../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"
-----
-
-As this is an extension to the xref:simple-language.adoc[Simple] language we have
-access to all the goodies from this language also, so in this use case
-we want to use the in.header.type as a parameter in the dynamic
-expression:
-
-[source]
-----
-fileName="../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak"
-----
-
-If you have a custom Date you want to use in the expression then Camel
-supports retrieving dates from the message header.
-
-[source]
-----
-fileName="orders/order-${in.header.customerId}-${date:in.header.orderDate:yyyyMMdd}.xml"
-----
-
-And finally we can also use a bean expression to invoke a POJO class
-that generates some String output (or convertible to String) to be used:
-
-[source]
-----
-fileName="uniquefile-${bean:myguidgenerator.generateid}.txt"
-----
-
-And of course all this can be combined in one expression where you can
-use the xref:file-language.adoc[File Language], xref:file-language.adoc[Simple]
-and the xref:components::bean-component.adoc[Bean] language in one combined expression. This
-is pretty powerful for those common file path patterns.
-
-== Using Spring PropertyPlaceholderConfigurer together with the File component
-
-In Camel you can use the xref:file-language.adoc[File Language] directly
-from the xref:simple-language.adoc[Simple] language which makes a
-Content Based Router easier to do in
-Spring XML, where we can route based on file extensions as shown below:
-
-[source,xml]
-----
-<from uri="file://input/orders"/>
-   <choice>
-     <when>
-         <simple>${file:ext} == 'txt'</simple>
-         <to uri="bean:orderService?method=handleTextFiles"/>
-     </when>
-     <when>
-         <simple>${file:ext} == 'xml'</simple>
-         <to uri="bean:orderService?method=handleXmlFiles"/>
-     </when>
-     <otherwise>
-         <to uri="bean:orderService?method=handleOtherFiles"/>
-     </otherwise>
-  </choice>
-----
-
-If you use the `fileName` option on the File endpoint
-to set a dynamic filename using the xref:file-language.adoc[File Language] then make sure you  +
- use the alternative syntax to avoid
-clashing with Springs `PropertyPlaceholderConfigurer`.
-
-*bundle-context.xml*
-
-[source,xml]
-----
-<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-    <property name="location" value="classpath:bundle-context.cfg" />
-</bean>
-
-<bean id="sampleRoute" class="SampleRoute">
-    <property name="fromEndpoint" value="${fromEndpoint}" />
-    <property name="toEndpoint" value="${toEndpoint}" />
-</bean>
-----
-
-*bundle-context.cfg*
-
-[source]
-----
-fromEndpoint=activemq:queue:test
-toEndpoint=file://fileRoute/out?fileName=test-$simple{date:now:yyyyMMdd}.txt
-----
-
-Notice how we use the $simple\{ } syntax in the `toEndpoint` above. +
- If you don't do this, there is a clash and Spring will throw an
-exception like
-
-[source,java]
-----------------------------------------------------------------------------------------------------
-org.springframework.beans.factory.BeanDefinitionStoreException:
-Invalid bean definition with name 'sampleRoute' defined in class path resource [bundle-context.xml]:
-Could not resolve placeholder 'date:now:yyyyMMdd'
-----------------------------------------------------------------------------------------------------
-
-== Dependencies
-
-The File language is part of *camel-core*.
diff --git a/docs/user-manual/modules/ROOT/pages/header-language.adoc b/docs/user-manual/modules/ROOT/pages/header-language.adoc
deleted file mode 100644
index e80167b..0000000
--- a/docs/user-manual/modules/ROOT/pages/header-language.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-[[header-language]]
-= Header Language
-:page-source: core/camel-base/src/main/docs/header-language.adoc
-
-*Since Camel 1.5*
-
-The Header Expression Language allows you to extract values of named
-headers.
-
-== Header Options
-
-// language options: START
-The Header language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Example usage
-
-The recipientList element of the Spring DSL can utilize a header
-expression like:
-
-In this case, the list of recipients are contained in the header
-'myHeader'.
-
-And the same example in Java DSL:
-
-And with a slightly different syntax where you use the builder to the
-fullest (i.e. avoid using parameters but using stacked operations,
-notice that header is not a parameter but a stacked method call)
-
-[source,java]
-----
-from("direct:a").recipientList().header("myHeader");
-----
-
-== Dependencies
-
-The Header language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/ref-language.adoc b/docs/user-manual/modules/ROOT/pages/ref-language.adoc
deleted file mode 100644
index 1423291..0000000
--- a/docs/user-manual/modules/ROOT/pages/ref-language.adoc
+++ /dev/null
@@ -1,58 +0,0 @@
-[[ref-language]]
-= Ref Language
-:page-source: core/camel-base/src/main/docs/ref-language.adoc
-
-*Since Camel 2.8*
-
-The Ref Expression Language is really just a way to lookup a custom
-Expression or Predicate from the Registry.
-
-This is particular useable in XML DSLs.
-
-== Ref Language options
-
-// language options: START
-The Ref language supports 1 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Example usage
-
-The Splitter in XML DSL can utilize a custom
-expression using `<ref>` like:
-
-[source,xml]
-----
-<bean id="myExpression" class="com.mycompany.MyCustomExpression"/>
-
-<route>
-  <from uri="seda:a"/>
-  <split>
-    <ref>myExpression</ref>   
-    <to uri="mock:b"/>
-  </split>     
-</route>
-----
-
-in this case, the Message coming from the seda:a
-Endpoint will be splitted using a custom
-Expression which has the id `myExpression` in the
-Registry.
-
-And the same example using Java DSL:
-
-[source,java]
-----
-from("seda:a").split().ref("myExpression").to("seda:b");
-----
-
-== Dependencies
-
-The Ref language is part of *camel-core*.
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/simple-language.adoc b/docs/user-manual/modules/ROOT/pages/simple-language.adoc
deleted file mode 100644
index 7b1e4fa..0000000
--- a/docs/user-manual/modules/ROOT/pages/simple-language.adoc
+++ /dev/null
@@ -1,878 +0,0 @@
-[[simple-language]]
-= Simple Language
-:page-source: core/camel-base/src/main/docs/simple-language.adoc
-
-*Since Camel 1.1*
-
-The Simple Expression Language was a really simple language when it was
-created, but has since grown more powerful. It is primarily intended for
-being a really small and simple language for evaluating
-Expressions and Predicates
-without requiring any new dependencies or knowledge of
-xref:xpath-language.adoc[XPath]; so it is ideal for testing in camel-core. The
-idea was to cover 95% of the common use cases when you need a little bit
-of expression based script in your Camel routes.
-
-However for much more complex use cases you are generally recommended to
-choose a more expressive and powerful language such as:
-
-* xref:groovy-language.adoc[Groovy]
-* xref:spel-language.adoc[SpEL]
-* xref:mvel-component.adoc[MVEL]
-* xref:ognl-language.adoc[OGNL]
-
-The simple language uses `${body`} placeholders for complex expressions
-where the expression contains constant literals. The $\{ } placeholders
-can be omitted if the expression is only the token itself.
-
-TIP: *Alternative syntax* You can also use the alternative syntax which
-uses `$simple{ }` as placeholders. This can be used in situations to avoid clashes when using for example
-Spring property placeholder together with Camel.
-
-
-== Simple Language options
-
-// language options: START
-The Simple language supports 2 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| resultType |  | String | Sets the class name of the result type (type from output)
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
-
-== Variables
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Variable |Type |Description
-
-|camelId |String |the CamelContext name
-
-|camelContext.*OGNL* |Object |the CamelContext invoked using a Camel OGNL expression.
-
-|exchange |Exchange |the Exchange
-
-|exchange.*OGNL* |Object |the Exchange invoked using a Camel
-OGNL expression.
-
-|exchangeId |String |the exchange id
-
-|id |String |the input message id
-
-|body |Object |the input body
-
-|in.body |Object |*deprecated* the input body
-
-|body.*OGNL* |Object |the input body invoked using a Camel OGNL expression.
-
-|in.body.*OGNL* |Object |*deprecated* the input body invoked using a Camel OGNL expression.
-
-|bodyAs(_type_) |Type |Converts the body to the given type determined by its
-classname. The converted body can be null.
-
-|bodyAs(_type_).*OGNL* |Object |Converts the body to the given type determined by its
-classname and then invoke methods using a Camel OGNL expression. The
-converted body can be null.
-
-|bodyOneLine | String | Converts the body to a String and removes all line-breaks so the string is in one line.
-
-|mandatoryBodyAs(_type_) |Type |Converts the body to the given type determined by its
-classname, and expects the body to be not null.
-
-|mandatoryBodyAs(_type_).*OGNL* |Object |Converts the body to the given type determined by its
-classname and then invoke methods using a Camel OGNL expression.
-
-|header.foo |Object |refer to the input foo header
-
-|header:foo |Object |refer to the input foo header
-
-|header[foo] |Object |refer to the input foo header
-
-|headers.foo |Object |refer to the input foo header
-
-|headers:foo |Object |refer to the input foo header
-
-|headers[foo] |Object |refer to the input foo header
-
-|in.header.foo |Object |*deprecated* refer to the input foo header
-
-|in.header:foo |Object |*deprecated* refer to the input foo header
-
-|in.header[foo] |Object |*deprecated* refer to the input foo header
-
-|in.headers.foo |Object |*deprecated* refer to the input foo header
-
-|in.headers:foo |Object |*deprecated* refer to the input foo header
-
-|in.headers[foo] |Object |*deprecated* refer to the input foo header
-
-|header.foo[bar] |Object |regard input foo header as a map and perform lookup on the
-map with bar as key
-
-|in.header.foo[bar] |Object |*deprecated* regard input foo header as a map and perform lookup on the
-map with bar as key
-
-|in.headers.foo[bar] |Object |*deprecated* regard input foo header as a map and perform lookup on the
-map with bar as key
-
-|header.foo.*OGNL* |Object |refer to the input foo header and invoke its value using a
-Camel OGNL expression.
-
-|in.header.foo.*OGNL* |Object |*deprecated* refer to the input foo header and invoke its value using a
-Camel OGNL expression.
-
-|in.headers.foo.*OGNL* |Object |*deprecated* refer to the input foo header and invoke its value using a
-Camel OGNL expression.
-
-|headerAs(_key_,_type_) |Type |converts the header to the given type determined by its
-classname
-
-|headers |Map |refer to the input headers
-
-|in.headers |Map |*deprecated* refer to the input headers
-
-|exchangeProperty.foo |Object |refer to the foo property on the exchange
-
-|exchangeProperty[foo] |Object |refer to the foo property on the exchange
-
-|exchangeProperty.foo.*OGNL* |Object |refer to the foo property on the exchange and invoke its
-value using a Camel OGNL expression.
-
-|sys.foo |String |refer to the JVM system property
-
-|sysenv.foo |String |refer to the system environment variable
-
-|env.foo |String |refer to the system environment variable
-
-|exception |Object |refer to the exception object on the exchange, is *null* if
-no exception set on exchange. Will fallback and grab caught exceptions
-(`Exchange.EXCEPTION_CAUGHT`) if the Exchange has any.
-
-|exception.*OGNL* |Object |refer to the exchange exception invoked using a Camel OGNL
-expression object
-
-|exception.message |String |refer to the exception.message on the exchange, is *null* if no
-exception set on exchange. Will fallback and grab caught exceptions
-(`Exchange.EXCEPTION_CAUGHT`) if the Exchange has any.
-
-|exception.stacktrace |String |refer to the exception.stracktrace on the exchange, is
-*null* if no exception set on exchange. Will fallback and grab caught
-exceptions (`Exchange.EXCEPTION_CAUGHT`) if the Exchange has any.
-
-|date:_command_ |Date |evaluates to a Date object.
-Supported commands are: *now* for current timestamp, *in.header.xxx* or
-*header.xxx* to use the Date object header with the key xxx.
-*exchangeProperty.xxx* to use the Date object in the exchange property with the key xxx.
-*file* for the last modified timestamp of the file (available with a File consumer).
-Command accepts offsets such as: *now-24h* or *in.header.xxx+1h* or even *now+1h30m-100*.
-
-|date:_command:pattern_ |String |Date formatting using `java.text.SimpleDataFormat` patterns.
-
-|date-with-timezone:_command:timezone:pattern_ |String |Date formatting using `java.text.SimpleDataFormat` timezones and patterns.
-
-|bean:_bean expression_ |Object |Invoking a bean expression using the xref:bean-component.adoc[Bean] language.
-Specifying a method name you must use dot as separator. We also support
-the ?method=methodname syntax that is used by the xref:bean-component.adoc[Bean]
-component.
-
-|`properties:key:default` |String |Lookup a property with the given key. If the key does
-not exists or has no value, then an optional default value can be
-specified.
-
-|routeId |String |Returns the id of the current route the
-Exchange is being routed.
-
-|stepId |String |Returns the id of the current step the
-Exchange is being routed.
-
-|threadName |String |Returns the name of the current thread. Can be used for
-logging purpose.
-
-|ref:xxx |Object |To lookup a bean from the Registry with
-the given id.
-
-|type:name.field |Object |To refer to a type or field by its FQN name. To refer to a
-field you can append .FIELD_NAME. For example you can refer to the
-constant field from Exchange as: `org.apache.camel.Exchange.FILE_NAME`
-
-|null |null |represents a *null*
-
-|random_(value)_ |Integer |returns a random Integer between 0 (included) and _value_
-(excluded)
-
-|random_(min,max)_ |Integer |returns a random Integer between _min_ (included) and
-_max_ (excluded)
-
-|collate(group) |List |The collate function iterates the message body and groups
-the data into sub lists of specified size. This can be used with the
-Splitter EIP to split a message body and group/batch
-the splitted sub message into a group of N sub lists. This method works
-similar to the collate method in Groovy.
-
-|skip(number) |Iterator |The skip function iterates the message body and skips
-the first number of items. This can be used with the
-Splitter EIP to split a message body and skip the first N number of items.
-
-|messageHistory |String |The message history of the current exchange how it has
-been routed. This is similar to the route stack-trace message history
-the error handler logs in case of an unhandled exception.
-
-|messageHistory(false) |String |As messageHistory but without the exchange details (only
-includes the route strack-trace). This can be used if you do not want to
-log sensitive data from the message itself.
-|=======================================================================
-
-== OGNL expression support
-
-INFO:Camel's OGNL support is for invoking methods only. You cannot access
-fields. Camel support accessing the length field of Java arrays.
-
-
-The xref:simple-language.adoc[Simple] and xref:simple-language.adoc[Bean] language now
-supports a Camel OGNL notation for invoking beans in a chain like
-fashion. Suppose the Message IN body contains a POJO which has a `getAddress()`
-method.
-
-Then you can use Camel OGNL notation to access the address object:
-
-[source,java]
---------------------------------
-simple("${body.address}")
-simple("${body.address.street}")
-simple("${body.address.zip}")
---------------------------------
-
-Camel understands the shorthand names for getters, but you can invoke
-any method or use the real name such as:
-
-[source,java]
---------------------------------------
-simple("${body.address}")
-simple("${body.getAddress.getStreet}")
-simple("${body.address.getZip}")
-simple("${body.doSomething}")
---------------------------------------
-
-You can also use the null safe operator (`?.`) to avoid NPE if for
-example the body does NOT have an address
-
-[source,java]
-----------------------------------
-simple("${body?.address?.street}")
-----------------------------------
-
-It is also possible to index in `Map` or `List` types, so you can do:
-
-[source,java]
----------------------------
-simple("${body[foo].name}")
----------------------------
-
-To assume the body is `Map` based and lookup the value with `foo` as
-key, and invoke the `getName` method on that value.
-
-If the key has space, then you *must* enclose the key with quotes, for
-example 'foo bar':
-
-[source,java]
----------------------------------
-simple("${body['foo bar'].name}")
----------------------------------
-
-You can access the `Map` or `List` objects directly using their key name
-(with or without dots) :
-
-[source,java]
-------------------------------
-simple("${body[foo]}")
-simple("${body[this.is.foo]}")
-------------------------------
-
-Suppose there was no value with the key `foo` then you can use the null
-safe operator to avoid the NPE as shown:
-
-[source,java]
-----------------------------
-simple("${body[foo]?.name}")
-----------------------------
-
-You can also access `List` types, for example to get lines from the
-address you can do:
-
-[source,java]
-----------------------------------
-simple("${body.address.lines[0]}")
-simple("${body.address.lines[1]}")
-simple("${body.address.lines[2]}")
-----------------------------------
-
-There is a special `last` keyword which can be used to get the last
-value from a list.
-
-[source,java]
--------------------------------------
-simple("${body.address.lines[last]}")
--------------------------------------
-
-And to get the 2nd last you can subtract a number, so we can use
-`last-1` to indicate this:
-
-[source,java]
----------------------------------------
-simple("${body.address.lines[last-1]}")
----------------------------------------
-
-And the 3rd last is of course:
-
-[source,java]
----------------------------------------
-simple("${body.address.lines[last-2]}")
----------------------------------------
-
-And you can call the size method on the list with
-
-[source,java]
-------------------------------------
-simple("${body.address.lines.size}")
-------------------------------------
-
-Camel supports the length field for Java arrays as well, eg:
-
-[source,java]
----------------------------------------------------
-String[] lines = new String[]{"foo", "bar", "cat"};
-exchange.getIn().setBody(lines);
-
-simple("There are ${body.length} lines")
----------------------------------------------------
-
-And yes you can combine this with the operator support as shown below:
-
-[source,java]
-------------------------------------
-simple("${body.address.zip} > 1000")
-------------------------------------
-
-== Operator support
-
-The parser is limited to only support a single operator.
-
-To enable it the left value must be enclosed in $\{ }. The syntax is:
-
-[source]
---------------------------
-${leftValue} OP rightValue
---------------------------
-
-Where the `rightValue` can be a String literal enclosed in `' '`,
-`null`, a constant value or another expression enclosed in $\{ }.
-
-IMPORTANT: There *must* be spaces around the operator.
-
-Camel will automatically type convert the rightValue type to the
-leftValue type, so it is able to eg. convert a string into a numeric so
-you can use > comparison for numeric values.
-
-The following operators are supported:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Operator |Description
-
-|== |equals
-
-|=~ |equals ignore case (will ignore case when comparing String values)
-
-|> |greater than
-
-|>= |greater than or equals
-
-|< |less than
-
-|<= |less than or equals
-
-|!=~ |not equals
-
-|!=~ |not equals ignore case (will ignore case when comparing String values)
-
-|contains |For testing if contains in a string based value
-
-|!contains |For testing if not contains in a string based value
-
-|~~ |For testing if contains by ignoring case sensitivity in a string based value
-
-|!~~ |For testing if not contains by ignoring case sensitivity in a string based value
-
-|regex |For matching against a given regular expression pattern defined as a
-String value
-
-|!regex |For not matching against a given regular expression pattern defined as a
-String value
-
-|in |For matching if in a set of values, each element must be separated by
-comma. If you want to include an empty value, then it must be defined using double comma, eg ',,bronze,silver,gold', which
-is a set of four values with an empty value and then the three medals.
-
-|!in |For matching if not in a set of values, each element must be separated
-by comma. If you want to include an empty value, then it must be defined using double comma, eg ',,bronze,silver,gold', which
-is a set of four values with an empty value and then the three medals.
-
-|is |For matching if the left hand side type is an instanceof the value.
-
-|!is |For matching if the left hand side type is not an instanceof the value.
-
-|range |For matching if the left hand side is within a range of values defined
-as numbers: `from..to`..
-
-|!range |For matching if the left hand side is not within a range of values
-defined as numbers: `from..to`. .
-
-|startsWith |For testing if the left hand side string starts
-with the right hand string.
-
-|endsWith |For testing if the left hand side string ends with
-the right hand string.
-|===
-
-And the following unary operators can be used:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Operator |Description
-
-|++ |To increment a number by one. The left hand side must be a
-function, otherwise parsed as literal.
-
-|-- |To decrement a number by one. The left hand side must be a
-function, otherwise parsed as literal.
-
-|\ |To escape a value, eg \$, to indicate a $ sign.
-Special: Use \n for new line, \t for tab, and \r for carriage return.
-*Notice:* Escaping is *not* supported using the
-xref:file-language.adoc[File Language]. *Notice:* The escape character is not supported, use the
-following three special escaping instead.
-
-|\n |To use newline character.
-
-|\t |To use tab character.
-
-|\r |To use carriage return character.
-
-|\} |To use the } character as text
-|===
-
-And the following logical operators can be used to group expressions:
-
-[width="100%",cols="50%,50%",options="header",]
-|===
-|Operator |Description
-
-|&& |The logical and operator is used to group two expressions.
-
-| \|\| |The logical or operator is used to group two expressions.
-|===
-
-The syntax for AND is:
-
-[source]
-----------------------------------------------------------
-${leftValue} OP rightValue && ${leftValue} OP rightValue
-----------------------------------------------------------
-
-And the syntax for OR is:
-
-[source]
----------------------------------------------------------
-${leftValue} OP rightValue || ${leftValue} OP rightValue
----------------------------------------------------------
-
-Some examples:
-
-[source,java]
-----
-// exact equals match
-simple("${in.header.foo} == 'foo'")
-
-// ignore case when comparing, so if the header has value FOO this will match
-simple("${in.header.foo} =~ 'foo'")
-
-// here Camel will type convert '100' into the type of in.header.bar and if it is an Integer '100' will also be converter to an Integer
-simple("${in.header.bar} == '100'")
-
-simple("${in.header.bar} == 100")
-
-// 100 will be converter to the type of in.header.bar so we can do > comparison
-simple("${in.header.bar} > 100")
-----
-
-=== Comparing with different types
-
-When you compare with different types such as String and int, then you
-have to take a bit care. Camel will use the type from the left hand side
-as 1st priority. And fallback to the right hand side type if both values
-couldn't be compared based on that type. +
- This means you can flip the values to enforce a specific type. Suppose
-the bar value above is a String. Then you can flip the equation:
-
-[source,java]
-----
-simple("100 < ${in.header.bar}")
-----
-
-which then ensures the int type is used as 1st priority.
-
-This may change in the future if the Camel team improves the binary
-comparison operations to prefer numeric types over String based. It's
-most often the String type which causes problem when comparing with
-numbers.
-
-[source,java]
-----
-// testing for null
-simple("${in.header.baz} == null")
-
-// testing for not null
-simple("${in.header.baz} != null")
-----
-
-And a bit more advanced example where the right value is another
-expression
-
-[source,java]
-----
-simple("${in.header.date} == ${date:now:yyyyMMdd}")
-
-simple("${in.header.type} == ${bean:orderService?method=getOrderType}")
-----
-
-And an example with contains, testing if the title contains the word
-Camel
-
-[source,java]
-----
-simple("${in.header.title} contains 'Camel'")
-----
-
-And an example with regex, testing if the number header is a 4 digit
-value:
-
-[source,java]
-----
-simple("${in.header.number} regex '\\d{4}'")
-----
-
-And finally an example if the header equals any of the values in the
-list. Each element must be separated by comma, and no space around. +
- This also works for numbers etc, as Camel will convert each element
-into the type of the left hand side.
-
-[source,java]
-----
-simple("${in.header.type} in 'gold,silver'")
-----
-
-And for all the last 3 we also support the negate test using not:
-
-[source,java]
-----
-simple("${in.header.type} !in 'gold,silver'")
-----
-
-And you can test if the type is a certain instance, eg for instance a
-String
-
-[source,java]
-----
-simple("${in.header.type} is 'java.lang.String'")
-----
-
-We have added a shorthand for all `java.lang` types so you can write it
-as:
-
-[source,java]
-----
-simple("${in.header.type} is 'String'")
-----
-
-Ranges are also supported. The range interval requires numbers and both
-from and end are inclusive. For instance to test whether a value is
-between 100 and 199:
-
-[source,java]
-----
-simple("${in.header.number} range 100..199")
-----
-
-Notice we use `..` in the range without spaces. It is based on the same
-syntax as Groovy.
-
-From *Camel 2.9* onwards the range value must be in single quotes
-
-[source,java]
-----
-simple("${in.header.number} range '100..199'")
-----
-
-=== Using Spring XML
-
-As the Spring XML does not have all the power as the Java DSL with all
-its various builder methods, you have to resort to use some other
-languages for testing with simple operators. Now you can do this with the simple
-language. In the sample below we want to test if the header is a widget
-order:
-
-[source,xml]
-----
-<from uri="seda:orders">
-   <filter>
-       <simple>${in.header.type} == 'widget'</simple>
-       <to uri="bean:orderService?method=handleWidget"/>
-   </filter>
-</from>
-----
-
-== Using and / or
-
-If you have two expressions you can combine them with the `&&` or `||`
-operator.
-
-For instance:
-
-[source,java]
------
-simple("${in.header.title} contains 'Camel' && ${in.header.type'} == 'gold'")
------
-
-And of course the `||` is also supported. The sample would be:
-
-[source,java]
------
-simple("${in.header.title} contains 'Camel' || ${in.header.type'} == 'gold'")
------
-
-*Notice:* Currently `&&` or `||` can only be used *once* in a simple
-language expression. This might change in the future. +
- So you *cannot* do:
-
-[source,java]
------
-simple("${in.header.title} contains 'Camel' && ${in.header.type'} == 'gold' && ${in.header.number} range 100..200")
------
-
-
-== Samples
-
-In the Spring XML sample below we filter based on a header value:
-
-[source,xml]
---------------------------------------------
-<from uri="seda:orders">
-   <filter>
-       <simple>${in.header.foo}</simple>
-       <to uri="mock:fooOrders"/>
-   </filter>
-</from>
---------------------------------------------
-
-The Simple language can be used for the predicate test above in the
-Message Filter pattern, where we test if the
-in message has a `foo` header (a header with the key `foo` exists). If
-the expression evaluates to *true* then the message is routed to the
-`mock:fooOrders` endpoint, otherwise the message is dropped.
-
-The same example in Java DSL:
-
-[source,java]
-----
-from("seda:orders")
-    .filter().simple("${in.header.foo}")
-        .to("seda:fooOrders");
-----
-
-You can also use the simple language for simple text concatenations such
-as:
-
-[source,java]
-----
-from("direct:hello")
-    .transform().simple("Hello ${in.header.user} how are you?")
-    .to("mock:reply");
-----
-
-Notice that we must use $\{ } placeholders in the expression now to
-allow Camel to parse it correctly.
-
-And this sample uses the date command to output current date.
-
-[source,java]
-----
-from("direct:hello")
-    .transform().simple("The today is ${date:now:yyyyMMdd} and it is a great day.")
-    .to("mock:reply");
-----
-
-And in the sample below we invoke the bean language to invoke a method
-on a bean to be included in the returned string:
-
-[source,java]
-----
-from("direct:order")
-    .transform().simple("OrderId: ${bean:orderIdGenerator}")
-    .to("mock:reply");
-----
-
-Where `orderIdGenerator` is the id of the bean registered in the
-Registry. If using Spring then it is the Spring bean
-id.
-
-If we want to declare which method to invoke on the order id generator
-bean we must prepend `.method name` such as below where we invoke the
-`generateId` method.
-
-[source,java]
-----
-from("direct:order")
-    .transform().simple("OrderId: ${bean:orderIdGenerator.generateId}")
-    .to("mock:reply");
-----
-
-We can use the `?method=methodname` option that we are familiar with the
-xref:bean-component.adoc[Bean] component itself:
-
-[source,java]
-----
-from("direct:order")
-    .transform().simple("OrderId: ${bean:orderIdGenerator?method=generateId}")
-    .to("mock:reply");
-----
-
-You can also convert the body to a given
-type, for example to ensure that it is a String you can do:
-
-[source,xml]
-----
-<transform>
-  <simple>Hello ${bodyAs(String)} how are you?</simple>
-</transform>
-----
-
-There are a few types which have a shorthand notation, so we can use
-`String` instead of `java.lang.String`. These are:
-`byte[], String, Integer, Long`. All other types must use their FQN
-name, e.g. `org.w3c.dom.Document`.
-
-It is also possible to lookup a value from a header `Map`:
-
-[source,xml]
-----
-<transform>
-  <simple>The gold value is ${header.type[gold]}</simple>
-</transform>
-----
-
-In the code above we lookup the header with name `type` and regard it as
-a `java.util.Map` and we then lookup with the key `gold` and return the
-value. If the header is not convertible to Map an exception is thrown. If the
-header with name `type` does not exist `null` is returned.
-
-You can nest functions, such as shown below:
-
-[source,xml]
-----
-<setHeader name="myHeader">
-  <simple>${properties:${header.someKey}}</simple>
-</setHeader>
-----
-
-== Referring to constants or enums
-
-Suppose you have an enum for customers
-
-And in a Content Based Router we can use
-the xref:simple-language.adoc[Simple] language to refer to this enum, to check
-the message which enum it matches.
-
-== Using new lines or tabs in XML DSLs
-
-It is easier to specify new lines or tabs in
-XML DSLs as you can escape the value now
-
-[source,xml]
-----
-<transform>
-  <simple>The following text\nis on a new line</simple>
-</transform>
-----
-
-== Leading and trailing whitespace handling
-
-The trim attribute of the expression can be
-used to control whether the leading and trailing whitespace characters
-are removed or preserved. The default value is true, which removes the
-whitespace characters.
-
-[source,xml]
-----
-<setBody>
-  <simple trim="false">You get some trailing whitespace characters.     </simple>
-</setBody>
-----
-
-== Setting result type
-
-You can now provide a result type to the xref:simple-language.adoc[Simple]
-expression, which means the result of the evaluation will be converted
-to the desired type. This is most usable to define types such as
-booleans, integers, etc.
-
-For example to set a header as a boolean type you can do:
-
-[source,java]
-----
-.setHeader("cool", simple("true", Boolean.class))
-----
-
-And in XML DSL
-
-[source,xml]
-----
-<setHeader name="cool">
-  <!-- use resultType to indicate that the type should be a java.lang.Boolean -->
-  <simple resultType="java.lang.Boolean">true</simple>
-</setHeader>
-----
-
-== Loading script from external resource
-
-You can externalize the script and have Camel load it from a resource
-such as `"classpath:"`, `"file:"`, or `"http:"`. +
- This is done using the following syntax: `"resource:scheme:location"`,
-eg to refer to a file on the classpath you can do:
-
-[source,java]
-----
-.setHeader("myHeader").simple("resource:classpath:mysimple.txt")
-----
-
-== Setting Spring beans to Exchange properties
-
-You can set a spring bean into an exchange property as shown below:
-
-[source,xml]
-----
-<bean id="myBeanId" class="my.package.MyCustomClass" />
-...
-<route>
-  ...
-  <setProperty name="monitoring.message">
-    <simple>ref:myBeanId</simple>
-  </setProperty>
-  ...
-</route>
-----
-
diff --git a/docs/user-manual/modules/ROOT/pages/tokenize-language.adoc b/docs/user-manual/modules/ROOT/pages/tokenize-language.adoc
deleted file mode 100644
index 250b9cf..0000000
--- a/docs/user-manual/modules/ROOT/pages/tokenize-language.adoc
+++ /dev/null
@@ -1,40 +0,0 @@
-[[tokenize-language]]
-= Tokenize Language
-:page-source: core/camel-base/src/main/docs/tokenize-language.adoc
-
-*Since Camel 2.0*
-
-The tokenizer language is a built-in language in camel-core, which is
-most often used only with the Splitter EIP to split
-a message using a token-based strategy. +
-The tokenizer language is intended to tokenize text documents using a
-specified delimiter pattern. It can also be used to tokenize XML
-documents with some limited capability. For a truly XML-aware
-tokenization, the use of the XMLTokenizer
-language is recommended as it offers a faster, more efficient
-tokenization specifically for XML documents. For more details
-see Splitter.
-
-== Tokenize Options
-
-// language options: START
-The Tokenize language supports 11 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| token |  | String | The (start) token to use as tokenizer, for example you can use the new line token. You can use simple language as the token to support dynamic tokens.
-| endToken |  | String | The end token to use as tokenizer if using start/end token pairs. You can use simple language as the token to support dynamic tokens.
-| inheritNamespaceTagName |  | String | To inherit namespaces from a root/parent tag name when using XML You can use simple language as the tag name to support dynamic names.
-| headerName |  | String | Name of header to tokenize instead of using the message body.
-| regex | false | Boolean | If the token is a regular expression pattern. The default value is false
-| xml | false | Boolean | Whether the input is XML messages. This option must be set to true if working with XML payloads.
-| includeTokens | false | Boolean | Whether to include the tokens in the parts when using pairs The default value is false
-| group |  | String | To group N parts together, for example to split big files into chunks of 1000 lines. You can use simple language as the group to support dynamic group sizes.
-| groupDelimiter |  | String | Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter.
-| skipFirst | false | Boolean | To skip the very first element
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
diff --git a/docs/user-manual/modules/ROOT/pages/xtokenize-language.adoc b/docs/user-manual/modules/ROOT/pages/xtokenize-language.adoc
deleted file mode 100644
index ae10996..0000000
--- a/docs/user-manual/modules/ROOT/pages/xtokenize-language.adoc
+++ /dev/null
@@ -1,32 +0,0 @@
-[[xtokenize-language]]
-= XML Tokenize Language
-:page-source: core/camel-jaxp/src/main/docs/xtokenize-language.adoc
-
-*Since Camel 2.14*
-
-The xml tokenizer language is a built-in language in camel-core, which
-is a truly XML-aware tokenizer that can be used with the Splitter as the
-conventional Tokenizer to efficiently and
-effectively tokenize XML documents. XMLTokenizer is capable of not only
-recognizing XML namespaces and hierarchical structures of the document
-but also more efficiently tokenizing XML documents than the conventional
-Tokenizer. 
-
-For more details see Splitter.
-
-== XML Tokenizer Options
-
-// language options: START
-The XML Tokenize language supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,1m,1m,6",options="header"]
-|===
-| Name | Default | Java Type | Description
-| headerName |  | String | Name of header to tokenize instead of using the message body.
-| mode |  | String | The extraction mode. The available extraction modes are: i - injecting the contextual namespace bindings into the extracted token (default) w - wrapping the extracted token in its ancestor context u - unwrapping the extracted token to its child content t - extracting the text content of the specified element
-| group |  | Integer | To group N parts together
-| trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
-|===
-// language options: END
\ No newline at end of file
diff --git a/docs/yarn.lock b/docs/yarn.lock
index 529f5ed..1868a9b 100644
--- a/docs/yarn.lock
+++ b/docs/yarn.lock
@@ -89,6 +89,11 @@
   resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.3.tgz#f060bf6eaafae4d56a7dac618980838b0696e2ab"
   integrity sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg==
 
+"@types/minimatch@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+  integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
+
 abbrev@1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@@ -202,6 +207,11 @@ arr-union@^3.1.0:
   resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
   integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
 
+array-differ@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
+  integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==
+
 array-each@^1.0.0, array-each@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
@@ -243,6 +253,11 @@ array-union@^1.0.1:
   dependencies:
     array-uniq "^1.0.1"
 
+array-union@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+  integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
 array-uniq@^1.0.1:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
@@ -258,6 +273,11 @@ arrify@^1.0.1:
   resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
   integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
 
+arrify@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
+  integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+
 asciidoctor.js@1.5.9:
   version "1.5.9"
   resolved "https://registry.yarnpkg.com/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz#28f8e8ee134b82627f0240e9b6a201b3d15d9524"
@@ -1219,6 +1239,15 @@ gulp-cli@^2.0.0, gulp-cli@^2.0.1:
     v8flags "^3.0.1"
     yargs "^7.1.0"
 
+gulp-filter@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/gulp-filter/-/gulp-filter-6.0.0.tgz#9d69a408f1a9f60534264fb14464841f1b1746c2"
+  integrity sha512-veQFW93kf6jBdWdF/RxMEIlDK2mkjHyPftM381DID2C9ImTVngwYpyyThxm4/EpgcNOT37BLefzMOjEKbyYg0Q==
+  dependencies:
+    multimatch "^4.0.0"
+    plugin-error "^1.0.1"
+    streamfilter "^3.0.0"
+
 gulp-inject@^5.0.2:
   version "5.0.2"
   resolved "https://registry.yarnpkg.com/gulp-inject/-/gulp-inject-5.0.2.tgz#0942a401ae2b1969c3a52b90a13635d28e79f20b"
@@ -1925,6 +1954,17 @@ multi-progress@^2.0.0:
   dependencies:
     progress "^1.1.8"
 
+multimatch@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3"
+  integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==
+  dependencies:
+    "@types/minimatch" "^3.0.3"
+    array-differ "^3.0.0"
+    array-union "^2.1.0"
+    arrify "^2.0.1"
+    minimatch "^3.0.4"
+
 mute-stdout@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331"
@@ -2408,6 +2448,15 @@ readable-stream@^3.0.0:
     string_decoder "^1.1.1"
     util-deprecate "^1.0.1"
 
+readable-stream@^3.0.6:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+  integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+  dependencies:
+    inherits "^2.0.3"
+    string_decoder "^1.1.1"
+    util-deprecate "^1.0.1"
+
 readdirp@^2.0.0:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
@@ -2789,6 +2838,13 @@ stream-to-array@^2.3.0:
   dependencies:
     any-promise "^1.1.0"
 
+streamfilter@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/streamfilter/-/streamfilter-3.0.0.tgz#8c61b08179a6c336c6efccc5df30861b7a9675e7"
+  integrity sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA==
+  dependencies:
+    readable-stream "^3.0.6"
+
 string-width@^1.0.1, string-width@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java
index 0a2834e..5e930f7 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateDocComponentListMojo.java
@@ -85,10 +85,22 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
     protected File othersDir;
 
     /**
-     * The website doc for components
+     * The website index page for components
      */
     @Parameter(defaultValue = "${project.directory}/../../../docs/components/modules/ROOT/pages/index.adoc")
-    protected File websiteDocFile;
+    protected File websiteComponentsIndex;
+
+    /**
+     * The website index page for data formats
+     */
+    @Parameter(defaultValue = "${project.directory}/../../../docs/components/modules/dataformats/pages/index.adoc")
+    protected File websiteDataFormatsIndex;
+
+    /**
+     * The website index page for expression languages
+     */
+    @Parameter(defaultValue = "${project.directory}/../../../docs/components/modules/languages/pages/index.adoc")
+    protected File websiteLanguagesIndex;
 
     /**
      * Maven ProjectHelper.
@@ -160,7 +172,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
                     .count();
 
             // update doc in the website dir
-            File file = websiteDocFile;
+            File file = websiteComponentsIndex;
             boolean exists = file.exists();
             String changed = templateComponents(models, count, deprecated);
             boolean updated = updateComponents(file, changed);
@@ -208,7 +220,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
                     .count();
 
             // update doc in the website dir
-            File file = websiteDocFile;
+            File file = websiteComponentsIndex;
             boolean exists = file.exists();
             String changed = templateOthers(others, count, deprecated);
             boolean updated = updateOthers(file, changed);
@@ -263,7 +275,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
                     .count();
 
             // update doc in the website dir
-            File file = websiteDocFile;
+            File file = websiteDataFormatsIndex;
             boolean exists = file.exists();
             String changed = templateDataFormats(models, count, deprecated);
             boolean updated = updateDataFormats(file, changed);
@@ -312,7 +324,7 @@ public class UpdateDocComponentListMojo extends AbstractMojo {
                     .count();
 
             // update doc in the website dir
-            File file = websiteDocFile;
+            File file = websiteLanguagesIndex;
             boolean exists = file.exists();
             String changed = templateLanguages(models, count, deprecated);
             boolean updated = updateLanguages(file, changed);
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
index e0bec70..6ddc351 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
@@ -41,10 +41,12 @@ import org.apache.camel.maven.packaging.model.LanguageModel;
 import org.apache.camel.maven.packaging.model.LanguageOptionModel;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
 import org.mvel2.templates.TemplateRuntime;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
@@ -73,15 +75,27 @@ public class UpdateReadmeMojo extends AbstractMojo {
     protected File buildDir;
 
     /**
-     * The documentation directory
+     * The component documentation directory
      */
-    @Parameter(defaultValue = "${basedir}/src/main/docs")
-    protected File docDir;
+    @Parameter(defaultValue = "${project.basedir}/src/main/docs")
+    protected File componentDocDir;
 
     /**
-     * The documentation EIP directory
+     * The dataformat documentation directory
      */
-    @Parameter(defaultValue = "${basedir}/src/main/docs/eips")
+    @Parameter(defaultValue = "${project.basedir}/src/main/docs")
+    protected File dataformatDocDir;
+
+    /**
+     * The language documentation directory
+     */
+    @Parameter(defaultValue = "${project.basedir}/src/main/docs/modules/languages/pages")
+    protected File languageDocDir;
+
+    /**
+     * The EIP documentation directory
+     */
+    @Parameter(defaultValue = "${project.basedir}/src/main/docs/modules/eips/pages")
     protected File eipDocDir;
 
     /**
@@ -91,11 +105,29 @@ public class UpdateReadmeMojo extends AbstractMojo {
     protected Boolean failFast;
 
     /**
+     * Maven ProjectHelper.
+     */
+    @Component
+    protected MavenProjectHelper projectHelper;
+
+    /**
      * build context to check changed files and mark them for refresh (used for
      * m2e compatibility)
      */
     @Component
-    private BuildContext buildContext;
+    protected BuildContext buildContext;
+
+    public void execute(MavenProject project, MavenProjectHelper projectHelper, BuildContext buildContext) throws MojoFailureException, MojoExecutionException {
+        this.project = project;
+        this.projectHelper = projectHelper;
+        this.buildContext = buildContext;
+        buildDir = new File(project.getBuild().getDirectory());
+        componentDocDir = new File(project.getBasedir(), "src/main/docs");
+        dataformatDocDir = new File(project.getBasedir(), "src/main/docs");
+        languageDocDir = new File(project.getBasedir(), "/src/main/docs/modules/languages/pages");
+        eipDocDir = new File(project.getBasedir(), "src/main/docs/modules/eips/pages");
+        execute();
+    }
 
     @Override
     public void execute() throws MojoExecutionException {
@@ -121,7 +153,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
                     // special for some components
                     componentName = asComponentName(componentName);
 
-                    File file = new File(docDir, componentName + "-component.adoc");
+                    File file = new File(componentDocDir, componentName + "-component.adoc");
 
                     ComponentModel model = generateComponentModel(json);
                     String title = asComponentTitle(model.getScheme(), model.getTitle());
@@ -191,7 +223,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
                     // special for some data formats
                     dataFormatName = asDataFormatName(dataFormatName);
 
-                    File file = new File(docDir, dataFormatName + "-dataformat.adoc");
+                    File file = new File(dataformatDocDir, dataFormatName + "-dataformat.adoc");
 
                     DataFormatModel model = generateDataFormatModel(dataFormatName, json);
                     String title = asDataFormatTitle(model.getName(), model.getTitle());
@@ -249,7 +281,7 @@ public class UpdateReadmeMojo extends AbstractMojo {
             for (String languageName : languageNames) {
                 String json = loadJsonFrom(jsonFiles, "language", languageName);
                 if (json != null) {
-                    File file = new File(docDir, languageName + "-language.adoc");
+                    File file = new File(languageDocDir, languageName + "-language.adoc");
 
                     LanguageModel model = generateLanguageModel(json);
 
@@ -284,9 +316,9 @@ public class UpdateReadmeMojo extends AbstractMojo {
     }
 
     private void executeEips() throws MojoExecutionException {
-        // only run if in camel-core
+        // only run if in camel-core-engine
         String currentDir = Paths.get(".").normalize().toAbsolutePath().toString();
-        if (!currentDir.endsWith("camel-core")) {
+        if (!currentDir.endsWith("camel-core-engine")) {
             return;
         }
 
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/website-dataformats-list.mvel b/tooling/maven/camel-package-maven-plugin/src/main/resources/website-dataformats-list.mvel
index 4922ded..a073778 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/resources/website-dataformats-list.mvel
+++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/website-dataformats-list.mvel
@@ -6,7 +6,7 @@ Number of Data Formats: @{dataformats.size} in @{numberOfArtifacts} JAR artifact
 |===
 | Data Format | Since | Description
 @foreach{row : dataformats}
-| xref:${row.name}-dataformat.adoc[@{row.title}] (@{row.artifactId}) | @{row.firstVersionShort} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)}
+| xref:dataformats:${row.name}-dataformat.adoc[@{row.title}] (@{row.artifactId}) | @{row.firstVersionShort} | @if{row.deprecated}*deprecated* @end{}@{util.escape(row.description)}
 @end{}|===
 
 @end{}
\ No newline at end of file
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/website-languages-list.mvel b/tooling/maven/camel-package-maven-plugin/src/main/resources/website-languages-list.mvel
index 10b6d7a..9662f8d 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/resources/website-languages-list.mvel
+++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/website-languages-list.mvel
@@ -6,7 +6,7 @@ Number of Languages: @{languages.size} in @{numberOfArtifacts} JAR artifacts (@{
 |===
 | Language | Since | Description
 @foreach{row : languages}
-| xref:${row.name}-language.adoc[@{row.title}] (@{row.artifactId}) | @{row.firstVersionShort} | @if{row.deprecated == "true"}*deprecated* @end{}@{util.escape(row.description)}
+| xref:languages:${row.name}-language.adoc[@{row.title}] (@{row.artifactId}) | @{row.firstVersionShort} | @if{row.deprecated}*deprecated* @end{}@{util.escape(row.description)}
 @end{}|===
 
 @end{}
\ No newline at end of file