You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/08/18 09:28:05 UTC

[1/2] camel git commit: CAMEL-9541: Keep user guide TOC up to date with components from the Camel Catalog.

Repository: camel
Updated Branches:
  refs/heads/master 9bbdb5b50 -> 38941053b


CAMEL-9541: Keep user guide TOC up to date with components from the Camel Catalog.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3791e125
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3791e125
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3791e125

Branch: refs/heads/master
Commit: 3791e1250a8e0d392c945330faf6b40dd75adbf7
Parents: 9bbdb5b
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Aug 18 11:12:25 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Aug 18 11:12:25 2016 +0200

----------------------------------------------------------------------
 docs/user-manual/en/SUMMARY.md                  | 456 +++++++++----------
 platforms/catalog/pom.xml                       |   2 +
 .../maven/packaging/PrepareUserGuideMojo.java   | 261 +++++++++++
 3 files changed, 481 insertions(+), 238 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/3791e125/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 687f548..f595706 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -82,247 +82,227 @@
         * Using Camel questions
             * [How do I configure endpoints](how-do-i-configure-endpoints.adoc)
 
+
+
+<!-- core components: START -->
 * Core Components
-    * [Bean](bean-component.adoc)
-    * [Binding](binding-component.adoc)
-    * [Browse](browse-component.adoc)
-    * [Class](class-component.adoc)
-    * [Controlbus](controlbus-component.adoc)
-    * [Dataformat](dataformat-component.adoc)
-    * [Dataset](dataset-component.adoc)
-    * [Direct](direct-component.adoc)
-    * [Direct-vm](direct-vm-component.adoc)
-    * [File](file-component.adoc)
-    * [Language](language-component.adoc)
-    * [Log](log-component.adoc)
-    * [Mock](mock-component.adoc)
-    * [Properties](properties-component.adoc)
-    * [Ref](ref-component.adoc)
-    * [Rest](rest-component.adoc)
-    * [Rest API](rest-api-component.adoc)
-    * [Scheduler](scheduler-component.adoc)
-    * [Seda](seda-component.adoc)
-    * [Stub](stub-component.adoc)
-    * [Test](test-component.adoc)
-    * [Timer](timer-component.adoc)
-    * [Validator](validator-component.adoc)
-    * [VM](vm-component.adoc)
-    * [Xslt](xslt-component.adoc)
+	* [Bean](bean-component.adoc)
+	* [Binding](binding-component.adoc)
+	* [Browse](browse-component.adoc)
+	* [Class](class-component.adoc)
+	* [Control Bus](controlbus-component.adoc)
+	* [Data Format](dataformat-component.adoc)
+	* [Dataset](dataset-component.adoc)
+	* [Direct](direct-component.adoc)
+	* [Direct VM](direct-vm-component.adoc)
+	* [File](file-component.adoc)
+	* [Language](language-component.adoc)
+	* [Log](log-component.adoc)
+	* [Mock](mock-component.adoc)
+	* [Properties](properties-component.adoc)
+	* [REST](rest-component.adoc)
+	* [REST API](rest-api-component.adoc)
+	* [Ref](ref-component.adoc)
+	* [SEDA](seda-component.adoc)
+	* [Scheduler](scheduler-component.adoc)
+	* [Stub](stub-component.adoc)
+	* [Test](test-component.adoc)
+	* [Timer](timer-component.adoc)
+	* [VM](vm-component.adoc)
+	* [Validator](validator-component.adoc)
+	* [XSLT](xslt-component.adoc)
+<!-- core components: END -->
+
+
+
+
+
 
+<!-- components: START -->
 * Components
-    * [Async Http Client (AHC)](ahc-component.adoc)
-    * [AHC Websocket (AHC-WS)](ahc-ws-component.adoc)
-    * [Amqp](amqp-component.adoc)
-    * [Apns](apns-component.adoc)
-    * [Atmosphere Websocket](atmosphere-websocket-component.adoc)
-    * [Atmos](atmos-component.adoc)
-    * [Atom](atom-component.adoc)
-    * [Avro](avro-component.adoc)
-    * [AWS](aws-component.adoc)
-        * [AWS CloudWatch](aws-cw-component.adoc)
-        * [AWS DynamoDB](aws-ddb-component.adoc)
-        * [AWS DynamoDB Streams](aws-ddbstream-component.adoc)
-        * [AWS EC2](aws-ec2-component.adoc)
-        * [AWS Kinesis](aws-kinesis-component.adoc)
-        * [AWS S3](aws-s3-component.adoc)
-        * [AWS SDB](aws-sdb-component.adoc)
-        * [AWS SES](aws-ses-component.adoc)
-        * [AWS SNS](aws-sns-component.adoc)
-        * [AWS SQS](aws-sqs-component.adoc)
-        * [AWS SWF](aws-swf-component.adoc)
-    * [Bam](bam.adoc)
-    * [Barcode](barcode-data-format-component.adoc)
-    * [Base64](base64-component.adoc)
-    * [Beanstalk](beanstalk-component.adoc)
-    * [Bean-validator](bean-validator-component.adoc)
-    * [Bindy](bindy-component.adoc)
-    * [Blueprint](blueprint-testing-component.adoc)
-    * [Boon](boon-component.adoc)
-    * [Box](box-component.adoc)
-    * [Braintree](braintree-component.adoc)
-    * [Cache](cache-component.adoc)
-    * [Cassandraql](cql-component.adoc)
-    * [Castor](castor-component.adoc)
-    * [CDI](cdi.adoc)
-    * [Chunk](chunk-component.adoc)
-    * [Cmis](cmis-component.adoc)
-    * [CM SMS](cm-sms-component.adoc)
-    * [CoAP](coap-component.adoc)
-    * [Cometd](cometd-component.adoc)
-    * [Context](context-component.adoc)
-    * [Couchdb](couchdb-component.adoc)
-    * [Crypto](crypto-component.adoc)
-        * [Crypto Digital Signatures](crypto-digital-signatures.adoc)
-    * [CSV](csv.adoc)
-    * [CXF](cxf-component.adoc)
-        * [CXFRS](cxfrs-component.adoc)
-        * [CXF Transport](cxf-transport.adoc)
-    * [Disruptor](disruptor-component.adoc)
-    * [DNS](dns-component.adoc)
-    * [Docker](docker-component.adoc)
-    * [Dozer](dozer-component.adoc)
-    * [Dropbox](dropbox-component.adoc)
-    * [Eclipse](eclipse.adoc)
-    * [Ehcache](ehcache-component.adoc)
-    * [EJB](ejb-component.adoc)
-    * [ElasticSearch](elasticsearch-component.adoc)
-    * [Elsql](elsql-component.adoc)
-    * [Eventadmin](eventadmin-component.adoc)
-    * [Exec](exec-component.adoc)
-    * [Facebook](facebook-component.adoc)
-    * [Flatpack](flatpack-component.adoc)
-    * [FOP](fop-component.adoc)
-    * [Freemarker](freemarker-component.adoc)
-    * [FTP](ftp-component.adoc)
-    * [Ganglia](ganglia-component.adoc)
-    * [Geocoder](geocoder-component.adoc)
-    * [Git](git-component.adoc)
-    * [Github](github-component.adoc)
-    * [Google Calendar](google-calendar-component.adoc)
-    * [Google Drive](google-drive-component.adoc)
-    * [Google Mail](google-mail-component.adoc)
-    * [Gora](gora-component.adoc)
-    * [Grape](grape-component.adoc)
-    * [Groovy](groovy.adoc)
-        * [Groovy DSL](groovy-dsl.adoc)
-    * [Gson](gson.adoc)
-    * [Guava Eventbus](guava-eventbus-component.adoc)
-    * [Guice](guice.adoc)
-    * [Hawtdb](hawtdb.adoc)
-    * [Hazelcast](hazelcast-component.adoc)
-    * [Hbase](hbase-component.adoc)
-    * [HDFS](hdfs-component.adoc)
-    * [HDFS2](hdfs2-component.adoc)
-    * [Hessian](hessian.adoc)
-    * [Hipchat](hipchat-component.adoc)
-    * [HL7](hl7.adoc)
-    * [Http](http-component.adoc)
-    * [Http4](http4-component.adoc)
-    * [Ibatis](ibatis-component.adoc)
-    * [Infinispan](infinispan-component.adoc)
-    * [IRC](irc-component.adoc)
-    * [Ironmq](ironmq-component.adoc)
-    * [Jackson](jackson.adoc)
-    * [Jasypt](jasypt.adoc)
-    * [Javaspace](javaspace-component.adoc)
-    * [JMS](jms-component.adoc)
-    * [JMX](jmx-component.adoc)
-    * [JSON](json.adoc)
-    * [Jbpm](jbpm-component.adoc)
-    * [Jcache](jcache-component.adoc)
-    * [Jclouds](jclouds-component.adoc)
-    * [Jcr](jcr-component.adoc)
-    * [JDBC](jdbc-component.adoc)
-    * [Jetty](jetty-component.adoc)
-    * [Jgroups](jgroups-component.adoc)
-    * [Jing](jing-component.adoc)
-    * [JIRA](jira-component.adoc)
-    * [Jolt](jolt-component.adoc)
-    * [Jpa](jpa-component.adoc)
-    * [JT400](jt400-component.adoc)
-    * [Kafka](kafka-component.adoc)
-    * [Kestrel](kestrel-component.adoc)
-    * [Krati](krati-component.adoc)
-    * [Kubernetes](kubernetes-component.adoc)
-    * [Kura](kura-component.adoc)
-    * [LDAP](ldap-component.adoc)
-    * [LevelDB](leveldb.adoc)
-    * [Linkedin](linkedin-component.adoc)
-    * [Lucene](lucene-component.adoc)
-    * [Lumberjack](lumberjack-component.adoc)
-    * [Mail](mail.adoc)
-        * [IMAP](imap-component.adoc)
-        * [IMAPs](imaps-component.adoc)
-        * [POP3](pop3-component.adoc)
-        * [POP3s](pop3s-component.adoc)
-        * [SMTP](smtp-component.adoc)
-        * [SMTPs](smtps-component.adoc)
-    * [Metrics](metrics.adoc)
-    * [Mina](mina-component.adoc)
-    * [Mina2](mina2-component.adoc)
-    * [MLLP](mllp.adoc)
-    * [MongoDB](mongodb-component.adoc)
-    * [MongoDB-GridFS](gridfs-component.adoc)
-    * [MQTT](mqtt-component.adoc)
-    * [Msv](msv-component.adoc)
-    * [Mustache](mustache-component.adoc)
-    * [Mvel](mvel-component.adoc)
-    * [Mybatis](mybatis-component.adoc)
-    * [Nagios](nagios-component.adoc)
-    * [Netty](netty-component.adoc)
-    * [Netty4](netty4-component.adoc)
-    * [Netty HTTP](netty-http-component.adoc)
-    * [Netty4 HTTP](netty4-http-component.adoc)
-    * [NATS](nats-component.adoc)
-    * [Olingo2](olingo2-component.adoc)
-    * [Openshift](openshift-component.adoc)
-    * [Optaplanner](optaplanner-component.adoc)
-    * [Paho](paho-component.adoc)
-    * [Paxlogging](paxlogging-component.adoc)
-    * [PDF](pdf-component.adoc)
-    * [PGEvent](pgevent-component.adoc)
-    * [Printer](lpr-component.adoc)
-    * [Quartz](quartz-component.adoc)
-    * [Quartz2](quartz2-component.adoc)
-    * [Quickfix](quickfix-component.adoc)
-    * [RabbitMQ](rabbitmq-component.adoc)
-    * [Restlet](restlet-component.adoc)
-    * [RMI](rmi-component.adoc)
-    * [Routebox](routebox-component.adoc)
-    * [RSS](rss-component.adoc)
-    * [Salesforce](salesforce-component.adoc)
-    * [SAP NetWeaver](sap-netweaver-component.adoc)
-    * [Saxon](xquery.adoc)
-    * [Scp](scp-component.adoc)
-    * [Schematron](schematron-component.adoc)
-    * [SCR](camel-and-scr.adoc)
-    * [Script](script.adoc)
-    * [Servicenow](servicenow-component.adoc)
-    * [Servlet](servlet-component.adoc)
-    * [Servlet Listener](servletlistener.adoc)
-    * [Shiro](shiro-security.adoc)
-    * [SIP](sip-component.adoc)
-    * [SJMS](sjms-component.adoc)
-    * [SJMS Batch](sjms-batch-component.adoc)
-    * [Slack](slack-component.adoc)
-    * [SMPP](smpp-component.adoc)
-    * [SNMP](snmp-component.adoc)
-    * [Solr](solr-component.adoc)
-    * [Spark](spark-component.adoc)
-    * [Spark-Rest](spark-rest-component.adoc)
-    * [Splunk](splunk-component.adoc)
-    * [Spring](spring.adoc)
-    * [Spring-Batch](spring-batch-component.adoc)
-    * [Spring-Boot](spring-boot.adoc)
-    * [Spring-Event](spring-event-component.adoc)
-    * [Spring-Integration](spring-integration-component.adoc)
-    * [Spring-Javaconfig](spring-java-config.adoc)
-    * [Spring-Ldap](spring-ldap-component.adoc)
-    * [Spring-Redis](spring-redis-component.adoc)
-    * [Spring-Security](spring-security.adoc)
-    * [Spring-Web-Services](spring-ws-component.adoc)
-    * [SQL](sql-component.adoc)
-        * [SQL-Stored](sql-stored-component.adoc)
-    * [SSH](ssh-component.adoc)
-    * [StAX](stax-component.adoc)
-    * [Stomp](stomp-component.adoc)
-    * [Stream](stream-component.adoc)
-    * [Stringtemplate](string-template.adoc)
-    * [Swagger](swagger.adoc)
-    * [Swagger Java](swagger-java.adoc)
-    * [Telegram](telegram-component.adoc)
-    * [Twitter](twitter-component.adoc)
-    * [Undertow](undertow-component.adoc)
-    * [URLRewrite](urlrewrite.adoc)
-    * [Velocity](velocity-component.adoc)
-    * [Vertx](vertx-component.adoc)
-    * [Weather](weather-component.adoc)
-    * [Websocket](websocket-component.adoc)
-    * [XML Security](xmlsecurity-component.adoc)
-    * [XMPP](xmpp-component.adoc)
-    * [Yammer](yammer-component.adoc)
-    * [Zipkin](zipkin.adoc)
-    * [ZooKeeper](zookeeper-component.adoc)
+	* [AHC](ahc-component.adoc)
+	* [AHC Websocket](ahc-ws-component.adoc)
+	* [AMQP](amqp-component.adoc)
+	* [APNS](apns-component.adoc)
+	* [AWS CloudWatch](aws-cw-component.adoc)
+	* [AWS DynamoDB](aws-ddb-component.adoc)
+	* [AWS DynamoDB Streams](aws-ddbstream-component.adoc)
+	* [AWS EC2](aws-ec2-component.adoc)
+	* [AWS Kinesis](aws-kinesis-component.adoc)
+	* [AWS S3 Storage Service](aws-s3-component.adoc)
+	* [AWS Simple Email Service](aws-ses-component.adoc)
+	* [AWS Simple Notification System](aws-sns-component.adoc)
+	* [AWS Simple Queue Service](aws-sqs-component.adoc)
+	* [AWS Simple Workflow](aws-swf-component.adoc)
+	* [AWS SimpleDB](aws-sdb-component.adoc)
+	* [Apache Flink](flink-component.adoc)
+	* [Apache Spark](spark-component.adoc)
+	* [Atmos](atmos-component.adoc)
+	* [Atmosphere Websocket](atmosphere-websocket-component.adoc)
+	* [Atom](atom-component.adoc)
+	* [Avro](avro-component.adoc)
+	* [Bean Validator](bean-validator-component.adoc)
+	* [Beanstalk](beanstalk-component.adoc)
+	* [Box](box-component.adoc)
+	* [Braintree](braintree-component.adoc)
+	* [CM SMS Gateway](cm-sms-component.adoc)
+	* [CMIS](cmis-component.adoc)
+	* [CXF](cxf-component.adoc)
+	* [CXF-RS](cxfrs-component.adoc)
+	* [Camel Context](context-component.adoc)
+	* [Cassandra CQL](cql-component.adoc)
+	* [Chronicle Engine](chronicle-engine-component.adoc)
+	* [Chunk](chunk-component.adoc)
+	* [CoAP](coap-component.adoc)
+	* [CometD](cometd-component.adoc)
+	* [Consul](consul-component.adoc)
+	* [CouchDB](couchdb-component.adoc)
+	* [Crypto (JCE)](crypto-component.adoc)
+	* [DNS](dns-component.adoc)
+	* [Disruptor](disruptor-component.adoc)
+	* [Docker](docker-component.adoc)
+	* [Dozer](dozer-component.adoc)
+	* [Dropbox](dropbox-component.adoc)
+	* [EHCache](cache-component.adoc)
+	* [EJB](ejb-component.adoc)
+	* [Ehcache](ehcache-component.adoc)
+	* [ElSQL](elsql-component.adoc)
+	* [Elasticsearch](elasticsearch-component.adoc)
+	* [Exec](exec-component.adoc)
+	* [FOP](fop-component.adoc)
+	* [FTP](ftp-component.adoc)
+	* [FTPS](ftps-component.adoc)
+	* [Facebook](facebook-component.adoc)
+	* [Flatpack](flatpack-component.adoc)
+	* [Freemarker](freemarker-component.adoc)
+	* [Ganglia](ganglia-component.adoc)
+	* [Geocoder](geocoder-component.adoc)
+	* [Git](git-component.adoc)
+	* [GitHub](github-component.adoc)
+	* [Google Calendar](google-calendar-component.adoc)
+	* [Google Drive](google-drive-component.adoc)
+	* [Google Mail](google-mail-component.adoc)
+	* [Gora](gora-component.adoc)
+	* [Grape](grape-component.adoc)
+	* [Guava EventBus](guava-eventbus-component.adoc)
+	* [HBase](hbase-component.adoc)
+	* [HDFS](hdfs-component.adoc)
+	* [HDFS2](hdfs2-component.adoc)
+	* [HTTP](http-component.adoc)
+	* [HTTP4](http4-component.adoc)
+	* [Hazelcast](hazelcast-component.adoc)
+	* [Hipchat](hipchat-component.adoc)
+	* [IMAP](imap-component.adoc)
+	* [IRC](irc-component.adoc)
+	* [Infinispan](infinispan-component.adoc)
+	* [InfluxDB](influxdb-component.adoc)
+	* [JBPM](jbpm-component.adoc)
+	* [JCR](jcr-component.adoc)
+	* [JCache](jcache-component.adoc)
+	* [JClouds](jclouds-component.adoc)
+	* [JDBC](jdbc-component.adoc)
+	* [JGroups](jgroups-component.adoc)
+	* [JIRA](jira-component.adoc)
+	* [JMS](jms-component.adoc)
+	* [JMX](jmx-component.adoc)
+	* [JOLT](jolt-component.adoc)
+	* [JPA](jpa-component.adoc)
+	* [JT400](jt400-component.adoc)
+	* [JavaSpace](javaspace-component.adoc)
+	* [Jetty 9](jetty-component.adoc)
+	* [Jetty Websocket](websocket-component.adoc)
+	* [Jing](jing-component.adoc)
+	* [Kafka](kafka-component.adoc)
+	* [Kestrel](kestrel-component.adoc)
+	* [Krati](krati-component.adoc)
+	* [Kubernetes](kubernetes-component.adoc)
+	* [LDAP](ldap-component.adoc)
+	* [Linkedin](linkedin-component.adoc)
+	* [Lucene](lucene-component.adoc)
+	* [Lumberjack](lumberjack-component.adoc)
+	* [MQTT](mqtt-component.adoc)
+	* [MSV](msv-component.adoc)
+	* [MVEL](mvel-component.adoc)
+	* [Metrics](metrics-component.adoc)
+	* [Mina](mina-component.adoc)
+	* [Mina2](mina2-component.adoc)
+	* [MongoDB](mongodb-component.adoc)
+	* [MongoDBGridFS](gridfs-component.adoc)
+	* [Mustache](mustache-component.adoc)
+	* [MyBatis](mybatis-component.adoc)
+	* [Nagios](nagios-component.adoc)
+	* [Nats](nats-component.adoc)
+	* [Netty](netty-component.adoc)
+	* [Netty HTTP](netty-http-component.adoc)
+	* [Netty4](netty4-component.adoc)
+	* [Netty4 HTTP](netty4-http-component.adoc)
+	* [OSGi EventAdmin](eventadmin-component.adoc)
+	* [OSGi PAX Logging](paxlogging-component.adoc)
+	* [OpenShift](openshift-component.adoc)
+	* [OptaPlanner](optaplanner-component.adoc)
+	* [PDF](pdf-component.adoc)
+	* [Paho](paho-component.adoc)
+	* [PostgresSQL Event](pgevent-component.adoc)
+	* [Printer](lpr-component.adoc)
+	* [Quartz](quartz-component.adoc)
+	* [Quartz2](quartz2-component.adoc)
+	* [QuickFix](quickfix-component.adoc)
+	* [RMI](rmi-component.adoc)
+	* [RSS](rss-component.adoc)
+	* [RabbitMQ](rabbitmq-component.adoc)
+	* [Restlet](restlet-component.adoc)
+	* [RouteBox](routebox-component.adoc)
+	* [SAP NetWeaver](sap-netweaver-component.adoc)
+	* [SCP](scp-component.adoc)
+	* [SFTP](sftp-component.adoc)
+	* [SIP](sip-component.adoc)
+	* [SMPP](smpp-component.adoc)
+	* [SNMP](snmp-component.adoc)
+	* [SQL](sql-component.adoc)
+	* [SQL StoredProcedure](sql-stored-component.adoc)
+	* [SSH](ssh-component.adoc)
+	* [Salesforce](salesforce-component.adoc)
+	* [Schematron](schematron-component.adoc)
+	* [ServiceNow](servicenow-component.adoc)
+	* [Servlet](servlet-component.adoc)
+	* [Simple JMS](sjms-component.adoc)
+	* [Simple JMS Batch](sjms-batch-component.adoc)
+	* [Slack](slack-component.adoc)
+	* [Solr](solr-component.adoc)
+	* [Spark Rest](spark-rest-component.adoc)
+	* [Splunk](splunk-component.adoc)
+	* [Spring Batch](spring-batch-component.adoc)
+	* [Spring Event](spring-event-component.adoc)
+	* [Spring Integration](spring-integration-component.adoc)
+	* [Spring LDAP](spring-ldap-component.adoc)
+	* [Spring Redis](spring-redis-component.adoc)
+	* [Spring WebService](spring-ws-component.adoc)
+	* [StAX](stax-component.adoc)
+	* [Stomp](stomp-component.adoc)
+	* [Stream](stream-component.adoc)
+	* [String Template](string-template-component.adoc)
+	* [Telegram](telegram-component.adoc)
+	* [Twitter](twitter-component.adoc)
+	* [Undertow](undertow-component.adoc)
+	* [Velocity](velocity-component.adoc)
+	* [Vert.x](vertx-component.adoc)
+	* [Weather](weather-component.adoc)
+	* [XML RPC](xmlrpc-component.adoc)
+	* [XML Security](xmlsecurity-component.adoc)
+	* [XMPP](xmpp-component.adoc)
+	* [XQuery](xquery-component.adoc)
+	* [Yammer](yammer-component.adoc)
+	* [ZooKeeper](zookeeper-component.adoc)
+	* [etcd](etcd-component.adoc)
+	* [iBatis](ibatis-component.adoc)
+	* [ironmq](ironmq-component.adoc)
+	* [mllp](mllp-component.adoc)
+<!-- components: END -->
+
+
+
+
+
 
 * [Expression Languages](languages.adoc)
     * [Bean Language](bean-language.adoc)

http://git-wip-us.apache.org/repos/asf/camel/blob/3791e125/platforms/catalog/pom.xml
----------------------------------------------------------------------
diff --git a/platforms/catalog/pom.xml b/platforms/catalog/pom.xml
index e76cdcb..413cf3b 100644
--- a/platforms/catalog/pom.xml
+++ b/platforms/catalog/pom.xml
@@ -90,8 +90,10 @@
         <version>${project.version}</version>
         <executions>
           <execution>
+            <!-- prepare the catalog before the user guide -->
             <goals>
               <goal>prepare-catalog</goal>
+              <goal>prepare-user-guide</goal>
             </goals>
             <phase>process-resources</phase>
           </execution>

http://git-wip-us.apache.org/repos/asf/camel/blob/3791e125/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
new file mode 100644
index 0000000..1b27084
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
@@ -0,0 +1,261 @@
+/**
+ * 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.maven.packaging;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import edu.emory.mathcs.backport.java.util.Collections;
+import org.apache.camel.maven.packaging.model.ComponentModel;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+
+import static org.apache.camel.maven.packaging.PackageHelper.loadText;
+import static org.apache.camel.maven.packaging.PackageHelper.writeText;
+
+/**
+ * Prepares the user guide to keep the table of content up to date with the components, data formats, and languages.
+ *
+ * @goal prepare-user-guide
+ */
+public class PrepareUserGuideMojo extends AbstractMojo {
+
+    /**
+     * The maven project.
+     *
+     * @parameter property="project"
+     * @required
+     * @readonly
+     */
+    protected MavenProject project;
+
+    /**
+     * The directory for components catalog
+     *
+     * @parameter default-value="${project.build.directory}/classes/org/apache/camel/catalog/components"
+     */
+    protected File componentsDir;
+
+    /**
+     * The directory for the user guide
+     *
+     * @parameter default-value="${project.directory}/../../../docs/user-manual/en"
+     */
+    protected File userGuideDir;
+
+    /**
+     * Maven ProjectHelper.
+     *
+     * @component
+     * @readonly
+     */
+    private MavenProjectHelper projectHelper;
+
+    /**
+     * Execute goal.
+     *
+     * @throws MojoExecutionException execution of the main class or one of the
+     *                                                        threads it generated failed.
+     * @throws MojoFailureException   something bad happened...
+     */
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        executeComponents();
+    }
+
+    protected void executeComponents() throws MojoExecutionException, MojoFailureException {
+        Set<File> componentFiles = new TreeSet<File>();
+
+        if (componentsDir != null && componentsDir.isDirectory()) {
+            File[] files = componentsDir.listFiles();
+            if (files != null) {
+                componentFiles.addAll(Arrays.asList(files));
+            }
+        }
+
+        try {
+            List<ComponentModel> models = new ArrayList<>();
+            for (File core : componentFiles) {
+                String json = loadText(new FileInputStream(core));
+                ComponentModel model = generateComponentModel(json);
+
+                // filter out alternative schemas which reuses documentation
+                boolean add = true;
+                if (!model.getAlternativeSchemes().isEmpty()) {
+                    String first = model.getAlternativeSchemes().split(",")[0];
+                    if (!model.getScheme().equals(first)) {
+                        add = false;
+                    }
+                }
+                if (add) {
+                    models.add(model);
+                }
+            }
+
+            // sor the models
+            Collections.sort(models, new ComponentComparator());
+
+            // the summary file has the TOC
+            File file = new File(userGuideDir, "SUMMARY.md");
+
+            // update core components
+            StringBuilder core = new StringBuilder();
+            core.append("* Core Components\n");
+            for (ComponentModel model : models) {
+                if (model.getLabel().contains("core")) {
+                    String line = "\t* " + link(model) + "\n";
+                    core.append(line);
+                }
+            }
+            boolean updated = updateCoreComponents(file, core.toString());
+
+            // update regular components
+            StringBuilder regular = new StringBuilder();
+            regular.append("* Components\n");
+            for (ComponentModel model : models) {
+                if (!model.getLabel().contains("core")) {
+                    String line = "\t* " + link(model) + "\n";
+                    regular.append(line);
+                }
+            }
+            updated |= updateComponents(file, regular.toString());
+
+            if (updated) {
+                getLog().info("Updated user guide file: " + file);
+            } else {
+                getLog().debug("No changes to user guide file: " + file);
+            }
+
+        } catch (IOException e) {
+            throw new MojoFailureException("Error due " + e.getMessage(), e);
+        }
+    }
+
+    private boolean updateCoreComponents(File file, String changed) throws MojoExecutionException {
+        if (!file.exists()) {
+            return false;
+        }
+
+        try {
+            String text = loadText(new FileInputStream(file));
+
+            String existing = StringHelper.between(text, "<!-- core components: START -->" , "<!-- core components: END -->");
+            if (existing != null) {
+                // remove leading line breaks etc
+                existing = existing.trim();
+                changed = changed.trim();
+                if (existing.equals(changed)) {
+                    return false;
+                } else {
+                    String before = StringHelper.before(text, "<!-- core components: START -->");
+                    String after = StringHelper.after(text, "<!-- core components: END -->");
+                    text = before + "\n<!-- core components: START -->\n" + changed + "\n<!-- core components: END -->\n" + after;
+                    writeText(file, text);
+                    return true;
+                }
+            } else {
+                getLog().warn("Cannot find markers in file " + file);
+                getLog().warn("Add the following markers");
+                getLog().warn("\t<!-- core components: START -->");
+                getLog().warn("\t<!-- core components: END -->");
+                return false;
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error reading file " + file + " Reason: " + e, e);
+        }
+    }
+
+    private boolean updateComponents(File file, String changed) throws MojoExecutionException {
+        if (!file.exists()) {
+            return false;
+        }
+
+        try {
+            String text = loadText(new FileInputStream(file));
+
+            String existing = StringHelper.between(text, "<!-- components: START -->" , "<!-- components: END -->");
+            if (existing != null) {
+                // remove leading line breaks etc
+                existing = existing.trim();
+                changed = changed.trim();
+                if (existing.equals(changed)) {
+                    return false;
+                } else {
+                    String before = StringHelper.before(text, "<!-- components: START -->");
+                    String after = StringHelper.after(text, "<!-- components: END -->");
+                    text = before + "\n<!-- components: START -->\n" + changed + "\n<!-- components: END -->\n" + after;
+                    writeText(file, text);
+                    return true;
+                }
+            } else {
+                getLog().warn("Cannot find markers in file " + file);
+                getLog().warn("Add the following markers");
+                getLog().warn("\t<!-- components: START -->");
+                getLog().warn("\t<!-- components: END -->");
+                return false;
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error reading file " + file + " Reason: " + e, e);
+        }
+    }
+
+    private static String link(ComponentModel model) {
+        return "[" + model.getTitle() + "](" + model.getScheme() + "-component.adoc)";
+    }
+
+    private static class ComponentComparator implements Comparator<ComponentModel> {
+
+        @Override
+        public int compare(ComponentModel o1, ComponentModel o2) {
+            // lets sory by title
+            return o1.getTitle().compareTo(o2.getTitle());
+        }
+    }
+
+    private ComponentModel generateComponentModel(String json) {
+        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
+
+        ComponentModel component = new ComponentModel();
+        component.setScheme(JSonSchemaHelper.getSafeValue("scheme", rows));
+        component.setSyntax(JSonSchemaHelper.getSafeValue("syntax", rows));
+        component.setAlternativeSyntax(JSonSchemaHelper.getSafeValue("alternativeSyntax", rows));
+        component.setAlternativeSchemes(JSonSchemaHelper.getSafeValue("alternativeSchemes", rows));
+        component.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
+        component.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
+        component.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
+        component.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
+        component.setConsumerOnly(JSonSchemaHelper.getSafeValue("consumerOnly", rows));
+        component.setProducerOnly(JSonSchemaHelper.getSafeValue("producerOnly", rows));
+        component.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
+        component.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
+        component.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows));
+        component.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
+
+        return component;
+    }
+
+}
\ No newline at end of file


[2/2] camel git commit: CAMEL-9541: Keep user guide TOC up to date with components from the Camel Catalog.

Posted by da...@apache.org.
CAMEL-9541: Keep user guide TOC up to date with components from the Camel Catalog.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/38941053
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/38941053
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/38941053

Branch: refs/heads/master
Commit: 38941053b7fdbbc0f84d6dbe35c95c70b7fcaeb6
Parents: 3791e12
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Aug 18 11:27:31 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Aug 18 11:27:31 2016 +0200

----------------------------------------------------------------------
 docs/user-manual/en/SUMMARY.md                  | 108 +++++---
 .../maven/packaging/PrepareUserGuideMojo.java   | 252 ++++++++++++++++++-
 .../maven/packaging/ReadmeComponentMojo.java    |   2 +
 3 files changed, 329 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/38941053/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index f595706..749cfc9 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -303,37 +303,87 @@
 
 
 
+<!-- dataformats: START -->
+* Data Formats
+	* [Avro](avro-dataformat.adoc)
+	* [Barcode](barcode-dataformat.adoc)
+	* [Base64](base64-dataformat.adoc)
+	* [BeanIO](beanio-dataformat.adoc)
+	* [Bindy CSV](bindy-csv-dataformat.adoc)
+	* [Bindy Fixed Length](bindy-fixed-dataformat.adoc)
+	* [Bindy Key Value Pair](bindy-kvp-dataformat.adoc)
+	* [Boon](boon-dataformat.adoc)
+	* [CSV](csv-dataformat.adoc)
+	* [Castor](castor-dataformat.adoc)
+	* [Crypto (Java Cryptographic Extension)](crypto-dataformat.adoc)
+	* [Flatpack](flatpack-dataformat.adoc)
+	* [GZip](gzip-dataformat.adoc)
+	* [HL7](hl7-dataformat.adoc)
+	* [Hessian](hessian-dataformat.adoc)
+	* [JAXB](jaxb-dataformat.adoc)
+	* [JSon GSon](json-gson-dataformat.adoc)
+	* [JSon Jackson](json-jackson-dataformat.adoc)
+	* [JSon Johnzon](json-johnzon-dataformat.adoc)
+	* [JSon XStream](json-xstream-dataformat.adoc)
+	* [JacksonXML](jacksonxml-dataformat.adoc)
+	* [Java Object Serialization](serialization-dataformat.adoc)
+	* [JiBX](jibx-dataformat.adoc)
+	* [LZF Deflate Compression](lzf-dataformat.adoc)
+	* [MIME Multipart](mime-multipart-dataformat.adoc)
+	* [PGP](pgp-dataformat.adoc)
+	* [Protobuf](protobuf-dataformat.adoc)
+	* [RSS](rss-dataformat.adoc)
+	* [SOAP](soapjaxb-dataformat.adoc)
+	* [String Encoding](string-dataformat.adoc)
+	* [Syslog](syslog-dataformat.adoc)
+	* [Tar File](tarfile-dataformat.adoc)
+	* [TidyMarkup](tidyMarkup-dataformat.adoc)
+	* [XML Beans](xmlBeans-dataformat.adoc)
+	* [XML JSon](xmljson-dataformat.adoc)
+	* [XML RPC](xmlrpc-dataformat.adoc)
+	* [XML Security](secureXML-dataformat.adoc)
+	* [XStream](xstream-dataformat.adoc)
+	* [YAML SnakeYAML](yaml-snakeyaml-dataformat.adoc)
+	* [Zip Deflate Compression](zip-dataformat.adoc)
+	* [Zip File](zipfile-dataformat.adoc)
+	* [iCal](ical-dataformat.adoc)
+	* [uniVocity CSV](univocity-csv-dataformat.adoc)
+	* [uniVocity Fixed Length](univocity-fixed-dataformat.adoc)
+	* [uniVocity TSV](univocity-tsv-dataformat.adoc)
+<!-- dataformats: END -->
+
+
+
+
+<!-- languages: START -->
+* Expression Languages
+	* [Bean method](bean-language.adoc)
+	* [Constant](constant-language.adoc)
+	* [EL](el-language.adoc)
+	* [ExchangeProperty](exchangeProperty-language.adoc)
+	* [File](file-language.adoc)
+	* [Groovy](groovy-language.adoc)
+	* [HL7 Terser](terser-language.adoc)
+	* [Header](header-language.adoc)
+	* [JSonPath](jsonpath-language.adoc)
+	* [JXPath](jxpath-language.adoc)
+	* [JavaScript](javaScript-language.adoc)
+	* [MVEL](mvel-language.adoc)
+	* [OGNL](ognl-language.adoc)
+	* [PHP](php-language.adoc)
+	* [Python](python-language.adoc)
+	* [Ref](ref-language.adoc)
+	* [Ruby](ruby-language.adoc)
+	* [SQL](sql-language.adoc)
+	* [Simple](simple-language.adoc)
+	* [SpEL](spel-language.adoc)
+	* [Tokenize](tokenize-language.adoc)
+	* [XML Tokenize](xtokenize-language.adoc)
+	* [XPath](xpath-language.adoc)
+	* [XQuery](xquery-language.adoc)
+<!-- languages: END -->
 
-* [Expression Languages](languages.adoc)
-    * [Bean Language](bean-language.adoc)
-    * [Constant](constant.adoc)
-    * [EL](juel.adoc)
-    * [Jsonpath](jsonpath.adoc)
-    * [JXPath](jxpath.adoc)
-    * [Ognl](ognl.adoc)
-    * [Ruby](ruby.adoc)
-    * [SQL](josql.adoc)
-    * [Scripting languages](scripting-languages.adoc)
 
-* Data Formats
-    * [BeanIO](beanio-dataformat.adoc)
-    * [Flatpack](flatpack-dataformat-dataformat.adoc)
-    * [Ical](ical-dataformat.adoc)
-    * [Jackson XML](jackson-xml-dataformat.adoc)
-    * [Jaxb](jaxb-dataformat.adoc)
-    * [Jibx](jibx-dataformat.adoc)
-    * [Johnzon](johnzon-dataformat.adoc)
-    * [Lzf](lzf-dataformat.adoc)
-    * [Syslog](syslog-dataformat.adoc)
-    * [SOAP](soap-dataformat.adoc)
-    * [Tagsoup](tagsoup-dataformat.adoc)
-    * [Univocity Parsers](univocity-parsers-dataformat.adoc)
-    * [XML Beans](xmlbeans-dataformat.adoc)
-    * [XML JSON](xmljson-dataformat.adoc)
-    * [XML Rpc](xmlrpc-dataformat.adoc)
-    * [XStream](xstream-dataformat.adoc)
-    * [YAML](yaml-dataformat.adoc)
-    * [Zipfile](zipfile-dataformat.adoc)
 
 * Example
     * [BAM Example](bam-example.adoc)

http://git-wip-us.apache.org/repos/asf/camel/blob/38941053/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
index 1b27084..98dd7be 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareUserGuideMojo.java
@@ -27,14 +27,21 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
+import javax.xml.crypto.Data;
+
 import edu.emory.mathcs.backport.java.util.Collections;
 import org.apache.camel.maven.packaging.model.ComponentModel;
+import org.apache.camel.maven.packaging.model.DataFormatModel;
+import org.apache.camel.maven.packaging.model.DataFormatOptionModel;
+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.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 
+import static org.apache.camel.maven.packaging.JSonSchemaHelper.getSafeValue;
 import static org.apache.camel.maven.packaging.PackageHelper.loadText;
 import static org.apache.camel.maven.packaging.PackageHelper.writeText;
 
@@ -62,6 +69,20 @@ public class PrepareUserGuideMojo extends AbstractMojo {
     protected File componentsDir;
 
     /**
+     * The directory for data formats catalog
+     *
+     * @parameter default-value="${project.build.directory}/classes/org/apache/camel/catalog/dataformats"
+     */
+    protected File dataFormatsDir;
+
+    /**
+     * The directory for languages catalog
+     *
+     * @parameter default-value="${project.build.directory}/classes/org/apache/camel/catalog/languages"
+     */
+    protected File languagesDir;
+
+    /**
      * The directory for the user guide
      *
      * @parameter default-value="${project.directory}/../../../docs/user-manual/en"
@@ -85,10 +106,12 @@ public class PrepareUserGuideMojo extends AbstractMojo {
      */
     public void execute() throws MojoExecutionException, MojoFailureException {
         executeComponents();
+        executeDataFormats();
+        executeLanguages();
     }
 
     protected void executeComponents() throws MojoExecutionException, MojoFailureException {
-        Set<File> componentFiles = new TreeSet<File>();
+        Set<File> componentFiles = new TreeSet<>();
 
         if (componentsDir != null && componentsDir.isDirectory()) {
             File[] files = componentsDir.listFiles();
@@ -99,8 +122,8 @@ public class PrepareUserGuideMojo extends AbstractMojo {
 
         try {
             List<ComponentModel> models = new ArrayList<>();
-            for (File core : componentFiles) {
-                String json = loadText(new FileInputStream(core));
+            for (File file : componentFiles) {
+                String json = loadText(new FileInputStream(file));
                 ComponentModel model = generateComponentModel(json);
 
                 // filter out alternative schemas which reuses documentation
@@ -155,6 +178,96 @@ public class PrepareUserGuideMojo extends AbstractMojo {
         }
     }
 
+    protected void executeDataFormats() throws MojoExecutionException, MojoFailureException {
+        Set<File> dataFormatFiles = new TreeSet<>();
+
+        if (dataFormatsDir != null && dataFormatsDir.isDirectory()) {
+            File[] files = dataFormatsDir.listFiles();
+            if (files != null) {
+                dataFormatFiles.addAll(Arrays.asList(files));
+            }
+        }
+
+        try {
+            List<DataFormatModel> models = new ArrayList<>();
+            for (File file : dataFormatFiles) {
+                String json = loadText(new FileInputStream(file));
+                DataFormatModel model = generateDataFormatModel(json);
+                models.add(model);
+            }
+
+            // sor the models
+            Collections.sort(models, new DataFormatComparator());
+
+            // the summary file has the TOC
+            File file = new File(userGuideDir, "SUMMARY.md");
+
+            // TODO: some dataformats reuse docs, such as bindy etc.
+
+            // update data formats
+            StringBuilder dataFormats = new StringBuilder();
+            dataFormats.append("* Data Formats\n");
+            for (DataFormatModel model : models) {
+                String line = "\t* " + link(model) + "\n";
+                dataFormats.append(line);
+            }
+            boolean updated = updateDataFormats(file, dataFormats.toString());
+
+            if (updated) {
+                getLog().info("Updated user guide file: " + file);
+            } else {
+                getLog().debug("No changes to user guide file: " + file);
+            }
+
+        } catch (IOException e) {
+            throw new MojoFailureException("Error due " + e.getMessage(), e);
+        }
+    }
+
+    protected void executeLanguages() throws MojoExecutionException, MojoFailureException {
+        Set<File> languageFiles = new TreeSet<>();
+
+        if (languagesDir != null && languagesDir.isDirectory()) {
+            File[] files = languagesDir.listFiles();
+            if (files != null) {
+                languageFiles.addAll(Arrays.asList(files));
+            }
+        }
+
+        try {
+            List<LanguageModel> models = new ArrayList<>();
+            for (File file : languageFiles) {
+                String json = loadText(new FileInputStream(file));
+                LanguageModel model = generateLanguageModel(json);
+                models.add(model);
+            }
+
+            // sor the models
+            Collections.sort(models, new LanguageComparator());
+
+            // the summary file has the TOC
+            File file = new File(userGuideDir, "SUMMARY.md");
+
+            // update languages
+            StringBuilder languages = new StringBuilder();
+            languages.append("* Expression Languages\n");
+            for (LanguageModel model : models) {
+                String line = "\t* " + link(model) + "\n";
+                languages.append(line);
+            }
+            boolean updated = updateLanguages(file, languages.toString());
+
+            if (updated) {
+                getLog().info("Updated user guide file: " + file);
+            } else {
+                getLog().debug("No changes to user guide file: " + file);
+            }
+
+        } catch (IOException e) {
+            throw new MojoFailureException("Error due " + e.getMessage(), e);
+        }
+    }
+
     private boolean updateCoreComponents(File file, String changed) throws MojoExecutionException {
         if (!file.exists()) {
             return false;
@@ -223,15 +336,109 @@ public class PrepareUserGuideMojo extends AbstractMojo {
         }
     }
 
+    private boolean updateDataFormats(File file, String changed) throws MojoExecutionException {
+        if (!file.exists()) {
+            return false;
+        }
+
+        try {
+            String text = loadText(new FileInputStream(file));
+
+            String existing = StringHelper.between(text, "<!-- dataformats: START -->" , "<!-- dataformats: END -->");
+            if (existing != null) {
+                // remove leading line breaks etc
+                existing = existing.trim();
+                changed = changed.trim();
+                if (existing.equals(changed)) {
+                    return false;
+                } else {
+                    String before = StringHelper.before(text, "<!-- dataformats: START -->");
+                    String after = StringHelper.after(text, "<!-- dataformats: END -->");
+                    text = before + "\n<!-- dataformats: START -->\n" + changed + "\n<!-- dataformats: END -->\n" + after;
+                    writeText(file, text);
+                    return true;
+                }
+            } else {
+                getLog().warn("Cannot find markers in file " + file);
+                getLog().warn("Add the following markers");
+                getLog().warn("\t<!-- dataformats: START -->");
+                getLog().warn("\t<!-- dataformats: END -->");
+                return false;
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error reading file " + file + " Reason: " + e, e);
+        }
+    }
+
+    private boolean updateLanguages(File file, String changed) throws MojoExecutionException {
+        if (!file.exists()) {
+            return false;
+        }
+
+        try {
+            String text = loadText(new FileInputStream(file));
+
+            String existing = StringHelper.between(text, "<!-- languages: START -->" , "<!-- languages: END -->");
+            if (existing != null) {
+                // remove leading line breaks etc
+                existing = existing.trim();
+                changed = changed.trim();
+                if (existing.equals(changed)) {
+                    return false;
+                } else {
+                    String before = StringHelper.before(text, "<!-- languages: START -->");
+                    String after = StringHelper.after(text, "<!-- languages: END -->");
+                    text = before + "\n<!-- languages: START -->\n" + changed + "\n<!-- languages: END -->\n" + after;
+                    writeText(file, text);
+                    return true;
+                }
+            } else {
+                getLog().warn("Cannot find markers in file " + file);
+                getLog().warn("Add the following markers");
+                getLog().warn("\t<!-- languages: START -->");
+                getLog().warn("\t<!-- languages: END -->");
+                return false;
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error reading file " + file + " Reason: " + e, e);
+        }
+    }
+
     private static String link(ComponentModel model) {
         return "[" + model.getTitle() + "](" + model.getScheme() + "-component.adoc)";
     }
 
+    private static String link(DataFormatModel model) {
+        return "[" + model.getTitle() + "](" + model.getName() + "-dataformat.adoc)";
+    }
+
+    private static String link(LanguageModel model) {
+        return "[" + model.getTitle() + "](" + model.getName() + "-language.adoc)";
+    }
+
     private static class ComponentComparator implements Comparator<ComponentModel> {
 
         @Override
         public int compare(ComponentModel o1, ComponentModel o2) {
-            // lets sory by title
+            // lets sort by title
+            return o1.getTitle().compareTo(o2.getTitle());
+        }
+    }
+
+    private static class DataFormatComparator implements Comparator<DataFormatModel> {
+
+        @Override
+        public int compare(DataFormatModel o1, DataFormatModel o2) {
+            // lets sort by title
+            return o1.getTitle().compareTo(o2.getTitle());
+        }
+    }
+
+    private static class LanguageComparator implements Comparator<LanguageModel> {
+
+        @Override
+        public int compare(LanguageModel o1, LanguageModel o2) {
+            // lets sort by title
             return o1.getTitle().compareTo(o2.getTitle());
         }
     }
@@ -258,4 +465,41 @@ public class PrepareUserGuideMojo extends AbstractMojo {
         return component;
     }
 
+    private DataFormatModel generateDataFormatModel(String json) {
+        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("dataformat", json, false);
+
+        DataFormatModel dataFormat = new DataFormatModel();
+        dataFormat.setName(JSonSchemaHelper.getSafeValue("name", rows));
+        dataFormat.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
+        dataFormat.setModelName(JSonSchemaHelper.getSafeValue("modelName", rows));
+        dataFormat.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
+        dataFormat.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
+        dataFormat.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
+        dataFormat.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
+        dataFormat.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
+        dataFormat.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows));
+        dataFormat.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
+
+        return dataFormat;
+    }
+
+    private LanguageModel generateLanguageModel(String json) {
+        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("language", json, false);
+
+        LanguageModel language = new LanguageModel();
+        language.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
+        language.setName(JSonSchemaHelper.getSafeValue("name", rows));
+        language.setModelName(JSonSchemaHelper.getSafeValue("modelName", rows));
+        language.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
+        language.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
+        language.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
+        language.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
+        language.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
+        language.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows));
+        language.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
+
+        return language;
+    }
+
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/38941053/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
index b94ba77..5881522 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
@@ -460,6 +460,7 @@ public class ReadmeComponentMojo extends AbstractMojo {
         DataFormatModel dataFormat = new DataFormatModel();
         dataFormat.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
         dataFormat.setModelName(JSonSchemaHelper.getSafeValue("modelName", rows));
+        dataFormat.setName(JSonSchemaHelper.getSafeValue("name", rows));
         dataFormat.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
         dataFormat.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
         dataFormat.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
@@ -497,6 +498,7 @@ public class ReadmeComponentMojo extends AbstractMojo {
         LanguageModel language = new LanguageModel();
         language.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
         language.setModelName(JSonSchemaHelper.getSafeValue("modelName", rows));
+        language.setName(JSonSchemaHelper.getSafeValue("name", rows));
         language.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
         language.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
         language.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));