[1/5] camel git commit: CAMEL-10798 camel-ignite - updated javadoc

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[1/5] camel git commit: CAMEL-10798 camel-ignite - updated javadoc

acosentino
Repository: camel
Updated Branches:
  refs/heads/master 9b3e7ebe5 -> 33d111e3b


CAMEL-10798 camel-ignite - updated javadoc


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

Branch: refs/heads/master
Commit: 33d111e3b1ab7488a549ce117aa39f1fc9b22535
Parents: df65678
Author: Tomohisa Igarashi <[hidden email]>
Authored: Fri Apr 21 17:14:38 2017 +0900
Committer: Andrea Cosentino <[hidden email]>
Committed: Fri Apr 21 11:20:12 2017 +0200

----------------------------------------------------------------------
 .../component/ignite/AbstractIgniteComponent.java     | 14 +++++++-------
 .../camel/component/ignite/IgniteComponent.java       | 11 ++++++++---
 .../component/ignite/cache/IgniteCacheEndpoint.java   |  5 ++++-
 .../ignite/compute/IgniteComputeEndpoint.java         |  6 +++++-
 .../component/ignite/events/IgniteEventsEndpoint.java |  6 +++++-
 .../component/ignite/idgen/IgniteIdGenEndpoint.java   |  4 +++-
 .../ignite/messaging/IgniteMessagingEndpoint.java     |  4 +++-
 .../component/ignite/queue/IgniteQueueEndpoint.java   |  4 +++-
 .../camel/component/ignite/set/IgniteSetEndpoint.java |  4 +++-
 components/readme.adoc                                | 14 +++++++-------
 .../springboot/IgniteCacheComponentConfiguration.java |  3 ++-
 .../IgniteComputeComponentConfiguration.java          |  5 ++++-
 .../IgniteEventsComponentConfiguration.java           |  3 ++-
 .../springboot/IgniteIdGenComponentConfiguration.java |  3 ++-
 .../IgniteMessagingComponentConfiguration.java        |  3 ++-
 .../springboot/IgniteQueueComponentConfiguration.java |  3 ++-
 .../springboot/IgniteSetComponentConfiguration.java   |  3 ++-
 17 files changed, 64 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
index 1c56340..eaf6583 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
@@ -40,13 +40,13 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * This is a base class of camel-ignite components which correspond to following Apache Ignite functions:
  * <ul>
- * <li>{@link IgniteSetComponent}: Cache operations.</li>
- * <li>{@link IgniteSetComponent}: Cluster computation.</li>
- * <li>{@link IgniteSetComponent}: Messaging.</li>
- * <li>{@link IgniteSetComponent}: Eventing.</li>
- * <li>{@link IgniteSetComponent}: Id Generation.</li>
- * <li>{@link IgniteSetComponent}: Set operations.</li>
- * <li>{@link IgniteSetComponent}: Queue operations.</li>
+ * <li>{@link org.apache.camel.component.ignite.cache.IgniteCacheComponent}: Cache operations.</li>
+ * <li>{@link org.apache.camel.component.ignite.compute.IgniteComputeComponent}: Cluster computation.</li>
+ * <li>{@link org.apache.camel.component.ignite.messaging.IgniteMessagingComponent}: Messaging.</li>
+ * <li>{@link org.apache.camel.component.ignite.events.IgniteEventsComponent}: Eventing.</li>
+ * <li>{@link org.apache.camel.component.ignite.idgen.IgniteIdGenComponent}: Id Generation.</li>
+ * <li>{@link org.apache.camel.component.ignite.set.IgniteSetComponent}: Set operations.</li>
+ * <li>{@link org.apache.camel.component.ignite.queue.IgniteQueueComponent}: Queue operations.</li>
  * </ul>
  */
 public abstract class AbstractIgniteComponent extends DefaultComponent {

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
index c10c614..489f701 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
@@ -50,9 +50,14 @@ import org.slf4j.LoggerFactory;
  * <li>Set operations.</li>
  * <li>Queue operations.</li>
  * </ul>
- * @deprecated Use {@link IgniteSetComponent}, {@link IgniteSetComponent}, {@link IgniteSetComponent},
- * {@link IgniteSetComponent}, {@link IgniteSetComponent}, {@link IgniteSetComponent} and
- * {@link IgniteSetComponent}
+ * @deprecated Use
+ * {@link org.apache.camel.component.ignite.cache.IgniteCacheComponent},
+ * {@link org.apache.camel.component.ignite.compute.IgniteComputeComponent},
+ * {@link org.apache.camel.component.ignite.events.IgniteEventsComponent},
+ * {@link org.apache.camel.component.ignite.idgen.IgniteIdGenComponent},
+ * {@link org.apache.camel.component.ignite.messaging.IgniteMessagingComponent},
+ * {@link org.apache.camel.component.ignite.queue.IgniteQueueComponent} and
+ * {@link org.apache.camel.component.ignite.set.IgniteSetComponent}
  */
 @Deprecated
 public class IgniteComponent extends AbstractIgniteComponent {

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
index b31cbb6..4cd4a0b 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
@@ -39,7 +39,10 @@ import org.apache.ignite.cache.query.ContinuousQuery;
 import org.apache.ignite.cache.query.Query;
 
 /**
- * Ignite Cache endpoint.
+ * The Ignite Cache endpoint is one of camel-ignite endpoints which allows you to interact with
+ * an <a href="https://apacheignite.readme.io/docs/data-grid">Ignite Cache</a>.
+ * This offers both a Producer (to invoke cache operations on an Ignite cache) and
+ * a Consumer (to consume changes from a continuous query).
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-cache", title = "Ignite Cache", syntax = "ignite-cache:[cacheName]", label = "nosql,cache,compute",
     consumerClass = IgniteCacheContinuousQueryConsumer.class)

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
index bdaa8c7..bf49dd3 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
@@ -33,7 +33,11 @@ import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCompute;
 
 /**
- * Ignite Compute endpoint.
+ * The Ignite Compute endpoint is one of camel-ignite endpoints which allows you to run
+ * <a href="https://apacheignite.readme.io/docs/compute-grid">compute operations</a>
+ * on the cluster by passing in an IgniteCallable, an IgniteRunnable, an IgniteClosure,
+ * or collections of them, along with their parameters if necessary.
+ * This endpoint only supports producers.
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-compute", title = "Ignite Compute", syntax = "ignite-compute:[endpointId]", label = "nosql,cache,compute", producerOnly = true)
 public class IgniteComputeEndpoint extends AbstractIgniteEndpoint {

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
index d926f95..bd902ab 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
@@ -40,7 +40,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Ignite Events endpoint. Only supports consumers.
+ * The Ignite Events endpoint is one of camel-ignite endpoints which allows you to
+ * <a href="https://apacheignite.readme.io/docs/events">receive events</a> from
+ * the Ignite cluster by creating a local event listener.
+ * This endpoint only supports consumers.
+ * The Exchanges created by this consumer put the received Event object into the body of the IN message.
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-events", title = "Ignite Events", syntax = "ignite-events:[endpointId]", label = "nosql,cache,compute,messaging,data",
     consumerOnly = true, consumerClass = IgniteEventsConsumer.class)

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
index 5cd86c6..34e1605 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
@@ -34,7 +34,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Ignite ID Generator endpoint.
+ * The Ignite ID Generator endpoint is one of camel-ignite endpoints which allows you to interact with
+ * <a href="https://apacheignite.readme.io/docs/id-generator">Ignite Atomic Sequences and ID Generators</a>.
+ * This endpoint only supports producers.
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-idgen", title = "Ignite ID Generator", syntax = "ignite-idgen:[name]", label = "nosql,cache,compute", producerOnly = true)
 public class IgniteIdGenEndpoint extends AbstractIgniteEndpoint {

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
index fe3c18d..97b522c 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
@@ -33,7 +33,9 @@ import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteMessaging;
 
 /**
- * Ignite Messaging endpoint.
+ * The Ignite Messaging endpoint is one of camel-ignite endpoints which allows you to send and
+ * consume messages from an <a href="https://apacheignite.readme.io/docs/messaging">Ignite topic</a>.
+ * This endpoint supports producers (to send messages) and consumers (to receive messages).
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-messaging", title = "Ignite Messaging", syntax = "ignite-messaging:[topic]", label = "nosql,cache,messaging",
     consumerClass = IgniteMessagingConsumer.class)

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
index 0252820..1b87129 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
@@ -35,7 +35,9 @@ import org.apache.ignite.IgniteQueue;
 import org.apache.ignite.configuration.CollectionConfiguration;
 
 /**
- * Ignite Queue endpoint.
+ * The Ignite Queue endpoint is one of camel-ignite endpoints which allows you to interact with
+ * <a href="https://apacheignite.readme.io/docs/queue-and-set">Ignite Queue data structures</a>.
+ * This endpoint only supports producers.
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-queue", title = "Ignite Queues", syntax = "ignite-queue:[name]", label = "nosql,cache", producerOnly = true)
 public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
index ff616ba..d441098 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
@@ -34,7 +34,9 @@ import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.configuration.CollectionConfiguration;
 
 /**
- * Ignite Set endpoint.
+ * The Ignite Sets endpoint is one of camel-ignite endpoints which allows you to interact with
+ * <a href="https://apacheignite.readme.io/docs/queue-and-set">Ignite Set data structures</a>.
+ * This endpoint only supports producers.
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-set", title = "Ignite Sets", syntax = "ignite-set:[name]", label = "nosql,cache", producerOnly = true)
 public class IgniteSetEndpoint extends AbstractIgniteEndpoint {

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/components/readme.adoc
----------------------------------------------------------------------
diff --git a/components/readme.adoc b/components/readme.adoc
index 2c3bb8f..a81ce4f 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -294,25 +294,25 @@ Number of Components: 238 in 185 JAR artifacts (14 deprecated)
 `ibatis:statement` | 1.2 | *deprecated* Performs a query poll insert update or delete in a relational database using Apache iBATIS.
 
 | link:camel-ignite/src/main/docs/ignite-cache-component.adoc[Ignite Cache] (camel-ignite) +
-`ignite-cache:[cacheName]` | 2.17 | Ignite Cache endpoint.
+`ignite-cache:[cacheName]` | 2.17 | The Ignite Cache endpoint is one of camel-ignite endpoints which allows you to interact with an Ignite Cache.
 
 | link:camel-ignite/src/main/docs/ignite-compute-component.adoc[Ignite Compute] (camel-ignite) +
-`ignite-compute:[endpointId]` | 2.17 | Ignite Compute endpoint.
+`ignite-compute:[endpointId]` | 2.17 | The Ignite Compute endpoint is one of camel-ignite endpoints which allows you to run compute operations on the cluster by passing in an IgniteCallable an IgniteRunnable an IgniteClosure or collections of them along with their parameters if necessary.
 
 | link:camel-ignite/src/main/docs/ignite-events-component.adoc[Ignite Events] (camel-ignite) +
-`ignite-events:[endpointId]` | 2.17 | Ignite Events endpoint. Only supports consumers.
+`ignite-events:[endpointId]` | 2.17 | The Ignite Events endpoint is one of camel-ignite endpoints which allows you to receive events from the Ignite cluster by creating a local event listener.
 
 | link:camel-ignite/src/main/docs/ignite-idgen-component.adoc[Ignite ID Generator] (camel-ignite) +
-`ignite-idgen:[name]` | 2.17 | Ignite ID Generator endpoint.
+`ignite-idgen:[name]` | 2.17 | The Ignite ID Generator endpoint is one of camel-ignite endpoints which allows you to interact with Ignite Atomic Sequences and ID Generators.
 
 | link:camel-ignite/src/main/docs/ignite-messaging-component.adoc[Ignite Messaging] (camel-ignite) +
-`ignite-messaging:[topic]` | 2.17 | Ignite Messaging endpoint.
+`ignite-messaging:[topic]` | 2.17 | The Ignite Messaging endpoint is one of camel-ignite endpoints which allows you to send and consume messages from an Ignite topic.
 
 | link:camel-ignite/src/main/docs/ignite-queue-component.adoc[Ignite Queues] (camel-ignite) +
-`ignite-queue:[name]` | 2.17 | Ignite Queue endpoint.
+`ignite-queue:[name]` | 2.17 | The Ignite Queue endpoint is one of camel-ignite endpoints which allows you to interact with Ignite Queue data structures.
 
 | link:camel-ignite/src/main/docs/ignite-set-component.adoc[Ignite Sets] (camel-ignite) +
-`ignite-set:[name]` | 2.17 | Ignite Set endpoint.
+`ignite-set:[name]` | 2.17 | The Ignite Sets endpoint is one of camel-ignite endpoints which allows you to interact with Ignite Set data structures.
 
 | link:camel-infinispan/src/main/docs/infinispan-component.adoc[Infinispan] (camel-infinispan) +
 `infinispan:cacheName` | 2.13 | For reading/writing from/to Infinispan distributed key/value store and data grid.

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java
index 5e41e4b..3334263 100644
--- a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java
@@ -23,7 +23,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
- * Ignite Cache endpoint.
+ * The Ignite Cache endpoint is one of camel-ignite endpoints which allows you
+ * to interact with an Ignite Cache.
  *
  * Generated by camel-package-maven-plugin - do not edit this file!
  */

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java
index 920de79..25fb2b9 100644
--- a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
- * Ignite Compute endpoint.
+ * The Ignite Compute endpoint is one of camel-ignite endpoints which allows you
+ * to run compute operations on the cluster by passing in an IgniteCallable an
+ * IgniteRunnable an IgniteClosure or collections of them along with their
+ * parameters if necessary.
  *
  * Generated by camel-package-maven-plugin - do not edit this file!
  */

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java
index db3ff99..e96521d 100644
--- a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java
@@ -23,7 +23,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
- * Ignite Events endpoint. Only supports consumers.
+ * The Ignite Events endpoint is one of camel-ignite endpoints which allows you
+ * to receive events from the Ignite cluster by creating a local event listener.
  *
  * Generated by camel-package-maven-plugin - do not edit this file!
  */

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java
index 84c5ea4..345563b 100644
--- a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java
@@ -23,7 +23,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
- * Ignite ID Generator endpoint.
+ * The Ignite ID Generator endpoint is one of camel-ignite endpoints which
+ * allows you to interact with Ignite Atomic Sequences and ID Generators.
  *
  * Generated by camel-package-maven-plugin - do not edit this file!
  */

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java
index 58c414a..ac0bd64 100644
--- a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java
@@ -23,7 +23,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
- * Ignite Messaging endpoint.
+ * The Ignite Messaging endpoint is one of camel-ignite endpoints which allows
+ * you to send and consume messages from an Ignite topic.
  *
  * Generated by camel-package-maven-plugin - do not edit this file!
  */

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java
index 8e6a336..f6dae1c 100644
--- a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java
@@ -23,7 +23,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
- * Ignite Queue endpoint.
+ * The Ignite Queue endpoint is one of camel-ignite endpoints which allows you
+ * to interact with Ignite Queue data structures.
  *
  * Generated by camel-package-maven-plugin - do not edit this file!
  */

http://git-wip-us.apache.org/repos/asf/camel/blob/33d111e3/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java
index 534cb6d..0e01d32 100644
--- a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java
@@ -23,7 +23,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
- * Ignite Set endpoint.
+ * The Ignite Sets endpoint is one of camel-ignite endpoints which allows you to
+ * interact with Ignite Set data structures.
  *
  * Generated by camel-package-maven-plugin - do not edit this file!
  */

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[2/5] camel git commit: CAMEL-10798 Splitted camel-ignite component for each endpoint

acosentino
http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentAutoConfiguration.java
new file mode 100644
index 0000000..9a5671e
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentAutoConfiguration.java
@@ -0,0 +1,114 @@
+/**
+ * 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.component.ignite.idgen.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ignite.idgen.IgniteIdGenComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(IgniteIdGenComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(IgniteIdGenComponentConfiguration.class)
+public class IgniteIdGenComponentAutoConfiguration {
+
+    @Lazy
+    @Bean(name = "ignite-idgen-component")
+    @ConditionalOnClass(CamelContext.class)
+    @ConditionalOnMissingBean(IgniteIdGenComponent.class)
+    public IgniteIdGenComponent configureIgniteIdGenComponent(
+            CamelContext camelContext,
+            IgniteIdGenComponentConfiguration configuration) throws Exception {
+        IgniteIdGenComponent component = new IgniteIdGenComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        IntrospectionSupport.setProperties(camelContext,
+                camelContext.getTypeConverter(), component, parameters);
+        return component;
+    }
+
+    @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.ignite-idgen");
+            if (isEnabled(conditionContext, "camel.component.ignite-idgen.",
+                    groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java
new file mode 100644
index 0000000..84c5ea4
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/idgen/springboot/IgniteIdGenComponentConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * 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.component.ignite.idgen.springboot;
+
+import javax.annotation.Generated;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * Ignite ID Generator endpoint.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ignite-idgen")
+public class IgniteIdGenComponentConfiguration {
+
+    /**
+     * Sets the Ignite instance.
+     */
+    @NestedConfigurationProperty
+    private Ignite ignite;
+    /**
+     * Sets the resource from where to load the configuration. It can be a: URI
+     * String (URI) or an InputStream.
+     */
+    private Object configurationResource;
+    /**
+     * Allows the user to set a programmatic IgniteConfiguration.
+     */
+    @NestedConfigurationProperty
+    private IgniteConfiguration igniteConfiguration;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentAutoConfiguration.java
new file mode 100644
index 0000000..a3076e5
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentAutoConfiguration.java
@@ -0,0 +1,115 @@
+/**
+ * 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.component.ignite.messaging.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ignite.messaging.IgniteMessagingComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(IgniteMessagingComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(IgniteMessagingComponentConfiguration.class)
+public class IgniteMessagingComponentAutoConfiguration {
+
+    @Lazy
+    @Bean(name = "ignite-messaging-component")
+    @ConditionalOnClass(CamelContext.class)
+    @ConditionalOnMissingBean(IgniteMessagingComponent.class)
+    public IgniteMessagingComponent configureIgniteMessagingComponent(
+            CamelContext camelContext,
+            IgniteMessagingComponentConfiguration configuration)
+            throws Exception {
+        IgniteMessagingComponent component = new IgniteMessagingComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        IntrospectionSupport.setProperties(camelContext,
+                camelContext.getTypeConverter(), component, parameters);
+        return component;
+    }
+
+    @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.ignite-messaging");
+            if (isEnabled(conditionContext,
+                    "camel.component.ignite-messaging.", groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java
new file mode 100644
index 0000000..58c414a
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/messaging/springboot/IgniteMessagingComponentConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * 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.component.ignite.messaging.springboot;
+
+import javax.annotation.Generated;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * Ignite Messaging endpoint.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ignite-messaging")
+public class IgniteMessagingComponentConfiguration {
+
+    /**
+     * Sets the Ignite instance.
+     */
+    @NestedConfigurationProperty
+    private Ignite ignite;
+    /**
+     * Sets the resource from where to load the configuration. It can be a: URI
+     * String (URI) or an InputStream.
+     */
+    private Object configurationResource;
+    /**
+     * Allows the user to set a programmatic IgniteConfiguration.
+     */
+    @NestedConfigurationProperty
+    private IgniteConfiguration igniteConfiguration;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentAutoConfiguration.java
new file mode 100644
index 0000000..d132ba6
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentAutoConfiguration.java
@@ -0,0 +1,114 @@
+/**
+ * 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.component.ignite.queue.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ignite.queue.IgniteQueueComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(IgniteQueueComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(IgniteQueueComponentConfiguration.class)
+public class IgniteQueueComponentAutoConfiguration {
+
+    @Lazy
+    @Bean(name = "ignite-queue-component")
+    @ConditionalOnClass(CamelContext.class)
+    @ConditionalOnMissingBean(IgniteQueueComponent.class)
+    public IgniteQueueComponent configureIgniteQueueComponent(
+            CamelContext camelContext,
+            IgniteQueueComponentConfiguration configuration) throws Exception {
+        IgniteQueueComponent component = new IgniteQueueComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        IntrospectionSupport.setProperties(camelContext,
+                camelContext.getTypeConverter(), component, parameters);
+        return component;
+    }
+
+    @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.ignite-queue");
+            if (isEnabled(conditionContext, "camel.component.ignite-queue.",
+                    groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java
new file mode 100644
index 0000000..8e6a336
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/queue/springboot/IgniteQueueComponentConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * 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.component.ignite.queue.springboot;
+
+import javax.annotation.Generated;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * Ignite Queue endpoint.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ignite-queue")
+public class IgniteQueueComponentConfiguration {
+
+    /**
+     * Sets the Ignite instance.
+     */
+    @NestedConfigurationProperty
+    private Ignite ignite;
+    /**
+     * Sets the resource from where to load the configuration. It can be a: URI
+     * String (URI) or an InputStream.
+     */
+    private Object configurationResource;
+    /**
+     * Allows the user to set a programmatic IgniteConfiguration.
+     */
+    @NestedConfigurationProperty
+    private IgniteConfiguration igniteConfiguration;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentAutoConfiguration.java
new file mode 100644
index 0000000..baf1f77
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentAutoConfiguration.java
@@ -0,0 +1,114 @@
+/**
+ * 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.component.ignite.set.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ignite.set.IgniteSetComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(IgniteSetComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(IgniteSetComponentConfiguration.class)
+public class IgniteSetComponentAutoConfiguration {
+
+    @Lazy
+    @Bean(name = "ignite-set-component")
+    @ConditionalOnClass(CamelContext.class)
+    @ConditionalOnMissingBean(IgniteSetComponent.class)
+    public IgniteSetComponent configureIgniteSetComponent(
+            CamelContext camelContext,
+            IgniteSetComponentConfiguration configuration) throws Exception {
+        IgniteSetComponent component = new IgniteSetComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        IntrospectionSupport.setProperties(camelContext,
+                camelContext.getTypeConverter(), component, parameters);
+        return component;
+    }
+
+    @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.ignite-set");
+            if (isEnabled(conditionContext, "camel.component.ignite-set.",
+                    groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java
new file mode 100644
index 0000000..534cb6d
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/set/springboot/IgniteSetComponentConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * 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.component.ignite.set.springboot;
+
+import javax.annotation.Generated;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * Ignite Set endpoint.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ignite-set")
+public class IgniteSetComponentConfiguration {
+
+    /**
+     * Sets the Ignite instance.
+     */
+    @NestedConfigurationProperty
+    private Ignite ignite;
+    /**
+     * Sets the resource from where to load the configuration. It can be a: URI
+     * String (URI) or an InputStream.
+     */
+    private Object configurationResource;
+    /**
+     * Allows the user to set a programmatic IgniteConfiguration.
+     */
+    @NestedConfigurationProperty
+    private IgniteConfiguration igniteConfiguration;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
new file mode 100644
index 0000000..b239182
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -0,0 +1,46 @@
+{
+  "properties": [
+    {
+      "defaultValue": true,
+      "name": "camel.component.ignite-queue.enabled",
+      "description": "Enable ignite-queue component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.ignite-set.enabled",
+      "description": "Enable ignite-set component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.ignite-cache.enabled",
+      "description": "Enable ignite-cache component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.ignite-compute.enabled",
+      "description": "Enable ignite-compute component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.ignite-idgen.enabled",
+      "description": "Enable ignite-idgen component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.ignite-events.enabled",
+      "description": "Enable ignite-events component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.ignite-messaging.enabled",
+      "description": "Enable ignite-messaging component",
+      "type": "java.lang.Boolean"
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/spring.factories b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..d1a6634
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.apache.camel.component.ignite.queue.springboot.IgniteQueueComponentAutoConfiguration,\
+org.apache.camel.component.ignite.set.springboot.IgniteSetComponentAutoConfiguration,\
+org.apache.camel.component.ignite.cache.springboot.IgniteCacheComponentAutoConfiguration,\
+org.apache.camel.component.ignite.compute.springboot.IgniteComputeComponentAutoConfiguration,\
+org.apache.camel.component.ignite.idgen.springboot.IgniteIdGenComponentAutoConfiguration,\
+org.apache.camel.component.ignite.events.springboot.IgniteEventsComponentAutoConfiguration,\
+org.apache.camel.component.ignite.messaging.springboot.IgniteMessagingComponentAutoConfiguration
+
+
+
+
+
+

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[3/5] camel git commit: CAMEL-10798 Splitted camel-ignite component for each endpoint

acosentino
In reply to this post by acosentino
http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteComputeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteComputeTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteComputeTest.java
index fd66450..2588135 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteComputeTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteComputeTest.java
@@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.ignite.compute.IgniteComputeComponent;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.Ignition;
@@ -41,10 +42,20 @@ public class IgniteComputeTest extends AbstractIgniteTest {
     private static final List<Ignite> ADDITIONAL_INSTANCES = Lists.newArrayList();
     private static final List<UUID> LISTENERS = Lists.newArrayList();
 
+    @Override
+    protected String getScheme() {
+        return "ignite-compute";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteComputeComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testExecuteWithWrongPayload() {
         try {
-            template.requestBody("ignite:compute:abc?executionType=EXECUTE", TestIgniteComputeResources.TEST_CALLABLE, String.class);
+            template.requestBody("ignite-compute:abc?executionType=EXECUTE", TestIgniteComputeResources.TEST_CALLABLE, String.class);
         } catch (Exception e) {
             assert_().that(ObjectHelper.getException(RuntimeCamelException.class, e).getMessage()).startsWith("Ignite Compute endpoint with EXECUTE");
             return;
@@ -59,19 +70,19 @@ public class IgniteComputeTest extends AbstractIgniteTest {
         TestIgniteComputeResources.COUNTER.set(0);
 
         // Single Callable.
-        String result = template.requestBody("ignite:compute:abc?executionType=CALL", TestIgniteComputeResources.TEST_CALLABLE, String.class);
+        String result = template.requestBody("ignite-compute:abc?executionType=CALL", TestIgniteComputeResources.TEST_CALLABLE, String.class);
 
         assert_().that(result).isEqualTo("hello");
 
         // Collection of Callables.
         Object[] callables = new Object[5];
         Arrays.fill(callables, TestIgniteComputeResources.TEST_CALLABLE);
-        Collection<String> colResult = template.requestBody("ignite:compute:abc?executionType=CALL", Lists.newArrayList(callables), Collection.class);
+        Collection<String> colResult = template.requestBody("ignite-compute:abc?executionType=CALL", Lists.newArrayList(callables), Collection.class);
 
         assert_().that(colResult).containsExactly("hello", "hello", "hello", "hello", "hello").inOrder();
 
         // Callables with a Reducer.
-        String reduced = template.requestBodyAndHeader("ignite:compute:abc?executionType=CALL", Lists.newArrayList(callables), IgniteConstants.IGNITE_COMPUTE_REDUCER,
+        String reduced = template.requestBodyAndHeader("ignite-compute:abc?executionType=CALL", Lists.newArrayList(callables), IgniteConstants.IGNITE_COMPUTE_REDUCER,
                 TestIgniteComputeResources.STRING_JOIN_REDUCER, String.class);
 
         assert_().that(reduced).isEqualTo("hellohellohellohellohello");
@@ -82,14 +93,14 @@ public class IgniteComputeTest extends AbstractIgniteTest {
         TestIgniteComputeResources.COUNTER.set(0);
 
         // Single Runnable.
-        Object result = template.requestBody("ignite:compute:abc?executionType=RUN", TestIgniteComputeResources.TEST_RUNNABLE_COUNTER, Object.class);
+        Object result = template.requestBody("ignite-compute:abc?executionType=RUN", TestIgniteComputeResources.TEST_RUNNABLE_COUNTER, Object.class);
         assert_().that(result).isNull();
         assert_().that(TestIgniteComputeResources.COUNTER.get()).isEqualTo(1);
 
         // Multiple Runnables.
         Object[] runnables = new Object[5];
         Arrays.fill(runnables, TestIgniteComputeResources.TEST_RUNNABLE_COUNTER);
-        result = template.requestBody("ignite:compute:abc?executionType=RUN", Lists.newArrayList(runnables), Collection.class);
+        result = template.requestBody("ignite-compute:abc?executionType=RUN", Lists.newArrayList(runnables), Collection.class);
         assert_().that(result).isNull();
         assert_().that(TestIgniteComputeResources.COUNTER.get()).isEqualTo(6);
     }
@@ -106,17 +117,17 @@ public class IgniteComputeTest extends AbstractIgniteTest {
         LISTENERS.add(ignite().events().remoteListen(null, TestIgniteComputeResources.EVENT_COUNTER, EventType.EVT_JOB_FINISHED));
 
         // Single Runnable.
-        Object result = template.requestBody("ignite:compute:abc?executionType=BROADCAST", TestIgniteComputeResources.TEST_RUNNABLE, Object.class);
+        Object result = template.requestBody("ignite-compute:abc?executionType=BROADCAST", TestIgniteComputeResources.TEST_RUNNABLE, Object.class);
         assert_().that(result).isNull();
         assert_().that(TestIgniteComputeResources.COUNTER.get()).isEqualTo(3);
 
         // Single Callable.
-        Collection<String> colResult = template.requestBody("ignite:compute:abc?executionType=BROADCAST", TestIgniteComputeResources.TEST_CALLABLE, Collection.class);
+        Collection<String> colResult = template.requestBody("ignite-compute:abc?executionType=BROADCAST", TestIgniteComputeResources.TEST_CALLABLE, Collection.class);
         assert_().that(colResult).isNotNull();
         assert_().that(colResult).containsExactly("hello", "hello", "hello").inOrder();
 
         // Single Closure.
-        colResult = template.requestBodyAndHeader("ignite:compute:abc?executionType=BROADCAST", TestIgniteComputeResources.TEST_CLOSURE, IgniteConstants.IGNITE_COMPUTE_PARAMS, "Camel",
+        colResult = template.requestBodyAndHeader("ignite-compute:abc?executionType=BROADCAST", TestIgniteComputeResources.TEST_CLOSURE, IgniteConstants.IGNITE_COMPUTE_PARAMS, "Camel",
                 Collection.class);
         assert_().that(colResult).isNotNull();
         assert_().that(colResult).containsExactly("hello Camel", "hello Camel", "hello Camel").inOrder();
@@ -133,12 +144,12 @@ public class IgniteComputeTest extends AbstractIgniteTest {
         LISTENERS.add(ignite().events().remoteListen(null, TestIgniteComputeResources.EVENT_COUNTER, EventType.EVT_JOB_RESULTED));
 
         // ComputeTask instance.
-        String result = template.requestBodyAndHeader("ignite:compute:abc?executionType=EXECUTE", TestIgniteComputeResources.COMPUTE_TASK, IgniteConstants.IGNITE_COMPUTE_PARAMS, 10, String.class);
+        String result = template.requestBodyAndHeader("ignite-compute:abc?executionType=EXECUTE", TestIgniteComputeResources.COMPUTE_TASK, IgniteConstants.IGNITE_COMPUTE_PARAMS, 10, String.class);
         assert_().that(result).isNotNull();
         assert_().that(Splitter.on(",").splitToList(result)).containsAllOf("a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9");
 
         // ComputeTask class.
-        result = template.requestBodyAndHeader("ignite:compute:abc?executionType=EXECUTE", TestIgniteComputeResources.COMPUTE_TASK.getClass(), IgniteConstants.IGNITE_COMPUTE_PARAMS, 10, String.class);
+        result = template.requestBodyAndHeader("ignite-compute:abc?executionType=EXECUTE", TestIgniteComputeResources.COMPUTE_TASK.getClass(), IgniteConstants.IGNITE_COMPUTE_PARAMS, 10, String.class);
         assert_().that(result).isNotNull();
         assert_().that(Splitter.on(",").splitToList(result)).containsAllOf("a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9");
     }
@@ -149,18 +160,18 @@ public class IgniteComputeTest extends AbstractIgniteTest {
         TestIgniteComputeResources.COUNTER.set(0);
 
         // Closure with a single parameter.
-        String result = template.requestBodyAndHeader("ignite:compute:abc?executionType=APPLY", TestIgniteComputeResources.TEST_CLOSURE, IgniteConstants.IGNITE_COMPUTE_PARAMS, "Camel", String.class);
+        String result = template.requestBodyAndHeader("ignite-compute:abc?executionType=APPLY", TestIgniteComputeResources.TEST_CLOSURE, IgniteConstants.IGNITE_COMPUTE_PARAMS, "Camel", String.class);
         assert_().that(result).isEqualTo("hello Camel");
 
         // Closure with a Collection of parameters.
-        Collection<String> colResult = template.requestBodyAndHeader("ignite:compute:abc?executionType=APPLY", TestIgniteComputeResources.TEST_CLOSURE, IgniteConstants.IGNITE_COMPUTE_PARAMS,
+        Collection<String> colResult = template.requestBodyAndHeader("ignite-compute:abc?executionType=APPLY", TestIgniteComputeResources.TEST_CLOSURE, IgniteConstants.IGNITE_COMPUTE_PARAMS,
                 Lists.newArrayList("Camel1", "Camel2", "Camel3"), Collection.class);
         assert_().that(colResult).containsAllOf("hello Camel1", "hello Camel2", "hello Camel3");
 
         // Closure with a Collection of parameters and a Reducer.
         Map<String, Object> headers = ImmutableMap.<String, Object> of(IgniteConstants.IGNITE_COMPUTE_PARAMS, Lists.newArrayList("Camel1", "Camel2", "Camel3"), IgniteConstants.IGNITE_COMPUTE_REDUCER,
                 TestIgniteComputeResources.STRING_JOIN_REDUCER);
-        result = template.requestBodyAndHeaders("ignite:compute:abc?executionType=APPLY", TestIgniteComputeResources.TEST_CLOSURE, headers, String.class);
+        result = template.requestBodyAndHeaders("ignite-compute:abc?executionType=APPLY", TestIgniteComputeResources.TEST_CLOSURE, headers, String.class);
         assert_().that(result).isEqualTo("hello Camel1hello Camel2hello Camel3");
     }
 
@@ -170,7 +181,7 @@ public class IgniteComputeTest extends AbstractIgniteTest {
     }
 
     private void startAdditionalGridInstance() {
-        ADDITIONAL_INSTANCES.add(Ignition.start(buildComponent().getIgniteConfiguration()));
+        ADDITIONAL_INSTANCES.add(Ignition.start(createConfiguration()));
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java
index 57a1428..ec025f1 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java
@@ -31,6 +31,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.ignite.events.IgniteEventsComponent;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -43,12 +44,22 @@ import static com.google.common.truth.Truth.assert_;
 
 public class IgniteEventsTest extends AbstractIgniteTest {
 
+    @Override
+    protected String getScheme() {
+        return "ignite-events";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteEventsComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testConsumeAllEvents() throws Exception {
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("ignite:events:abc").to("mock:test1");
+                from("ignite-events:abc").to("mock:test1");
             }
         });
 
@@ -82,7 +93,7 @@ public class IgniteEventsTest extends AbstractIgniteTest {
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("ignite:events:abc?events=#filter").to("mock:test2");
+                from("ignite-events:abc?events=#filter").to("mock:test2");
             }
         });
 
@@ -109,7 +120,7 @@ public class IgniteEventsTest extends AbstractIgniteTest {
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("ignite:events:abc?events=EVT_CACHE_OBJECT_PUT").to("mock:test3");
+                from("ignite-events:abc?events=EVT_CACHE_OBJECT_PUT").to("mock:test3");
             }
         });
 
@@ -159,10 +170,10 @@ public class IgniteEventsTest extends AbstractIgniteTest {
     }
 
     @Override
-    protected IgniteComponent buildComponent() {
+    protected IgniteConfiguration createConfiguration() {
         IgniteConfiguration config = new IgniteConfiguration();
         config.setIncludeEventTypes(EventType.EVTS_ALL_MINUS_METRIC_UPDATE);
-        return IgniteComponent.fromConfiguration(config);
+        return config;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteIdGenTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteIdGenTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteIdGenTest.java
index c310e41..5066849 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteIdGenTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteIdGenTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.ignite;
 
 import com.google.common.collect.ImmutableSet;
 
+import org.apache.camel.component.ignite.idgen.IgniteIdGenComponent;
 import org.apache.camel.component.ignite.idgen.IgniteIdGenEndpoint;
 import org.apache.camel.component.ignite.idgen.IgniteIdGenOperation;
 import org.apache.ignite.IgniteAtomicSequence;
@@ -28,36 +29,46 @@ import static com.google.common.truth.Truth.assert_;
 
 public class IgniteIdGenTest extends AbstractIgniteTest {
 
+    @Override
+    protected String getScheme() {
+        return "ignite-idgen";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteIdGenComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testOperations() {
-        assert_().that(template.requestBody("ignite:idgen:abc?initialValue=0&operation=GET", null, Long.class)).isEqualTo(0);
-        assert_().that(template.requestBody("ignite:idgen:abc?initialValue=0&operation=GET_AND_INCREMENT", null, Long.class)).isEqualTo(0);
-        assert_().that(template.requestBody("ignite:idgen:abc?initialValue=0&operation=INCREMENT_AND_GET", null, Long.class)).isEqualTo(2);
-        assert_().that(template.requestBody("ignite:idgen:abc?initialValue=0&operation=ADD_AND_GET", 5, Long.class)).isEqualTo(7);
-        assert_().that(template.requestBody("ignite:idgen:abc?initialValue=0&operation=GET_AND_ADD", 5, Long.class)).isEqualTo(7);
-        assert_().that(template.requestBody("ignite:idgen:abc?initialValue=0&operation=GET", 5, Long.class)).isEqualTo(12);
+        assert_().that(template.requestBody("ignite-idgen:abc?initialValue=0&operation=GET", null, Long.class)).isEqualTo(0);
+        assert_().that(template.requestBody("ignite-idgen:abc?initialValue=0&operation=GET_AND_INCREMENT", null, Long.class)).isEqualTo(0);
+        assert_().that(template.requestBody("ignite-idgen:abc?initialValue=0&operation=INCREMENT_AND_GET", null, Long.class)).isEqualTo(2);
+        assert_().that(template.requestBody("ignite-idgen:abc?initialValue=0&operation=ADD_AND_GET", 5, Long.class)).isEqualTo(7);
+        assert_().that(template.requestBody("ignite-idgen:abc?initialValue=0&operation=GET_AND_ADD", 5, Long.class)).isEqualTo(7);
+        assert_().that(template.requestBody("ignite-idgen:abc?initialValue=0&operation=GET", 5, Long.class)).isEqualTo(12);
     }
 
     @Test
     public void testInitialValue() {
-        assert_().that(template.requestBody("ignite:idgen:abc?operation=GET&initialValue=100", null, Long.class)).isEqualTo(100);
-        assert_().that(template.requestBody("ignite:idgen:abc?operation=GET_AND_INCREMENT&initialValue=100", null, Long.class)).isEqualTo(100);
-        assert_().that(template.requestBody("ignite:idgen:abc?operation=INCREMENT_AND_GET&initialValue=100", null, Long.class)).isEqualTo(102);
-        assert_().that(template.requestBody("ignite:idgen:abc?operation=ADD_AND_GET&initialValue=100", 5, Long.class)).isEqualTo(107);
-        assert_().that(template.requestBody("ignite:idgen:abc?operation=GET_AND_ADD&initialValue=100", 5, Long.class)).isEqualTo(107);
-        assert_().that(template.requestBody("ignite:idgen:abc?operation=GET&initialValue=100", 5, Long.class)).isEqualTo(112);
+        assert_().that(template.requestBody("ignite-idgen:abc?operation=GET&initialValue=100", null, Long.class)).isEqualTo(100);
+        assert_().that(template.requestBody("ignite-idgen:abc?operation=GET_AND_INCREMENT&initialValue=100", null, Long.class)).isEqualTo(100);
+        assert_().that(template.requestBody("ignite-idgen:abc?operation=INCREMENT_AND_GET&initialValue=100", null, Long.class)).isEqualTo(102);
+        assert_().that(template.requestBody("ignite-idgen:abc?operation=ADD_AND_GET&initialValue=100", 5, Long.class)).isEqualTo(107);
+        assert_().that(template.requestBody("ignite-idgen:abc?operation=GET_AND_ADD&initialValue=100", 5, Long.class)).isEqualTo(107);
+        assert_().that(template.requestBody("ignite-idgen:abc?operation=GET&initialValue=100", 5, Long.class)).isEqualTo(112);
     }
 
     @Test
     public void testDifferentOperation() {
-        assert_().that(template.requestBody("ignite:idgen:abc?operation=GET&initialValue=100", null, Long.class)).isEqualTo(100);
-        assert_().that(template.requestBodyAndHeader("ignite:idgen:abc?operation=GET_AND_INCREMENT&initialValue=100", null, IgniteConstants.IGNITE_IDGEN_OPERATION,
+        assert_().that(template.requestBody("ignite-idgen:abc?operation=GET&initialValue=100", null, Long.class)).isEqualTo(100);
+        assert_().that(template.requestBodyAndHeader("ignite-idgen:abc?operation=GET_AND_INCREMENT&initialValue=100", null, IgniteConstants.IGNITE_IDGEN_OPERATION,
                 IgniteIdGenOperation.INCREMENT_AND_GET, Long.class)).isEqualTo(101);
     }
 
     @Test
     public void testBatchSize() {
-        IgniteIdGenEndpoint endpoint = context.getEndpoint("ignite:idgen:abc?operation=GET&initialValue=100&batchSize=100", IgniteIdGenEndpoint.class);
+        IgniteIdGenEndpoint endpoint = context.getEndpoint("ignite-idgen:abc?operation=GET&initialValue=100&batchSize=100", IgniteIdGenEndpoint.class);
         assert_().that(template.requestBody(endpoint, null, Long.class)).isEqualTo(100);
 
         // Cannot test much here with a single Ignite instance, let's just test that the parameter could be set.

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteMessagingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteMessagingTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteMessagingTest.java
index a1cee04..a90de6d 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteMessagingTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteMessagingTest.java
@@ -30,6 +30,7 @@ import com.google.common.collect.Range;
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.component.ignite.messaging.IgniteMessagingComponent;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.junit.After;
 import org.junit.Test;
@@ -47,12 +48,22 @@ public class IgniteMessagingTest extends AbstractIgniteTest implements Serializa
     private static final String TOPIC2 = "TOPIC2";
     private UUID uuid;
 
+    @Override
+    protected String getScheme() {
+        return "ignite-messaging";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteMessagingComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testProducerSendMessage() {
         List<Object> messages = Lists.newArrayList();
         setupMessageListener(TOPIC1, messages);
 
-        template.requestBody("ignite:messaging:TOPIC1", 1);
+        template.requestBody("ignite-messaging:TOPIC1", 1);
 
         await().atMost(5, TimeUnit.SECONDS).untilCall(to(messages).size(), equalTo(1));
         assert_().that(messages.get(0)).isEqualTo(1);
@@ -66,7 +77,7 @@ public class IgniteMessagingTest extends AbstractIgniteTest implements Serializa
         List<Object> messages2 = Lists.newArrayList();
         setupMessageListener(TOPIC2, messages2);
 
-        template.requestBodyAndHeader("ignite:messaging:TOPIC1", 1, IgniteConstants.IGNITE_MESSAGING_TOPIC, "TOPIC2");
+        template.requestBodyAndHeader("ignite-messaging:TOPIC1", 1, IgniteConstants.IGNITE_MESSAGING_TOPIC, "TOPIC2");
 
         Thread.sleep(1000);
         assert_().that(messages1.size()).isEqualTo(0);
@@ -79,7 +90,7 @@ public class IgniteMessagingTest extends AbstractIgniteTest implements Serializa
         setupMessageListener(TOPIC1, messages);
 
         Set<Integer> request = ContiguousSet.create(Range.closedOpen(0, 100), DiscreteDomain.integers());
-        template.requestBody("ignite:messaging:TOPIC1", request);
+        template.requestBody("ignite-messaging:TOPIC1", request);
 
         await().atMost(5, TimeUnit.SECONDS).untilCall(to(messages).size(), equalTo(100));
         assert_().that(messages).containsAllIn(request);
@@ -92,7 +103,7 @@ public class IgniteMessagingTest extends AbstractIgniteTest implements Serializa
 
         ContiguousSet<Integer> set = ContiguousSet.create(Range.closedOpen(0, 100), DiscreteDomain.integers());
         for (int i : set) {
-            template.requestBody("ignite:messaging:TOPIC1?sendMode=ORDERED&timeout=1000", i);
+            template.requestBody("ignite-messaging:TOPIC1?sendMode=ORDERED&timeout=1000", i);
         }
 
         await().atMost(5, TimeUnit.SECONDS).untilCall(to(messages).size(), equalTo(100));
@@ -105,7 +116,7 @@ public class IgniteMessagingTest extends AbstractIgniteTest implements Serializa
         setupMessageListener(TOPIC1, messages);
 
         Set<Integer> request = ContiguousSet.create(Range.closedOpen(0, 100), DiscreteDomain.integers());
-        template.requestBody("ignite:messaging:TOPIC1?treatCollectionsAsCacheObjects=true", request);
+        template.requestBody("ignite-messaging:TOPIC1?treatCollectionsAsCacheObjects=true", request);
 
         await().atMost(5, TimeUnit.SECONDS).untilCall(to(messages).size(), equalTo(1));
         assert_().that(messages.get(0)).isEqualTo(request);
@@ -114,7 +125,7 @@ public class IgniteMessagingTest extends AbstractIgniteTest implements Serializa
     @Test
     public void testConsumerManyMessages() throws Exception {
         List<Object> messages = Lists.newArrayList();
-        Consumer consumer = context.getEndpoint("ignite:messaging:TOPIC1").createConsumer(storeBodyInListProcessor(messages));
+        Consumer consumer = context.getEndpoint("ignite-messaging:TOPIC1").createConsumer(storeBodyInListProcessor(messages));
         consumer.start();
 
         Set<Integer> messagesToSend = ContiguousSet.create(Range.closedOpen(0, 100), DiscreteDomain.integers());

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteQueueTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteQueueTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteQueueTest.java
index 77fb769..f1eb3f7 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteQueueTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteQueueTest.java
@@ -31,6 +31,7 @@ import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
+import org.apache.camel.component.ignite.queue.IgniteQueueComponent;
 import org.apache.camel.component.ignite.queue.IgniteQueueEndpoint;
 import org.apache.camel.component.ignite.queue.IgniteQueueOperation;
 import org.apache.camel.impl.JndiRegistry;
@@ -44,21 +45,31 @@ import static com.google.common.truth.Truth.assert_;
 
 public class IgniteQueueTest extends AbstractIgniteTest {
 
+    @Override
+    protected String getScheme() {
+        return "ignite-queue";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteQueueComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testOperations() {
-        boolean result = template.requestBody("ignite:queue:abc?operation=ADD", "hello", boolean.class);
+        boolean result = template.requestBody("ignite-queue:abc?operation=ADD", "hello", boolean.class);
         assert_().that(result).isTrue();
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).contains("hello")).isTrue();
 
-        result = template.requestBody("ignite:queue:abc?operation=CONTAINS", "hello", boolean.class);
+        result = template.requestBody("ignite-queue:abc?operation=CONTAINS", "hello", boolean.class);
         assert_().that(result).isTrue();
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).contains("hello")).isTrue();
 
-        result = template.requestBody("ignite:queue:abc?operation=REMOVE", "hello", boolean.class);
+        result = template.requestBody("ignite-queue:abc?operation=REMOVE", "hello", boolean.class);
         assert_().that(result).isTrue();
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).contains("hello")).isFalse();
 
-        result = template.requestBody("ignite:queue:abc?operation=CONTAINS", "hello", boolean.class);
+        result = template.requestBody("ignite-queue:abc?operation=CONTAINS", "hello", boolean.class);
         assert_().that(result).isFalse();
     }
 
@@ -66,11 +77,11 @@ public class IgniteQueueTest extends AbstractIgniteTest {
     @SuppressWarnings("unchecked")
     public void testOperations2() {
         for (int i = 0; i < 100; i++) {
-            template.requestBody("ignite:queue:abc?operation=ADD", "hello" + i);
+            template.requestBody("ignite-queue:abc?operation=ADD", "hello" + i);
         }
 
         // SIZE
-        int size = template.requestBody("ignite:queue:abc?operation=SIZE", "hello", int.class);
+        int size = template.requestBody("ignite-queue:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(100);
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).size()).isEqualTo(100);
 
@@ -80,29 +91,29 @@ public class IgniteQueueTest extends AbstractIgniteTest {
         }
 
         // RETAIN_ALL
-        boolean retained = template.requestBodyAndHeader("ignite:queue:abc?operation=CLEAR", toRetain, IgniteConstants.IGNITE_QUEUE_OPERATION, IgniteQueueOperation.RETAIN_ALL, boolean.class);
+        boolean retained = template.requestBodyAndHeader("ignite-queue:abc?operation=CLEAR", toRetain, IgniteConstants.IGNITE_QUEUE_OPERATION, IgniteQueueOperation.RETAIN_ALL, boolean.class);
         assert_().that(retained).isTrue();
 
         // SIZE
-        size = template.requestBody("ignite:queue:abc?operation=SIZE", "hello", int.class);
+        size = template.requestBody("ignite-queue:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(50);
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).size()).isEqualTo(50);
 
         // ITERATOR
-        Iterator<String> iterator = template.requestBody("ignite:queue:abc?operation=ITERATOR", "hello", Iterator.class);
+        Iterator<String> iterator = template.requestBody("ignite-queue:abc?operation=ITERATOR", "hello", Iterator.class);
         assert_().that(Iterators.toArray(iterator, String.class)).asList().containsExactlyElementsIn(toRetain).inOrder();
 
         // ARRAY
-        String[] array = template.requestBody("ignite:queue:abc?operation=ARRAY", "hello", String[].class);
+        String[] array = template.requestBody("ignite-queue:abc?operation=ARRAY", "hello", String[].class);
         assert_().that(array).asList().containsExactlyElementsIn(toRetain).inOrder();
 
         // CLEAR
-        Object result = template.requestBody("ignite:queue:abc?operation=CLEAR", "hello", String.class);
+        Object result = template.requestBody("ignite-queue:abc?operation=CLEAR", "hello", String.class);
         assert_().that(result).isEqualTo("hello");
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).size()).isEqualTo(0);
 
         // SIZE
-        size = template.requestBody("ignite:queue:abc?operation=SIZE", "hello", int.class);
+        size = template.requestBody("ignite-queue:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(0);
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).size()).isEqualTo(0);
     }
@@ -111,14 +122,14 @@ public class IgniteQueueTest extends AbstractIgniteTest {
     public void testRetainSingle() {
         // Fill data.
         for (int i = 0; i < 100; i++) {
-            template.requestBody("ignite:queue:abc?operation=ADD", "hello" + i);
+            template.requestBody("ignite-queue:abc?operation=ADD", "hello" + i);
         }
 
-        boolean retained = template.requestBody("ignite:queue:abc?operation=RETAIN_ALL", "hello10", boolean.class);
+        boolean retained = template.requestBody("ignite-queue:abc?operation=RETAIN_ALL", "hello10", boolean.class);
         assert_().that(retained).isTrue();
 
         // ARRAY
-        String[] array = template.requestBody("ignite:queue:abc?operation=ARRAY", "hello", String[].class);
+        String[] array = template.requestBody("ignite-queue:abc?operation=ARRAY", "hello", String[].class);
         assert_().that(array).asList().containsExactly("hello10");
     }
 
@@ -126,28 +137,28 @@ public class IgniteQueueTest extends AbstractIgniteTest {
     public void testCollectionsAsCacheObject() {
         // Fill data.
         for (int i = 0; i < 100; i++) {
-            template.requestBody("ignite:queue:abc?operation=ADD", "hello" + i);
+            template.requestBody("ignite-queue:abc?operation=ADD", "hello" + i);
         }
 
         // Add the set.
         Set<String> toAdd = Sets.newHashSet("hello101", "hello102", "hello103");
-        template.requestBody("ignite:queue:abc?operation=ADD&treatCollectionsAsCacheObjects=true", toAdd);
+        template.requestBody("ignite-queue:abc?operation=ADD&treatCollectionsAsCacheObjects=true", toAdd);
 
         // Size must be 101, not 103.
-        int size = template.requestBody("ignite:queue:abc?operation=SIZE", "hello", int.class);
+        int size = template.requestBody("ignite-queue:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(101);
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).size()).isEqualTo(101);
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).contains(toAdd)).isTrue();
 
         // Check whether the Set contains the Set.
-        boolean contains = template.requestBody("ignite:queue:abc?operation=CONTAINS&treatCollectionsAsCacheObjects=true", toAdd, boolean.class);
+        boolean contains = template.requestBody("ignite-queue:abc?operation=CONTAINS&treatCollectionsAsCacheObjects=true", toAdd, boolean.class);
         assert_().that(contains).isTrue();
 
         // Delete the Set.
-        template.requestBody("ignite:queue:abc?operation=REMOVE&treatCollectionsAsCacheObjects=true", toAdd);
+        template.requestBody("ignite-queue:abc?operation=REMOVE&treatCollectionsAsCacheObjects=true", toAdd);
 
         // Size must be 100 again.
-        size = template.requestBody("ignite:queue:abc?operation=SIZE", "hello", int.class);
+        size = template.requestBody("ignite-queue:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(100);
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).size()).isEqualTo(100);
         assert_().that(ignite().queue("abc", 0, new CollectionConfiguration()).contains(toAdd)).isFalse();
@@ -161,7 +172,7 @@ public class IgniteQueueTest extends AbstractIgniteTest {
 
         context.getRegistry(JndiRegistry.class).bind("config", configuration);
 
-        IgniteQueueEndpoint igniteEndpoint = context.getEndpoint("ignite:queue:abc?operation=ADD&configuration=#config", IgniteQueueEndpoint.class);
+        IgniteQueueEndpoint igniteEndpoint = context.getEndpoint("ignite-queue:abc?operation=ADD&configuration=#config", IgniteQueueEndpoint.class);
         template.requestBody(igniteEndpoint, "hello");
 
         assert_().that(ignite().queue("abc", 0, configuration).size()).isEqualTo(1);
@@ -174,19 +185,19 @@ public class IgniteQueueTest extends AbstractIgniteTest {
 
         // Fill data.
         for (int i = 0; i < 100; i++) {
-            template.requestBody("ignite:queue:def?operation=ADD&capacity=100", "hello" + i);
+            template.requestBody("ignite-queue:def?operation=ADD&capacity=100", "hello" + i);
             list.add("hello" + i);
         }
 
         // NOTE: Unfortunately the behaviour of IgniteQueue doesn't adhere to the overridden ADD method. It should return an Exception.
-        assert_().that(template.requestBody("ignite:queue:def?operation=ADD&capacity=100", "hello101", boolean.class)).isFalse();
-        assert_().that(template.requestBody("ignite:queue:def?operation=OFFER&capacity=100", "hello101", boolean.class)).isFalse();
+        assert_().that(template.requestBody("ignite-queue:def?operation=ADD&capacity=100", "hello101", boolean.class)).isFalse();
+        assert_().that(template.requestBody("ignite-queue:def?operation=OFFER&capacity=100", "hello101", boolean.class)).isFalse();
 
         final CountDownLatch latch = new CountDownLatch(1);
         Thread t = new Thread(new Runnable() {
             @Override
             public void run() {
-                assert_().that(template.requestBody("ignite:queue:def?operation=PUT&capacity=100", "hello101", boolean.class)).isFalse();
+                assert_().that(template.requestBody("ignite-queue:def?operation=PUT&capacity=100", "hello101", boolean.class)).isFalse();
                 latch.countDown();
             }
         });
@@ -198,23 +209,23 @@ public class IgniteQueueTest extends AbstractIgniteTest {
         t.interrupt();
 
         // PEEK and ELEMENT.
-        assert_().that(template.requestBody("ignite:queue:def?operation=PEEK&capacity=100", null, String.class)).isEqualTo("hello0");
-        assert_().that(template.requestBody("ignite:queue:def?operation=ELEMENT&capacity=100", null, String.class)).isEqualTo("hello0");
+        assert_().that(template.requestBody("ignite-queue:def?operation=PEEK&capacity=100", null, String.class)).isEqualTo("hello0");
+        assert_().that(template.requestBody("ignite-queue:def?operation=ELEMENT&capacity=100", null, String.class)).isEqualTo("hello0");
 
         // TAKE.
-        assert_().that(template.requestBody("ignite:queue:def?operation=TAKE&capacity=100", null, String.class)).isEqualTo("hello0");
-        assert_().that(template.requestBody("ignite:queue:def?operation=SIZE&capacity=100", null, int.class)).isEqualTo(99);
+        assert_().that(template.requestBody("ignite-queue:def?operation=TAKE&capacity=100", null, String.class)).isEqualTo("hello0");
+        assert_().that(template.requestBody("ignite-queue:def?operation=SIZE&capacity=100", null, int.class)).isEqualTo(99);
 
         // Now drain.
-        assert_().that(template.requestBody("ignite:queue:def?operation=DRAIN&capacity=100", null, String[].class)).asList().hasSize(99);
-        assert_().that(template.requestBody("ignite:queue:def?operation=SIZE&capacity=100", null, int.class)).isEqualTo(0);
-        assert_().that(template.requestBody("ignite:queue:def?operation=POLL&capacity=100", null, String.class)).isNull();
+        assert_().that(template.requestBody("ignite-queue:def?operation=DRAIN&capacity=100", null, String[].class)).asList().hasSize(99);
+        assert_().that(template.requestBody("ignite-queue:def?operation=SIZE&capacity=100", null, int.class)).isEqualTo(0);
+        assert_().that(template.requestBody("ignite-queue:def?operation=POLL&capacity=100", null, String.class)).isNull();
 
         // TAKE.
         t = new Thread(new Runnable() {
             @Override
             public void run() {
-                assert_().that(template.requestBody("ignite:queue:def?operation=TAKE&capacity=100", null, String.class)).isEqualTo("hello102");
+                assert_().that(template.requestBody("ignite-queue:def?operation=TAKE&capacity=100", null, String.class)).isEqualTo("hello102");
                 latch.countDown();
             }
         });
@@ -222,7 +233,7 @@ public class IgniteQueueTest extends AbstractIgniteTest {
         t.start();
 
         // Element was returned.
-        assert_().that(template.requestBody("ignite:queue:def?operation=ADD&capacity=100", "hello102", boolean.class)).isTrue();
+        assert_().that(template.requestBody("ignite-queue:def?operation=ADD&capacity=100", "hello102", boolean.class)).isTrue();
         assert_().that(latch.await(1000, TimeUnit.MILLISECONDS)).isTrue();
 
         // POLL with a timeout.
@@ -230,7 +241,7 @@ public class IgniteQueueTest extends AbstractIgniteTest {
             @Override
             public Long call() throws Exception {
                 Stopwatch sw = Stopwatch.createStarted();
-                assert_().that(template.requestBody("ignite:queue:def?operation=POLL&timeoutMillis=1000&capacity=100", null, String.class)).isNull();
+                assert_().that(template.requestBody("ignite-queue:def?operation=POLL&timeoutMillis=1000&capacity=100", null, String.class)).isNull();
                 return sw.elapsed(TimeUnit.MILLISECONDS);
             }
         }).get()).isAtLeast(1000L);

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteSetTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteSetTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteSetTest.java
index 3c3c627..edb96ba 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteSetTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteSetTest.java
@@ -25,6 +25,7 @@ import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
+import org.apache.camel.component.ignite.set.IgniteSetComponent;
 import org.apache.camel.component.ignite.set.IgniteSetEndpoint;
 import org.apache.camel.component.ignite.set.IgniteSetOperation;
 import org.apache.camel.impl.JndiRegistry;
@@ -37,21 +38,31 @@ import static com.google.common.truth.Truth.assert_;
 
 public class IgniteSetTest extends AbstractIgniteTest {
 
+    @Override
+    protected String getScheme() {
+        return "ignite-set";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteSetComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testOperations() {
-        boolean result = template.requestBody("ignite:set:abc?operation=ADD", "hello", boolean.class);
+        boolean result = template.requestBody("ignite-set:abc?operation=ADD", "hello", boolean.class);
         assert_().that(result).isTrue();
         assert_().that(ignite().set("abc", new CollectionConfiguration()).contains("hello")).isTrue();
 
-        result = template.requestBody("ignite:set:abc?operation=CONTAINS", "hello", boolean.class);
+        result = template.requestBody("ignite-set:abc?operation=CONTAINS", "hello", boolean.class);
         assert_().that(result).isTrue();
         assert_().that(ignite().set("abc", new CollectionConfiguration()).contains("hello")).isTrue();
 
-        result = template.requestBody("ignite:set:abc?operation=REMOVE", "hello", boolean.class);
+        result = template.requestBody("ignite-set:abc?operation=REMOVE", "hello", boolean.class);
         assert_().that(result).isTrue();
         assert_().that(ignite().set("abc", new CollectionConfiguration()).contains("hello")).isFalse();
 
-        result = template.requestBody("ignite:set:abc?operation=CONTAINS", "hello", boolean.class);
+        result = template.requestBody("ignite-set:abc?operation=CONTAINS", "hello", boolean.class);
         assert_().that(result).isFalse();
     }
 
@@ -59,11 +70,11 @@ public class IgniteSetTest extends AbstractIgniteTest {
     @SuppressWarnings("unchecked")
     public void testOperations2() {
         for (int i = 0; i < 100; i++) {
-            template.requestBody("ignite:set:abc?operation=ADD", "hello" + i);
+            template.requestBody("ignite-set:abc?operation=ADD", "hello" + i);
         }
 
         // SIZE
-        int size = template.requestBody("ignite:set:abc?operation=SIZE", "hello", int.class);
+        int size = template.requestBody("ignite-set:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(100);
         assert_().that(ignite().set("abc", new CollectionConfiguration()).size()).isEqualTo(100);
 
@@ -73,29 +84,29 @@ public class IgniteSetTest extends AbstractIgniteTest {
         }
 
         // RETAIN_ALL
-        boolean retained = template.requestBodyAndHeader("ignite:set:abc?operation=CLEAR", toRetain, IgniteConstants.IGNITE_SETS_OPERATION, IgniteSetOperation.RETAIN_ALL, boolean.class);
+        boolean retained = template.requestBodyAndHeader("ignite-set:abc?operation=CLEAR", toRetain, IgniteConstants.IGNITE_SETS_OPERATION, IgniteSetOperation.RETAIN_ALL, boolean.class);
         assert_().that(retained).isTrue();
 
         // SIZE
-        size = template.requestBody("ignite:set:abc?operation=SIZE", "hello", int.class);
+        size = template.requestBody("ignite-set:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(50);
         assert_().that(ignite().set("abc", new CollectionConfiguration()).size()).isEqualTo(50);
 
         // ITERATOR
-        Iterator<String> iterator = template.requestBody("ignite:set:abc?operation=ITERATOR", "hello", Iterator.class);
+        Iterator<String> iterator = template.requestBody("ignite-set:abc?operation=ITERATOR", "hello", Iterator.class);
         assert_().that(Iterators.toArray(iterator, String.class)).asList().containsExactlyElementsIn(toRetain);
 
         // ARRAY
-        String[] array = template.requestBody("ignite:set:abc?operation=ARRAY", "hello", String[].class);
+        String[] array = template.requestBody("ignite-set:abc?operation=ARRAY", "hello", String[].class);
         assert_().that(array).asList().containsExactlyElementsIn(toRetain);
 
         // CLEAR
-        Object result = template.requestBody("ignite:set:abc?operation=CLEAR", "hello", String.class);
+        Object result = template.requestBody("ignite-set:abc?operation=CLEAR", "hello", String.class);
         assert_().that(result).isEqualTo("hello");
         assert_().that(ignite().set("abc", new CollectionConfiguration()).size()).isEqualTo(0);
 
         // SIZE
-        size = template.requestBody("ignite:set:abc?operation=SIZE", "hello", int.class);
+        size = template.requestBody("ignite-set:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(0);
         assert_().that(ignite().set("abc", new CollectionConfiguration()).size()).isEqualTo(0);
     }
@@ -104,14 +115,14 @@ public class IgniteSetTest extends AbstractIgniteTest {
     public void testRetainSingle() {
         // Fill data.
         for (int i = 0; i < 100; i++) {
-            template.requestBody("ignite:set:abc?operation=ADD", "hello" + i);
+            template.requestBody("ignite-set:abc?operation=ADD", "hello" + i);
         }
 
-        boolean retained = template.requestBody("ignite:set:abc?operation=RETAIN_ALL", "hello10", boolean.class);
+        boolean retained = template.requestBody("ignite-set:abc?operation=RETAIN_ALL", "hello10", boolean.class);
         assert_().that(retained).isTrue();
 
         // ARRAY
-        String[] array = template.requestBody("ignite:set:abc?operation=ARRAY", "hello", String[].class);
+        String[] array = template.requestBody("ignite-set:abc?operation=ARRAY", "hello", String[].class);
         assert_().that(array).asList().containsExactly("hello10");
     }
 
@@ -119,28 +130,28 @@ public class IgniteSetTest extends AbstractIgniteTest {
     public void testCollectionsAsCacheObject() {
         // Fill data.
         for (int i = 0; i < 100; i++) {
-            template.requestBody("ignite:set:abc?operation=ADD", "hello" + i);
+            template.requestBody("ignite-set:abc?operation=ADD", "hello" + i);
         }
 
         // Add the set.
         Set<String> toAdd = Sets.newHashSet("hello101", "hello102", "hello103");
-        template.requestBody("ignite:set:abc?operation=ADD&treatCollectionsAsCacheObjects=true", toAdd);
+        template.requestBody("ignite-set:abc?operation=ADD&treatCollectionsAsCacheObjects=true", toAdd);
 
         // Size must be 101, not 103.
-        int size = template.requestBody("ignite:set:abc?operation=SIZE", "hello", int.class);
+        int size = template.requestBody("ignite-set:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(101);
         assert_().that(ignite().set("abc", new CollectionConfiguration()).size()).isEqualTo(101);
         assert_().that(ignite().set("abc", new CollectionConfiguration()).contains(toAdd)).isTrue();
 
         // Check whether the Set contains the Set.
-        boolean contains = template.requestBody("ignite:set:abc?operation=CONTAINS&treatCollectionsAsCacheObjects=true", toAdd, boolean.class);
+        boolean contains = template.requestBody("ignite-set:abc?operation=CONTAINS&treatCollectionsAsCacheObjects=true", toAdd, boolean.class);
         assert_().that(contains).isTrue();
 
         // Delete the Set.
-        template.requestBody("ignite:set:abc?operation=REMOVE&treatCollectionsAsCacheObjects=true", toAdd);
+        template.requestBody("ignite-set:abc?operation=REMOVE&treatCollectionsAsCacheObjects=true", toAdd);
 
         // Size must be 100 again.
-        size = template.requestBody("ignite:set:abc?operation=SIZE", "hello", int.class);
+        size = template.requestBody("ignite-set:abc?operation=SIZE", "hello", int.class);
         assert_().that(size).isEqualTo(100);
         assert_().that(ignite().set("abc", new CollectionConfiguration()).size()).isEqualTo(100);
         assert_().that(ignite().set("abc", new CollectionConfiguration()).contains(toAdd)).isFalse();
@@ -154,7 +165,8 @@ public class IgniteSetTest extends AbstractIgniteTest {
 
         context.getRegistry(JndiRegistry.class).bind("config", configuration);
 
-        IgniteSetEndpoint igniteEndpoint = context.getEndpoint("ignite:set:abc?operation=ADD&configuration=#config", IgniteSetEndpoint.class);
+        IgniteSetEndpoint igniteEndpoint = context.getEndpoint("ignite-"
+            + "set:abc?operation=ADD&configuration=#config", IgniteSetEndpoint.class);
         template.requestBody(igniteEndpoint, "hello");
 
         assert_().that(ignite().set("abc", configuration).size()).isEqualTo(1);

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/resources/log4j2.properties
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/resources/log4j2.properties b/components/camel-ignite/src/test/resources/log4j2.properties
index f982316..3e63da5 100644
--- a/components/camel-ignite/src/test/resources/log4j2.properties
+++ b/components/camel-ignite/src/test/resources/log4j2.properties
@@ -17,7 +17,7 @@
 
 appender.file.type = File
 appender.file.name = file
-appender.file.fileName = target/camel-mongodb-test.log
+appender.file.fileName = target/camel-ignite-test.log
 appender.file.layout.type = PatternLayout
 appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
 appender.out.type = Console

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/readme.adoc
----------------------------------------------------------------------
diff --git a/components/readme.adoc b/components/readme.adoc
index 09c9bf1..2c3bb8f 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -2,7 +2,7 @@ Components
 ^^^^^^^^^^
 
 // components: START
-Number of Components: 231 in 184 JAR artifacts (14 deprecated)
+Number of Components: 238 in 185 JAR artifacts (14 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |=======================================================================
@@ -293,6 +293,27 @@ Number of Components: 231 in 184 JAR artifacts (14 deprecated)
 | link:camel-ibatis/src/main/docs/ibatis-component.adoc[iBatis] (camel-ibatis) +
 `ibatis:statement` | 1.2 | *deprecated* Performs a query poll insert update or delete in a relational database using Apache iBATIS.
 
+| link:camel-ignite/src/main/docs/ignite-cache-component.adoc[Ignite Cache] (camel-ignite) +
+`ignite-cache:[cacheName]` | 2.17 | Ignite Cache endpoint.
+
+| link:camel-ignite/src/main/docs/ignite-compute-component.adoc[Ignite Compute] (camel-ignite) +
+`ignite-compute:[endpointId]` | 2.17 | Ignite Compute endpoint.
+
+| link:camel-ignite/src/main/docs/ignite-events-component.adoc[Ignite Events] (camel-ignite) +
+`ignite-events:[endpointId]` | 2.17 | Ignite Events endpoint. Only supports consumers.
+
+| link:camel-ignite/src/main/docs/ignite-idgen-component.adoc[Ignite ID Generator] (camel-ignite) +
+`ignite-idgen:[name]` | 2.17 | Ignite ID Generator endpoint.
+
+| link:camel-ignite/src/main/docs/ignite-messaging-component.adoc[Ignite Messaging] (camel-ignite) +
+`ignite-messaging:[topic]` | 2.17 | Ignite Messaging endpoint.
+
+| link:camel-ignite/src/main/docs/ignite-queue-component.adoc[Ignite Queues] (camel-ignite) +
+`ignite-queue:[name]` | 2.17 | Ignite Queue endpoint.
+
+| link:camel-ignite/src/main/docs/ignite-set-component.adoc[Ignite Sets] (camel-ignite) +
+`ignite-set:[name]` | 2.17 | Ignite Set endpoint.
+
 | link:camel-infinispan/src/main/docs/infinispan-component.adoc[Infinispan] (camel-infinispan) +
 `infinispan:cacheName` | 2.13 | For reading/writing from/to Infinispan distributed key/value store and data grid.
 

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 25968df..c0787de 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -209,6 +209,13 @@
  * [HTTP](http-component.adoc)
  * [HTTP4](http4-component.adoc)
  * [iBatis](ibatis-component.adoc)
+ * [Ignite Cache](ignite-cache-component.adoc)
+ * [Ignite Compute](ignite-compute-component.adoc)
+ * [Ignite Events](ignite-events-component.adoc)
+ * [Ignite ID Generator](ignite-idgen-component.adoc)
+ * [Ignite Messaging](ignite-messaging-component.adoc)
+ * [Ignite Queues](ignite-queue-component.adoc)
+ * [Ignite Sets](ignite-set-component.adoc)
  * [IMAP](imap-component.adoc)
  * [Infinispan](infinispan-component.adoc)
  * [InfluxDB](influxdb-component.adoc)

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentAutoConfiguration.java
new file mode 100644
index 0000000..211fc3e
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentAutoConfiguration.java
@@ -0,0 +1,114 @@
+/**
+ * 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.component.ignite.cache.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ignite.cache.IgniteCacheComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(IgniteCacheComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(IgniteCacheComponentConfiguration.class)
+public class IgniteCacheComponentAutoConfiguration {
+
+    @Lazy
+    @Bean(name = "ignite-cache-component")
+    @ConditionalOnClass(CamelContext.class)
+    @ConditionalOnMissingBean(IgniteCacheComponent.class)
+    public IgniteCacheComponent configureIgniteCacheComponent(
+            CamelContext camelContext,
+            IgniteCacheComponentConfiguration configuration) throws Exception {
+        IgniteCacheComponent component = new IgniteCacheComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        IntrospectionSupport.setProperties(camelContext,
+                camelContext.getTypeConverter(), component, parameters);
+        return component;
+    }
+
+    @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.ignite-cache");
+            if (isEnabled(conditionContext, "camel.component.ignite-cache.",
+                    groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java
new file mode 100644
index 0000000..5e41e4b
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/cache/springboot/IgniteCacheComponentConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * 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.component.ignite.cache.springboot;
+
+import javax.annotation.Generated;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * Ignite Cache endpoint.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ignite-cache")
+public class IgniteCacheComponentConfiguration {
+
+    /**
+     * Sets the Ignite instance.
+     */
+    @NestedConfigurationProperty
+    private Ignite ignite;
+    /**
+     * Sets the resource from where to load the configuration. It can be a: URI
+     * String (URI) or an InputStream.
+     */
+    private Object configurationResource;
+    /**
+     * Allows the user to set a programmatic IgniteConfiguration.
+     */
+    @NestedConfigurationProperty
+    private IgniteConfiguration igniteConfiguration;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentAutoConfiguration.java
new file mode 100644
index 0000000..731d594
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentAutoConfiguration.java
@@ -0,0 +1,114 @@
+/**
+ * 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.component.ignite.compute.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ignite.compute.IgniteComputeComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(IgniteComputeComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(IgniteComputeComponentConfiguration.class)
+public class IgniteComputeComponentAutoConfiguration {
+
+    @Lazy
+    @Bean(name = "ignite-compute-component")
+    @ConditionalOnClass(CamelContext.class)
+    @ConditionalOnMissingBean(IgniteComputeComponent.class)
+    public IgniteComputeComponent configureIgniteComputeComponent(
+            CamelContext camelContext,
+            IgniteComputeComponentConfiguration configuration) throws Exception {
+        IgniteComputeComponent component = new IgniteComputeComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        IntrospectionSupport.setProperties(camelContext,
+                camelContext.getTypeConverter(), component, parameters);
+        return component;
+    }
+
+    @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.ignite-compute");
+            if (isEnabled(conditionContext, "camel.component.ignite-compute.",
+                    groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java
new file mode 100644
index 0000000..920de79
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/compute/springboot/IgniteComputeComponentConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * 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.component.ignite.compute.springboot;
+
+import javax.annotation.Generated;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * Ignite Compute endpoint.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ignite-compute")
+public class IgniteComputeComponentConfiguration {
+
+    /**
+     * Sets the Ignite instance.
+     */
+    @NestedConfigurationProperty
+    private Ignite ignite;
+    /**
+     * Sets the resource from where to load the configuration. It can be a: URI
+     * String (URI) or an InputStream.
+     */
+    private Object configurationResource;
+    /**
+     * Allows the user to set a programmatic IgniteConfiguration.
+     */
+    @NestedConfigurationProperty
+    private IgniteConfiguration igniteConfiguration;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentAutoConfiguration.java
new file mode 100644
index 0000000..a91d8a6
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentAutoConfiguration.java
@@ -0,0 +1,114 @@
+/**
+ * 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.component.ignite.events.springboot;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ignite.events.IgniteEventsComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(IgniteEventsComponentAutoConfiguration.Condition.class)
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties(IgniteEventsComponentConfiguration.class)
+public class IgniteEventsComponentAutoConfiguration {
+
+    @Lazy
+    @Bean(name = "ignite-events-component")
+    @ConditionalOnClass(CamelContext.class)
+    @ConditionalOnMissingBean(IgniteEventsComponent.class)
+    public IgniteEventsComponent configureIgniteEventsComponent(
+            CamelContext camelContext,
+            IgniteEventsComponentConfiguration configuration) throws Exception {
+        IgniteEventsComponent component = new IgniteEventsComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        IntrospectionSupport.setProperties(camelContext,
+                camelContext.getTypeConverter(), component, parameters);
+        return component;
+    }
+
+    @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.ignite-events");
+            if (isEnabled(conditionContext, "camel.component.ignite-events.",
+                    groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java
new file mode 100644
index 0000000..db3ff99
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ignite-starter/src/main/java/org/apache/camel/component/ignite/events/springboot/IgniteEventsComponentConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * 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.component.ignite.events.springboot;
+
+import javax.annotation.Generated;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * Ignite Events endpoint. Only supports consumers.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ignite-events")
+public class IgniteEventsComponentConfiguration {
+
+    /**
+     * Sets the Ignite instance.
+     */
+    @NestedConfigurationProperty
+    private Ignite ignite;
+    /**
+     * Sets the resource from where to load the configuration. It can be a: URI
+     * String (URI) or an InputStream.
+     */
+    private Object configurationResource;
+    /**
+     * Allows the user to set a programmatic IgniteConfiguration.
+     */
+    @NestedConfigurationProperty
+    private IgniteConfiguration igniteConfiguration;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[4/5] camel git commit: CAMEL-10798 Splitted camel-ignite component for each endpoint

acosentino
In reply to this post by acosentino
http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
index d6a3049..b31cbb6 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheEndpoint.java
@@ -25,11 +25,13 @@ import org.apache.camel.CamelException;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
 import org.apache.camel.component.ignite.AbstractIgniteEndpoint;
 import org.apache.camel.component.ignite.IgniteComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.CacheEntryEventSerializableFilter;
 import org.apache.ignite.cache.CachePeekMode;
@@ -39,48 +41,54 @@ import org.apache.ignite.cache.query.Query;
 /**
  * Ignite Cache endpoint.
  */
-@UriEndpoint(scheme = "ignite:cache", title = "Ignite Cache", syntax = "ignite:cache:[cacheName]", label = "nosql,cache,compute",
+@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-cache", title = "Ignite Cache", syntax = "ignite-cache:[cacheName]", label = "nosql,cache,compute",
     consumerClass = IgniteCacheContinuousQueryConsumer.class)
 public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
 
-    @UriParam @Metadata(required = "true")
+    @UriPath @Metadata(required = "true")
     private String cacheName;
 
-    @UriParam
+    @UriParam(label = "producer")
     private IgniteCacheOperation operation;
 
-    @UriParam
+    @UriParam(label = "producer", defaultValue = "false")
     private boolean failIfInexistentCache;
 
-    @UriParam
+    @UriParam(label = "producer", defaultValue = "ALL")
     private CachePeekMode cachePeekMode = CachePeekMode.ALL;
 
-    @UriParam
+    @UriParam(label = "producer,consumer")
     private Query<Entry<Object, Object>> query;
 
-    @UriParam
+    @UriParam(label = "consumer")
     private CacheEntryEventSerializableFilter<Object, Object> remoteFilter;
 
-    @UriParam
+    @UriParam(label = "consumer", defaultValue = "true")
     private boolean oneExchangePerUpdate = true;
 
-    @UriParam
+    @UriParam(label = "consumer", defaultValue = "false")
     private boolean fireExistingQueryResults;
 
-    @UriParam
+    @UriParam(label = "consumer", defaultValue = "true", defaultValueNote = "ContinuousQuery.DFLT_AUTO_UNSUBSCRIBE")
     private boolean autoUnsubscribe = ContinuousQuery.DFLT_AUTO_UNSUBSCRIBE;
 
-    @UriParam
+    @UriParam(label = "consumer", defaultValue = "1", defaultValueNote = "ContinuousQuery.DFLT_PAGE_SIZE")
     private int pageSize = ContinuousQuery.DFLT_PAGE_SIZE;
 
-    @UriParam
+    @UriParam(label = "consumer", defaultValue = "0", defaultValueNote = "ContinuousQuery.DFLT_TIME_INTERVAL")
     private long timeInterval = ContinuousQuery.DFLT_TIME_INTERVAL;
 
+    @Deprecated
     public IgniteCacheEndpoint(String endpointUri, URI remainingUri, Map<String, Object> parameters, IgniteComponent igniteComponent) {
         super(endpointUri, igniteComponent);
         cacheName = remainingUri.getHost();
     }
 
+    public IgniteCacheEndpoint(String endpointUri, String remaining, Map<String, Object> parameters, IgniteCacheComponent igniteComponent) {
+        super(endpointUri, igniteComponent);
+        cacheName = remaining;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         return new IgniteCacheProducer(this, obtainCache());
@@ -113,9 +121,9 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the cache name.
+     * The cache name.
      *
-     * @param cacheName
+     * @param cacheName cache name
      */
     public void setCacheName(String cacheName) {
         this.cacheName = cacheName;
@@ -124,14 +132,15 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     /**
      * Gets the cache operation to invoke.
      *
-     * @return
+     * @return cache name
      */
     public IgniteCacheOperation getOperation() {
         return operation;
     }
 
     /**
-     * Sets the cache operation to invoke.
+     * The cache operation to invoke.
+     * <p>Possible values: GET, PUT, REMOVE, SIZE, REBALANCE, QUERY, CLEAR.</p>
      *
      * @param operation
      */
@@ -140,7 +149,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Gets whether to fail the initialization if the cache doesn't exist.
+     * Whether to fail the initialization if the cache doesn't exist.
      *
      * @return
      */
@@ -149,7 +158,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets whether to fail the initialization if the cache doesn't exist.
+     * Whether to fail the initialization if the cache doesn't exist.
      *
      * @param failIfInexistentCache
      */
@@ -167,7 +176,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the {@link CachePeekMode}, only needed for operations that require it ({@link IgniteCacheOperation#SIZE}).
+     * The {@link CachePeekMode}, only needed for operations that require it ({@link IgniteCacheOperation#SIZE}).
      *
      * @param cachePeekMode
      */
@@ -186,7 +195,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the query to execute, only needed for operations that require it,
+     * The {@link Query} to execute, only needed for operations that require it,
      * and for the Continuous Query Consumer.
      *
      * @param query
@@ -205,7 +214,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the remote filter, only used by the Continuous Query Consumer.
+     * The remote filter, only used by the Continuous Query Consumer.
      *
      * @param remoteFilter
      */
@@ -224,7 +233,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets whether to pack each update in an individual Exchange, even if multiple updates are
+     * Whether to pack each update in an individual Exchange, even if multiple updates are
      * received in one batch. Only used by the Continuous Query Consumer.
      *
      * @param oneExchangePerUpdate
@@ -243,7 +252,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets whether auto unsubscribe is enabled in the Continuous Query Consumer.
+     * Whether auto unsubscribe is enabled in the Continuous Query Consumer.
      *
      * @param autoUnsubscribe
      */
@@ -261,7 +270,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the page size. Only used by the Continuous Query Consumer.
+     * The page size. Only used by the Continuous Query Consumer.
      *
      * @param pageSize
      */
@@ -280,7 +289,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets whether to process existing results that match the query. Used on initialization of
+     * Whether to process existing results that match the query. Used on initialization of
      * the Continuous Query Consumer.
      *
      * @param fireExistingQueryResults
@@ -299,7 +308,7 @@ public class IgniteCacheEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the time interval for the Continuous Query Consumer.
+     * The time interval for the Continuous Query Consumer.
      *
      * @param timeInterval
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java
new file mode 100644
index 0000000..e182182
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java
@@ -0,0 +1,78 @@
+/**
+ * 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.component.ignite.compute;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite Compute Component.
+ */
+public class IgniteComputeComponent extends AbstractIgniteComponent {
+
+    public static IgniteComputeComponent fromIgnite(Ignite ignite) {
+        IgniteComputeComponent answer = new IgniteComputeComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteComputeComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteComputeComponent answer = new IgniteComputeComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteComputeComponent fromInputStream(InputStream inputStream) {
+        IgniteComputeComponent answer = new IgniteComputeComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteComputeComponent fromUrl(URL url) {
+        IgniteComputeComponent answer = new IgniteComputeComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteComputeComponent fromLocation(String location) {
+        IgniteComputeComponent answer = new IgniteComputeComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteComputeEndpoint answer = new IgniteComputeEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
index d6a3eb2..bdaa8c7 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeEndpoint.java
@@ -25,36 +25,46 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.ignite.AbstractIgniteEndpoint;
 import org.apache.camel.component.ignite.ClusterGroupExpression;
 import org.apache.camel.component.ignite.IgniteComponent;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCompute;
 
 /**
  * Ignite Compute endpoint.
  */
-@UriEndpoint(scheme = "ignite:compute", title = "Ignite Compute", syntax = "ignite:compute:[endpointId]", label = "nosql,cache,compute", producerOnly = true)
+@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-compute", title = "Ignite Compute", syntax = "ignite-compute:[endpointId]", label = "nosql,cache,compute", producerOnly = true)
 public class IgniteComputeEndpoint extends AbstractIgniteEndpoint {
 
-    @UriParam
+    @UriPath @Metadata(required = "true")
+    private String endpointId;
+
+    @UriParam(label = "producer")
     private ClusterGroupExpression clusterGroupExpression;
 
-    @UriParam
+    @UriParam(label = "producer") @Metadata(required = "true")
     private IgniteComputeExecutionType executionType;
 
-    @UriParam
+    @UriParam(label = "producer")
     private String taskName;
 
-    @UriParam
+    @UriParam(label = "producer")
     private String computeName;
 
-    @UriParam
+    @UriParam(label = "producer")
     private Long timeoutMillis;
 
+    @Deprecated
     public IgniteComputeEndpoint(String uri, URI remainingUri, Map<String, Object> parameters, IgniteComponent igniteComponent) throws ClassNotFoundException {
         super(uri, igniteComponent);
     }
 
+    public IgniteComputeEndpoint(String uri, String remaining, Map<String, Object> parameters, IgniteComputeComponent igniteComponent) throws ClassNotFoundException {
+        super(uri, igniteComponent);
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         return new IgniteComputeProducer(this);
@@ -81,6 +91,42 @@ public class IgniteComputeEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
+     * Gets the endpoint ID.
+     *
+     * @return endpoint ID (not used)
+     */
+    public String getEndpointId() {
+        return endpointId;
+    }
+
+    /**
+     * The endpoint ID (not used).
+     *
+     * @param endpointId endpoint ID (not used)
+     */
+    public void setEndpointId(String endpointId) {
+        this.endpointId = endpointId;
+    }
+
+    /**
+     * Gets the cluster group expression.
+     *
+     * @return cluster group expression
+     */
+    public ClusterGroupExpression getClusterGroupExpression() {
+        return clusterGroupExpression;
+    }
+
+    /**
+     * An expression that returns the Cluster Group for the IgniteCompute instance.
+     *
+     * @param clusterGroupExpression cluster group expression
+     */
+    public void setClusterGroupExpression(ClusterGroupExpression clusterGroupExpression) {
+        this.clusterGroupExpression = clusterGroupExpression;
+    }
+
+    /**
      * Gets the execution type of this producer.
      *
      * @return
@@ -90,7 +136,9 @@ public class IgniteComputeEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the execution type of this producer.
+     * The compute operation to perform. Possible values: CALL, BROADCAST, APPLY,
+     *  EXECUTE, RUN, AFFINITY_CALL, AFFINITY_RUN.
+     * The component expects different payload types depending on the operation.
      *
      * @param executionType
      */
@@ -108,7 +156,7 @@ public class IgniteComputeEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the task name, only applicable if using the {@link IgniteComputeExecutionType#EXECUTE} execution type.
+     * The task name, only applicable if using the {@link IgniteComputeExecutionType#EXECUTE} execution type.
      *
      * @param taskName
      */
@@ -126,7 +174,7 @@ public class IgniteComputeEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the name of the compute job, which will be set via {@link IgniteCompute#withName(String)}.
+     * The name of the compute job, which will be set via {@link IgniteCompute#withName(String)}.
      *
      * @param computeName
      */
@@ -144,7 +192,7 @@ public class IgniteComputeEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the timeout interval for triggered jobs, in milliseconds, which will be set via {@link IgniteCompute#withTimeout(long)}.
+     * The timeout interval for triggered jobs, in milliseconds, which will be set via {@link IgniteCompute#withTimeout(long)}.
      *
      * @param timeoutMillis
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java
new file mode 100644
index 0000000..b0fced0
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java
@@ -0,0 +1,78 @@
+/**
+ * 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.component.ignite.events;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite Events Component.
+ */
+public class IgniteEventsComponent extends AbstractIgniteComponent {
+
+    public static IgniteEventsComponent fromIgnite(Ignite ignite) {
+        IgniteEventsComponent answer = new IgniteEventsComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteEventsComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteEventsComponent answer = new IgniteEventsComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteEventsComponent fromInputStream(InputStream inputStream) {
+        IgniteEventsComponent answer = new IgniteEventsComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteEventsComponent fromUrl(URL url) {
+        IgniteEventsComponent answer = new IgniteEventsComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteEventsComponent fromLocation(String location) {
+        IgniteEventsComponent answer = new IgniteEventsComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteEventsEndpoint answer = new IgniteEventsEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
index 1d48a30..d926f95 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
@@ -31,6 +31,7 @@ import org.apache.camel.component.ignite.ClusterGroupExpression;
 import org.apache.camel.component.ignite.IgniteComponent;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteEvents;
 import org.apache.ignite.cluster.ClusterGroup;
@@ -41,18 +42,22 @@ import org.slf4j.LoggerFactory;
 /**
  * Ignite Events endpoint. Only supports consumers.
  */
-@UriEndpoint(scheme = "ignite:events", title = "Ignite Events", syntax = "ignite:events:[endpointId]", label = "nosql,cache,compute,messaging,data",
+@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-events", title = "Ignite Events", syntax = "ignite-events:[endpointId]", label = "nosql,cache,compute,messaging,data",
     consumerOnly = true, consumerClass = IgniteEventsConsumer.class)
 public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
 
     private static final Logger LOG = LoggerFactory.getLogger(IgniteEventsEndpoint.class);
 
-    @UriParam
+    @UriPath
+    private String endpointId;
+
+    @UriParam(label = "consumer", javaType = "Set<Integer> or String", defaultValue = "EventType.EVTS_ALL")
     private Set<Integer> events;
 
-    @UriParam
+    @UriParam(label = "consumer")
     private ClusterGroupExpression clusterGroupExpression;
 
+    @Deprecated
     public IgniteEventsEndpoint(String uri, URI remainingUri, Map<String, Object> parameters, IgniteComponent igniteComponent) {
         super(uri, igniteComponent);
 
@@ -63,6 +68,16 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
         }
     }
 
+    public IgniteEventsEndpoint(String uri, String remaining, Map<String, Object> parameters, IgniteEventsComponent igniteComponent) {
+        super(uri, igniteComponent);
+
+        // Initialize subscribed event types with ALL.
+        events = new HashSet<>();
+        for (Integer eventType : EventType.EVTS_ALL) {
+            events.add(eventType);
+        }
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         throw new UnsupportedOperationException("The Ignite Events endpoint does not support producers.");
@@ -95,6 +110,24 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
+     * Gets the endpoint ID (not used).
+     *
+     * @return endpoint ID (not used)
+     */
+    public String getEndpointId() {
+        return endpointId;
+    }
+
+    /**
+     * The endpoint ID (not used).
+     *
+     * @param endpointId endpoint ID (not used)
+     */
+    public void setEndpointId(String endpointId) {
+        this.endpointId = endpointId;
+    }
+
+    /**
      * Gets the event types to subscribe to.
      *
      * @return
@@ -104,7 +137,8 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the event types to subscribe to as a {@link Set}.
+     * The event IDs to subscribe to as a Set<Integer> directly where
+     * the IDs are the different constants in org.apache.ignite.events.EventType.
      *
      * @param events
      */
@@ -113,7 +147,7 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the event types to subscribe to as a comma-separated string of event constants as defined in {@link EventType}.
+     * The event types to subscribe to as a comma-separated string of event constants as defined in {@link EventType}.
      * <p>
      * For example: EVT_CACHE_ENTRY_CREATED,EVT_CACHE_OBJECT_REMOVED,EVT_IGFS_DIR_CREATED.
      *
@@ -135,10 +169,20 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
         }
     }
 
+    /**
+     * Gets the cluster group expression.
+     *
+     * @return cluster group expression
+     */
     public ClusterGroupExpression getClusterGroupExpression() {
         return clusterGroupExpression;
     }
 
+    /**
+     * The cluster group expression.
+     *
+     * @param clusterGroupExpression cluster group expression
+     */
     public void setClusterGroupExpression(ClusterGroupExpression clusterGroupExpression) {
         this.clusterGroupExpression = clusterGroupExpression;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java
new file mode 100644
index 0000000..456202a
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java
@@ -0,0 +1,78 @@
+/**
+ * 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.component.ignite.idgen;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite ID Generator Component.
+ */
+public class IgniteIdGenComponent extends AbstractIgniteComponent {
+
+    public static IgniteIdGenComponent fromIgnite(Ignite ignite) {
+        IgniteIdGenComponent answer = new IgniteIdGenComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteIdGenComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteIdGenComponent answer = new IgniteIdGenComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteIdGenComponent fromInputStream(InputStream inputStream) {
+        IgniteIdGenComponent answer = new IgniteIdGenComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteIdGenComponent fromUrl(URL url) {
+        IgniteIdGenComponent answer = new IgniteIdGenComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteIdGenComponent fromLocation(String location) {
+        IgniteIdGenComponent answer = new IgniteIdGenComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteIdGenEndpoint answer = new IgniteIdGenEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
index 3e1da3c..5cd86c6 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenEndpoint.java
@@ -27,6 +27,7 @@ import org.apache.camel.component.ignite.IgniteComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.IgniteAtomicSequence;
 import org.slf4j.Logger;
@@ -35,24 +36,25 @@ import org.slf4j.LoggerFactory;
 /**
  * Ignite ID Generator endpoint.
  */
-@UriEndpoint(scheme = "ignite:idgen", title = "Ignite ID Generator", syntax = "ignite:idgen:[name]", label = "nosql,cache,compute", producerOnly = true)
+@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-idgen", title = "Ignite ID Generator", syntax = "ignite-idgen:[name]", label = "nosql,cache,compute", producerOnly = true)
 public class IgniteIdGenEndpoint extends AbstractIgniteEndpoint {
 
     private static final Logger LOG = LoggerFactory.getLogger(IgniteIdGenEndpoint.class);
 
-    @UriParam
+    @UriPath
     @Metadata(required = "true")
     private String name;
 
-    @UriParam
+    @UriParam(label = "producer")
     private Integer batchSize;
 
-    @UriParam(defaultValue = "0")
+    @UriParam(label = "producer", defaultValue = "0")
     private Long initialValue = 0L;
 
-    @UriParam
+    @UriParam(label = "producer")
     private IgniteIdGenOperation operation;
 
+    @Deprecated
     public IgniteIdGenEndpoint(String endpointUri, URI remainingUri, Map<String, Object> parameters, IgniteComponent igniteComponent) throws Exception {
         super(endpointUri, igniteComponent);
         name = remainingUri.getHost();
@@ -60,6 +62,13 @@ public class IgniteIdGenEndpoint extends AbstractIgniteEndpoint {
         ObjectHelper.notNull(name, "ID Generator name");
     }
 
+    public IgniteIdGenEndpoint(String endpointUri, String remaining, Map<String, Object> parameters, IgniteIdGenComponent igniteComponent) throws Exception {
+        super(endpointUri, igniteComponent);
+        name = remaining;
+
+        ObjectHelper.notNull(name, "ID Generator name");
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         IgniteAtomicSequence atomicSeq = ignite().atomicSequence(name, initialValue, false);
@@ -81,34 +90,76 @@ public class IgniteIdGenEndpoint extends AbstractIgniteEndpoint {
         throw new UnsupportedOperationException("The Ignite Id Generator endpoint doesn't support consumers.");
     }
 
+    /**
+     * Gets the name.
+     *
+     * @return name
+     */
     public String getName() {
         return name;
     }
 
+    /**
+     * The sequence name.
+     *
+     * @param name name
+     */
     public void setName(String name) {
         this.name = name;
     }
 
+    /**
+     * Gets the initial value.
+     *
+     * @return initial value
+     */
     public Long getInitialValue() {
         return initialValue;
     }
 
+    /**
+     * The initial value.
+     *
+     * @param initialValue initial value
+     */
     public void setInitialValue(Long initialValue) {
         this.initialValue = initialValue;
     }
 
+    /**
+     * Gets the operation.
+     *
+     * @return operation
+     */
     public IgniteIdGenOperation getOperation() {
         return operation;
     }
 
+    /**
+     * The operation to invoke on the Ignite ID Generator.
+     * Superseded by the IgniteConstants.IGNITE_IDGEN_OPERATION header in the IN message.
+     * Possible values: ADD_AND_GET, GET, GET_AND_ADD, GET_AND_INCREMENT, INCREMENT_AND_GET.
+     *
+     * @param operation operation
+     */
     public void setOperation(IgniteIdGenOperation operation) {
         this.operation = operation;
     }
 
+    /**
+     * Gets the batch size.
+     *
+     * @return batch size
+     */
     public Integer getBatchSize() {
         return batchSize;
     }
 
+    /**
+     * The batch size.
+     *
+     * @param batchSize batch size
+     */
     public void setBatchSize(Integer batchSize) {
         this.batchSize = batchSize;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java
new file mode 100644
index 0000000..fd66308
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java
@@ -0,0 +1,78 @@
+/**
+ * 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.component.ignite.messaging;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite Messaging Component.
+ */
+public class IgniteMessagingComponent extends AbstractIgniteComponent {
+
+    public static IgniteMessagingComponent fromIgnite(Ignite ignite) {
+        IgniteMessagingComponent answer = new IgniteMessagingComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteMessagingComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteMessagingComponent answer = new IgniteMessagingComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteMessagingComponent fromInputStream(InputStream inputStream) {
+        IgniteMessagingComponent answer = new IgniteMessagingComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteMessagingComponent fromUrl(URL url) {
+        IgniteMessagingComponent answer = new IgniteMessagingComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteMessagingComponent fromLocation(String location) {
+        IgniteMessagingComponent answer = new IgniteMessagingComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteMessagingEndpoint answer = new IgniteMessagingEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
index 124d4c7..fe3c18d 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingEndpoint.java
@@ -28,34 +28,41 @@ import org.apache.camel.component.ignite.IgniteComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteMessaging;
 
 /**
  * Ignite Messaging endpoint.
  */
-@UriEndpoint(scheme = "ignite:messaging", title = "Ignite Messaging", syntax = "ignite:messaging:[topic]", label = "nosql,cache,messaging",
+@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-messaging", title = "Ignite Messaging", syntax = "ignite-messaging:[topic]", label = "nosql,cache,messaging",
     consumerClass = IgniteMessagingConsumer.class)
 public class IgniteMessagingEndpoint extends AbstractIgniteEndpoint {
 
-    @UriParam
+    @UriPath
     @Metadata(required = "true")
     private String topic;
 
-    @UriParam
+    @UriParam(label = "consumer,producer")
     private ClusterGroupExpression clusterGroupExpression;
 
-    @UriParam
+    @UriParam(label = "producer", defaultValue = "UNORDERED")
     private IgniteMessagingSendMode sendMode = IgniteMessagingSendMode.UNORDERED;
 
-    @UriParam
+    @UriParam(label = "producer")
     private Long timeout;
 
+    @Deprecated
     public IgniteMessagingEndpoint(String endpointUri, URI remainingUri, Map<String, Object> parameters, IgniteComponent igniteComponent) {
         super(endpointUri, igniteComponent);
         topic = remainingUri.getHost();
     }
 
+    public IgniteMessagingEndpoint(String endpointUri, String remaining, Map<String, Object> parameters, IgniteMessagingComponent igniteComponent) {
+        super(endpointUri, igniteComponent);
+        topic = remaining;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         // Validate options.
@@ -92,34 +99,75 @@ public class IgniteMessagingEndpoint extends AbstractIgniteEndpoint {
         return messaging;
     }
 
+    /**
+     * Gets the topic name.
+     *
+     * @return topic name
+     */
     public String getTopic() {
         return topic;
     }
 
+    /**
+     * The topic name.
+     *
+     * @param topic topic name
+     */
     public void setTopic(String topic) {
         this.topic = topic;
     }
 
+    /**
+     * Gets the cluster group expression.
+     *
+     * @return cluster group expression
+     */
     public ClusterGroupExpression getClusterGroupExpression() {
         return clusterGroupExpression;
     }
 
+    /**
+     * The cluster group expression.
+     *
+     * @param clusterGroupExpression cluster group expression
+     */
     public void setClusterGroupExpression(ClusterGroupExpression clusterGroupExpression) {
         this.clusterGroupExpression = clusterGroupExpression;
     }
 
+    /**
+     * Gets the timeout.
+     *
+     * @return timeout
+     */
     public Long getTimeout() {
         return timeout;
     }
 
+    /**
+     * The timeout for the send operation when using ordered messages.
+     *
+     * @param timeout timeout
+     */
     public void setTimeout(Long timeout) {
         this.timeout = timeout;
     }
 
+    /**
+     * Gets the send mode.
+     *
+     * @return send mode
+     */
     public IgniteMessagingSendMode getSendMode() {
         return sendMode;
     }
 
+    /**
+     * The send mode to use.
+     * Possible values: UNORDERED, ORDERED.
+     *
+     * @param sendMode send mode
+     */
     public void setSendMode(IgniteMessagingSendMode sendMode) {
         this.sendMode = sendMode;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java
new file mode 100644
index 0000000..edf6ee4
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java
@@ -0,0 +1,78 @@
+/**
+ * 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.component.ignite.queue;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite Queue Component.
+ */
+public class IgniteQueueComponent extends AbstractIgniteComponent {
+
+    public static IgniteQueueComponent fromIgnite(Ignite ignite) {
+        IgniteQueueComponent answer = new IgniteQueueComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteQueueComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteQueueComponent answer = new IgniteQueueComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteQueueComponent fromInputStream(InputStream inputStream) {
+        IgniteQueueComponent answer = new IgniteQueueComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteQueueComponent fromUrl(URL url) {
+        IgniteQueueComponent answer = new IgniteQueueComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteQueueComponent fromLocation(String location) {
+        IgniteQueueComponent answer = new IgniteQueueComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteQueueEndpoint answer = new IgniteQueueEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
index 688a209..0252820 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueEndpoint.java
@@ -27,6 +27,7 @@ import org.apache.camel.component.ignite.IgniteComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -36,24 +37,25 @@ import org.apache.ignite.configuration.CollectionConfiguration;
 /**
  * Ignite Queue endpoint.
  */
-@UriEndpoint(scheme = "ignite:queue", title = "Ignite Queues", syntax = "ignite:queue:[name]", label = "nosql,cache", producerOnly = true)
+@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-queue", title = "Ignite Queues", syntax = "ignite-queue:[name]", label = "nosql,cache", producerOnly = true)
 public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {
 
-    @UriParam @Metadata(required = "true")
+    @UriPath @Metadata(required = "true")
     private String name;
 
-    @UriParam
+    @UriParam(label = "producer")
     private int capacity;
 
-    @UriParam
+    @UriParam(label = "producer")
     private CollectionConfiguration configuration = new CollectionConfiguration();
 
-    @UriParam
+    @UriParam(label = "producer")
     private Long timeoutMillis;
 
-    @UriParam
+    @UriParam(label = "producer")
     private IgniteQueueOperation operation;
 
+    @Deprecated
     public IgniteQueueEndpoint(String endpointUri, URI remainingUri, Map<String, Object> parameters, IgniteComponent igniteComponent) throws Exception {
         super(endpointUri, igniteComponent);
         name = remainingUri.getHost();
@@ -68,6 +70,20 @@ public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {
         }
     }
 
+    public IgniteQueueEndpoint(String endpointUri, String remaining, Map<String, Object> parameters, IgniteQueueComponent igniteComponent) throws Exception {
+        super(endpointUri, igniteComponent);
+        name = remaining;
+
+        ObjectHelper.notNull(name, "Queue name");
+
+        // Set the configuration values.
+        if (!parameters.containsKey("configuration")) {
+            Map<String, Object> configProps = IntrospectionSupport.extractProperties(parameters, "config.");
+            EndpointHelper.setReferenceProperties(this.getCamelContext(), configProps, parameters);
+            EndpointHelper.setProperties(this.getCamelContext(), configProps, parameters);
+        }
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         IgniteQueue<Object> queue = ignite().queue(name, capacity, configuration);
@@ -90,7 +106,7 @@ public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the queue name.
+     * The queue name.
      *
      * @param name
      */
@@ -108,7 +124,9 @@ public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the queue operation to perform.
+     * The operation to invoke on the Ignite Queue.
+     * Superseded by the IgniteConstants.IGNITE_QUEUE_OPERATION header in the IN message.
+     * Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY, DRAIN, ELEMENT, PEEK, OFFER, POLL, TAKE, PUT.
      *
      * @param operation
      */
@@ -126,7 +144,7 @@ public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the queue capacity. Default: non-bounded.
+     * The queue capacity. Default: non-bounded.
      *
      * @param capacity
      */
@@ -144,7 +162,7 @@ public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the collection configuration. Default: empty configuration.
+     * The collection configuration. Default: empty configuration.
      * <p>
      * You can also conveniently set inner properties by using <tt>configuration.xyz=123</tt> options.
      *
@@ -164,7 +182,7 @@ public class IgniteQueueEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the queue timeout in milliseconds. Default: no timeout.
+     * The queue timeout in milliseconds. Default: no timeout.
      *
      * @param timeoutMillis
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java
new file mode 100644
index 0000000..6a825c2
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java
@@ -0,0 +1,78 @@
+/**
+ * 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.component.ignite.set;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite Set Component.
+ */
+public class IgniteSetComponent extends AbstractIgniteComponent {
+
+    public static IgniteSetComponent fromIgnite(Ignite ignite) {
+        IgniteSetComponent answer = new IgniteSetComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteSetComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteSetComponent answer = new IgniteSetComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteSetComponent fromInputStream(InputStream inputStream) {
+        IgniteSetComponent answer = new IgniteSetComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteSetComponent fromUrl(URL url) {
+        IgniteSetComponent answer = new IgniteSetComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteSetComponent fromLocation(String location) {
+        IgniteSetComponent answer = new IgniteSetComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteSetEndpoint answer = new IgniteSetEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
index 6125ff9..ff616ba 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetEndpoint.java
@@ -27,26 +27,28 @@ import org.apache.camel.component.ignite.IgniteComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.configuration.CollectionConfiguration;
 
 /**
- * Ignite Cache endpoint.
+ * Ignite Set endpoint.
  */
-@UriEndpoint(scheme = "ignite:set", title = "Ignite Sets", syntax = "ignite:set:[name]", label = "nosql,cache", producerOnly = true)
+@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite-set", title = "Ignite Sets", syntax = "ignite-set:[name]", label = "nosql,cache", producerOnly = true)
 public class IgniteSetEndpoint extends AbstractIgniteEndpoint {
 
-    @UriParam @Metadata(required = "true")
+    @UriPath @Metadata(required = "true")
     private String name;
 
-    @UriParam
+    @UriParam(label = "producer")
     private CollectionConfiguration configuration = new CollectionConfiguration();
 
-    @UriParam
+    @UriParam(label = "producer")
     private IgniteSetOperation operation;
 
+    @Deprecated
     public IgniteSetEndpoint(String endpointUri, URI remainingUri, Map<String, Object> parameters, IgniteComponent igniteComponent) throws Exception {
         super(endpointUri, igniteComponent);
         name = remainingUri.getHost();
@@ -62,6 +64,21 @@ public class IgniteSetEndpoint extends AbstractIgniteEndpoint {
 
     }
 
+    public IgniteSetEndpoint(String endpointUri, String remaining, Map<String, Object> parameters, IgniteSetComponent igniteComponent) throws Exception {
+        super(endpointUri, igniteComponent);
+        name = remaining;
+
+        ObjectHelper.notNull(name, "Set name");
+
+        // Set the configuration values.
+        if (!parameters.containsKey("configuration")) {
+            Map<String, Object> configProps = IntrospectionSupport.extractProperties(parameters, "config.");
+            EndpointHelper.setReferenceProperties(this.getCamelContext(), configProps, parameters);
+            EndpointHelper.setProperties(this.getCamelContext(), configProps, parameters);
+        }
+
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         return new IgniteSetProducer(this, ignite().set(name, configuration));
@@ -82,7 +99,7 @@ public class IgniteSetEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the set name.
+     * The set name.
      *
      * @param name
      */
@@ -100,7 +117,7 @@ public class IgniteSetEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the collection configuration. Default: empty configuration.
+     * The collection configuration. Default: empty configuration.
      * <p>
      * You can also conveniently set inner properties by using <tt>configuration.xyz=123</tt> options.
      *
@@ -120,7 +137,9 @@ public class IgniteSetEndpoint extends AbstractIgniteEndpoint {
     }
 
     /**
-     * Sets the set operation to perform.
+     * The operation to invoke on the Ignite Set.
+     * Superseded by the IgniteConstants.IGNITE_SETS_OPERATION header in the IN message.
+     * Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY.The set operation to perform.
      *
      * @param operation
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-cache
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-cache b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-cache
new file mode 100644
index 0000000..495652e
--- /dev/null
+++ b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-cache
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ignite.cache.IgniteCacheComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-compute
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-compute b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-compute
new file mode 100644
index 0000000..aa87994
--- /dev/null
+++ b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-compute
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ignite.compute.IgniteComputeComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-events
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-events b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-events
new file mode 100644
index 0000000..299d7ba
--- /dev/null
+++ b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-events
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ignite.events.IgniteEventsComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-idgen
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-idgen b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-idgen
new file mode 100644
index 0000000..c13c027
--- /dev/null
+++ b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-idgen
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ignite.idgen.IgniteIdGenComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-messaging
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-messaging b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-messaging
new file mode 100644
index 0000000..28dbd84
--- /dev/null
+++ b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-messaging
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ignite.messaging.IgniteMessagingComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-queue
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-queue b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-queue
new file mode 100644
index 0000000..ec3a5e8
--- /dev/null
+++ b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-queue
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ignite.queue.IgniteQueueComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-set
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-set b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-set
new file mode 100644
index 0000000..4cef5c3
--- /dev/null
+++ b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-set
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ignite.set.IgniteSetComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/AbstractIgniteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/AbstractIgniteTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/AbstractIgniteTest.java
index d46cd1b..64a77e5 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/AbstractIgniteTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/AbstractIgniteTest.java
@@ -28,7 +28,7 @@ import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
 
-public class AbstractIgniteTest extends CamelTestSupport {
+public abstract class AbstractIgniteTest extends CamelTestSupport {
     
     /** Ip finder for TCP discovery. */
     private static final TcpDiscoveryIpFinder LOCAL_IP_FINDER = new TcpDiscoveryVmIpFinder(false) { {
@@ -40,22 +40,25 @@ public class AbstractIgniteTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.addComponent("ignite", buildComponent());
+        context.addComponent(getScheme(), createComponent());
         return context;
     }
 
-    protected IgniteComponent buildComponent() {
+    protected IgniteConfiguration createConfiguration() {
         IgniteConfiguration config = new IgniteConfiguration();
         config.setGridName(UUID.randomUUID().toString());
         config.setIncludeEventTypes(EventType.EVT_JOB_FINISHED, EventType.EVT_JOB_RESULTED);
         config.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(LOCAL_IP_FINDER));
-        
-        return IgniteComponent.fromConfiguration(config);
+        return config;
     }
 
+    protected abstract String getScheme();
+
+    protected abstract AbstractIgniteComponent createComponent();
+
     protected Ignite ignite() {
         if (ignite == null) {
-            ignite = context.getComponent("ignite", IgniteComponent.class).getIgnite();
+            ignite = context.getComponent(getScheme(), AbstractIgniteComponent.class).getIgnite();
         }
         return ignite;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheContinuousQueryTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheContinuousQueryTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheContinuousQueryTest.java
index c44b7f0..0e69006 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheContinuousQueryTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheContinuousQueryTest.java
@@ -32,6 +32,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.ignite.cache.IgniteCacheComponent;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.CacheEntryEventSerializableFilter;
@@ -46,6 +47,16 @@ public class IgniteCacheContinuousQueryTest extends AbstractIgniteTest implement
 
     private static final long serialVersionUID = 1L;
 
+    @Override
+    protected String getScheme() {
+        return "ignite-cache";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteCacheComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testContinuousQueryDoNotFireExistingEntries() throws Exception {
         context.startRoute("continuousQuery");
@@ -136,13 +147,13 @@ public class IgniteCacheContinuousQueryTest extends AbstractIgniteTest implement
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("ignite:cache:testcontinuous1?query=#query1").routeId("continuousQuery").noAutoStartup().to("mock:test1");
+                from("ignite-cache:testcontinuous1?query=#query1").routeId("continuousQuery").noAutoStartup().to("mock:test1");
 
-                from("ignite:cache:testcontinuous1?query=#query1&fireExistingQueryResults=true").routeId("continuousQuery.fireExistingEntries").noAutoStartup().to("mock:test2");
+                from("ignite-cache:testcontinuous1?query=#query1&fireExistingQueryResults=true").routeId("continuousQuery.fireExistingEntries").noAutoStartup().to("mock:test2");
 
-                from("ignite:cache:testcontinuous1?query=#query1&remoteFilter=#remoteFilter1&fireExistingQueryResults=true").routeId("remoteFilter").noAutoStartup().to("mock:test3");
+                from("ignite-cache:testcontinuous1?query=#query1&remoteFilter=#remoteFilter1&fireExistingQueryResults=true").routeId("remoteFilter").noAutoStartup().to("mock:test3");
 
-                from("ignite:cache:testcontinuous1?pageSize=10&oneExchangePerUpdate=false").routeId("groupedUpdate").noAutoStartup().to("mock:test4");
+                from("ignite-cache:testcontinuous1?pageSize=10&oneExchangePerUpdate=false").routeId("groupedUpdate").noAutoStartup().to("mock:test4");
 
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheTest.java
index 07771bd..159a2e9 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteCacheTest.java
@@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
 import org.apache.camel.CamelException;
+import org.apache.camel.component.ignite.cache.IgniteCacheComponent;
 import org.apache.camel.component.ignite.cache.IgniteCacheOperation;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.IgniteCache;
@@ -41,9 +42,19 @@ import static com.google.common.truth.Truth.assert_;
 
 public class IgniteCacheTest extends AbstractIgniteTest {
 
+    @Override
+    protected String getScheme() {
+        return "ignite-cache";
+    }
+
+    @Override
+    protected AbstractIgniteComponent createComponent() {
+        return IgniteCacheComponent.fromConfiguration(createConfiguration());
+    }
+
     @Test
     public void testAddEntry() {
-        template.requestBodyAndHeader("ignite:cache:testcache1?operation=PUT", "1234", IgniteConstants.IGNITE_CACHE_KEY, "abcd");
+        template.requestBodyAndHeader("ignite-cache:testcache1?operation=PUT", "1234", IgniteConstants.IGNITE_CACHE_KEY, "abcd");
 
         assert_().that(ignite().cache("testcache1").size(CachePeekMode.ALL)).isEqualTo(1);
         assert_().that(ignite().cache("testcache1").get("abcd")).isEqualTo("1234");
@@ -51,7 +62,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
 
     @Test
     public void testAddEntrySet() {
-        template.requestBody("ignite:cache:testcache1?operation=PUT", ImmutableMap.of("abcd", "1234", "efgh", "5678"));
+        template.requestBody("ignite-cache:testcache1?operation=PUT", ImmutableMap.of("abcd", "1234", "efgh", "5678"));
 
         assert_().that(ignite().cache("testcache1").size(CachePeekMode.ALL)).isEqualTo(2);
         assert_().that(ignite().cache("testcache1").get("abcd")).isEqualTo("1234");
@@ -62,10 +73,10 @@ public class IgniteCacheTest extends AbstractIgniteTest {
     public void testGetOne() {
         testAddEntry();
 
-        String result = template.requestBody("ignite:cache:testcache1?operation=GET", "abcd", String.class);
+        String result = template.requestBody("ignite-cache:testcache1?operation=GET", "abcd", String.class);
         assert_().that(result).isEqualTo("1234");
 
-        result = template.requestBodyAndHeader("ignite:cache:testcache1?operation=GET", "this value won't be used", IgniteConstants.IGNITE_CACHE_KEY, "abcd", String.class);
+        result = template.requestBodyAndHeader("ignite-cache:testcache1?operation=GET", "this value won't be used", IgniteConstants.IGNITE_CACHE_KEY, "abcd", String.class);
         assert_().that(result).isEqualTo("1234");
     }
 
@@ -80,7 +91,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
             keys.add("k" + i);
         }
 
-        Map<String, String> result = template.requestBody("ignite:cache:testcache1?operation=GET", keys, Map.class);
+        Map<String, String> result = template.requestBody("ignite-cache:testcache1?operation=GET", keys, Map.class);
         for (String k : keys) {
             assert_().that(result.get(k)).isEqualTo(k.replace("k", "v"));
         }
@@ -96,7 +107,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
             keys.add("k" + i);
         }
 
-        Integer result = template.requestBody("ignite:cache:testcache1?operation=SIZE", keys, Integer.class);
+        Integer result = template.requestBody("ignite-cache:testcache1?operation=SIZE", keys, Integer.class);
         assert_().that(result).isEqualTo(100);
     }
 
@@ -119,7 +130,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
             }
         });
 
-        List results = template.requestBodyAndHeader("ignite:cache:testcache1?operation=QUERY", keys, IgniteConstants.IGNITE_CACHE_QUERY, query, List.class);
+        List results = template.requestBodyAndHeader("ignite-cache:testcache1?operation=QUERY", keys, IgniteConstants.IGNITE_CACHE_QUERY, query, List.class);
         assert_().that(results.size()).isEqualTo(50);
     }
 
@@ -136,7 +147,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
         // Also add a cache entry with the entire Set as a key.
         cache.put(keys, "---");
 
-        String result = template.requestBody("ignite:cache:testcache1?operation=GET&treatCollectionsAsCacheObjects=true", keys, String.class);
+        String result = template.requestBody("ignite-cache:testcache1?operation=GET&treatCollectionsAsCacheObjects=true", keys, String.class);
         assert_().that(result).isEqualTo("---");
     }
 
@@ -149,12 +160,12 @@ public class IgniteCacheTest extends AbstractIgniteTest {
 
         assert_().that(cache.size(CachePeekMode.ALL)).isEqualTo(2);
 
-        template.requestBody("ignite:cache:testcache1?operation=REMOVE", "abcd");
+        template.requestBody("ignite-cache:testcache1?operation=REMOVE", "abcd");
 
         assert_().that(cache.size(CachePeekMode.ALL)).isEqualTo(1);
         assert_().that(cache.get("abcd")).isNull();
 
-        template.requestBodyAndHeader("ignite:cache:testcache1?operation=REMOVE", "this value won't be used", IgniteConstants.IGNITE_CACHE_KEY, "efgh");
+        template.requestBodyAndHeader("ignite-cache:testcache1?operation=REMOVE", "this value won't be used", IgniteConstants.IGNITE_CACHE_KEY, "efgh");
 
         assert_().that(cache.size(CachePeekMode.ALL)).isEqualTo(0);
         assert_().that(cache.get("efgh")).isNull();
@@ -170,7 +181,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
 
         assert_().that(cache.size(CachePeekMode.ALL)).isEqualTo(100);
 
-        template.requestBody("ignite:cache:testcache1?operation=CLEAR", "this value won't be used");
+        template.requestBody("ignite-cache:testcache1?operation=CLEAR", "this value won't be used");
 
         assert_().that(cache.size(CachePeekMode.ALL)).isEqualTo(0);
     }
@@ -179,10 +190,10 @@ public class IgniteCacheTest extends AbstractIgniteTest {
     public void testHeaderSetRemoveEntry() {
         testAddEntry();
 
-        String result = template.requestBody("ignite:cache:testcache1?operation=GET", "abcd", String.class);
+        String result = template.requestBody("ignite-cache:testcache1?operation=GET", "abcd", String.class);
         assert_().that(result).isEqualTo("1234");
 
-        result = template.requestBodyAndHeader("ignite:cache:testcache1?operation=GET", "abcd", IgniteConstants.IGNITE_CACHE_OPERATION, IgniteCacheOperation.REMOVE, String.class);
+        result = template.requestBodyAndHeader("ignite-cache:testcache1?operation=GET", "abcd", IgniteConstants.IGNITE_CACHE_OPERATION, IgniteCacheOperation.REMOVE, String.class);
 
         // The body has not changed, but the cache entry is gone.
         assert_().that(result).isEqualTo("abcd");
@@ -192,7 +203,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
     @Test
     public void testAddEntryNoCacheCreation() {
         try {
-            template.requestBodyAndHeader("ignite:cache:testcache2?operation=PUT&failIfInexistentCache=true", "1234", IgniteConstants.IGNITE_CACHE_KEY, "abcd");
+            template.requestBodyAndHeader("ignite-cache:testcache2?operation=PUT&failIfInexistentCache=true", "1234", IgniteConstants.IGNITE_CACHE_KEY, "abcd");
         } catch (Exception e) {
             assert_().that(ObjectHelper.getException(CamelException.class, e).getMessage()).startsWith("Ignite cache testcache2 doesn't exist");
             return;
@@ -203,7 +214,7 @@ public class IgniteCacheTest extends AbstractIgniteTest {
 
     @Test
     public void testAddEntryDoNotPropagateIncomingBody() {
-        Object result = template.requestBodyAndHeader("ignite:cache:testcache1?operation=PUT&propagateIncomingBodyIfNoReturnValue=false", "1234", IgniteConstants.IGNITE_CACHE_KEY, "abcd",
+        Object result = template.requestBodyAndHeader("ignite-cache:testcache1?operation=PUT&propagateIncomingBodyIfNoReturnValue=false", "1234", IgniteConstants.IGNITE_CACHE_KEY, "abcd",
                 Object.class);
 
         assert_().that(ignite().cache("testcache1").size(CachePeekMode.ALL)).isEqualTo(1);

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[5/5] camel git commit: CAMEL-10798 Splitted camel-ignite component for each endpoint

acosentino
In reply to this post by acosentino
CAMEL-10798 Splitted camel-ignite component for each endpoint


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

Branch: refs/heads/master
Commit: df6567829d6712987dbb62b26110096a35464739
Parents: 9b3e7eb
Author: Tomohisa Igarashi <[hidden email]>
Authored: Wed Apr 19 23:21:30 2017 +0900
Committer: Andrea Cosentino <[hidden email]>
Committed: Fri Apr 21 11:20:12 2017 +0200

----------------------------------------------------------------------
 .../src/main/docs/ignite-cache-component.adoc   |  96 ++++
 .../src/main/docs/ignite-component.adoc         | 473 -------------------
 .../src/main/docs/ignite-compute-component.adoc |  98 ++++
 .../src/main/docs/ignite-events-component.adoc  |  54 +++
 .../src/main/docs/ignite-idgen-component.adoc   |  51 ++
 .../main/docs/ignite-messaging-component.adoc   |  69 +++
 .../src/main/docs/ignite-queue-component.adoc   |  74 +++
 .../src/main/docs/ignite-set-component.adoc     |  63 +++
 .../camel-ignite/src/main/docs/ignite.adoc      | 111 +++++
 .../ignite/AbstractIgniteComponent.java         | 156 ++++++
 .../ignite/AbstractIgniteEndpoint.java          |   8 +-
 .../camel/component/ignite/IgniteComponent.java | 116 +----
 .../ignite/cache/IgniteCacheComponent.java      |  78 +++
 .../ignite/cache/IgniteCacheEndpoint.java       |  61 ++-
 .../ignite/compute/IgniteComputeComponent.java  |  78 +++
 .../ignite/compute/IgniteComputeEndpoint.java   |  68 ++-
 .../ignite/events/IgniteEventsComponent.java    |  78 +++
 .../ignite/events/IgniteEventsEndpoint.java     |  54 ++-
 .../ignite/idgen/IgniteIdGenComponent.java      |  78 +++
 .../ignite/idgen/IgniteIdGenEndpoint.java       |  61 ++-
 .../messaging/IgniteMessagingComponent.java     |  78 +++
 .../messaging/IgniteMessagingEndpoint.java      |  58 ++-
 .../ignite/queue/IgniteQueueComponent.java      |  78 +++
 .../ignite/queue/IgniteQueueEndpoint.java       |  40 +-
 .../ignite/set/IgniteSetComponent.java          |  78 +++
 .../component/ignite/set/IgniteSetEndpoint.java |  35 +-
 .../org/apache/camel/component/ignite-cache     |  18 +
 .../org/apache/camel/component/ignite-compute   |  18 +
 .../org/apache/camel/component/ignite-events    |  18 +
 .../org/apache/camel/component/ignite-idgen     |  18 +
 .../org/apache/camel/component/ignite-messaging |  18 +
 .../org/apache/camel/component/ignite-queue     |  18 +
 .../org/apache/camel/component/ignite-set       |  18 +
 .../component/ignite/AbstractIgniteTest.java    |  15 +-
 .../ignite/IgniteCacheContinuousQueryTest.java  |  19 +-
 .../camel/component/ignite/IgniteCacheTest.java |  41 +-
 .../component/ignite/IgniteComputeTest.java     |  41 +-
 .../component/ignite/IgniteEventsTest.java      |  21 +-
 .../camel/component/ignite/IgniteIdGenTest.java |  41 +-
 .../component/ignite/IgniteMessagingTest.java   |  23 +-
 .../camel/component/ignite/IgniteQueueTest.java |  83 ++--
 .../camel/component/ignite/IgniteSetTest.java   |  56 ++-
 .../src/test/resources/log4j2.properties        |   2 +-
 components/readme.adoc                          |  23 +-
 docs/user-manual/en/SUMMARY.md                  |   7 +
 .../IgniteCacheComponentAutoConfiguration.java  | 114 +++++
 .../IgniteCacheComponentConfiguration.java      |  88 ++++
 ...IgniteComputeComponentAutoConfiguration.java | 114 +++++
 .../IgniteComputeComponentConfiguration.java    |  88 ++++
 .../IgniteEventsComponentAutoConfiguration.java | 114 +++++
 .../IgniteEventsComponentConfiguration.java     |  88 ++++
 .../IgniteIdGenComponentAutoConfiguration.java  | 114 +++++
 .../IgniteIdGenComponentConfiguration.java      |  88 ++++
 ...niteMessagingComponentAutoConfiguration.java | 115 +++++
 .../IgniteMessagingComponentConfiguration.java  |  88 ++++
 .../IgniteQueueComponentAutoConfiguration.java  | 114 +++++
 .../IgniteQueueComponentConfiguration.java      |  88 ++++
 .../IgniteSetComponentAutoConfiguration.java    | 114 +++++
 .../IgniteSetComponentConfiguration.java        |  88 ++++
 ...dditional-spring-configuration-metadata.json |  46 ++
 .../main/resources/META-INF/spring.factories    |  31 ++
 61 files changed, 3503 insertions(+), 779 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-cache-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-cache-component.adoc b/components/camel-ignite/src/main/docs/ignite-cache-component.adoc
new file mode 100644
index 0000000..2ba9347
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-cache-component.adoc
@@ -0,0 +1,96 @@
+## Ignite Cache Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Cache endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with an https://apacheignite.readme.io/docs/data-grid[Ignite Cache].
+This offers both a Producer (to invoke cache operations on an Ignite cache) and a Consumer (to consume changes from a continuous query).
+
+The cache value is always the body of the message, whereas the cache key is always stored in the `IgniteConstants.IGNITE_CACHE_KEY` message header.
+
+Even if you configure a fixed operation in the endpoint URI, you can vary it per-exchange by setting the `IgniteConstants.IGNITE_CACHE_OPERATION` message header.
+
+
+// component options: START
+The Ignite Cache component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (common) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (common) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (common) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Cache endpoint is configured using URI syntax:
+
+    ignite-cache:[cacheName]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **cacheName** | *Required* The cache name. |  | String
+|=======================================================================
+
+#### Query Parameters (16 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **propagateIncomingBodyIfNo ReturnValue** (common) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (common) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **autoUnsubscribe** (consumer) | Whether auto unsubscribe is enabled in the Continuous Query Consumer. | true | boolean
+| **bridgeErrorHandler** (consumer) | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN or ERROR level and ignored. | false | boolean
+| **fireExistingQueryResults** (consumer) | Whether to process existing results that match the query. Used on initialization of the Continuous Query Consumer. | false | boolean
+| **oneExchangePerUpdate** (consumer) | Whether to pack each update in an individual Exchange even if multiple updates are received in one batch. Only used by the Continuous Query Consumer. | true | boolean
+| **pageSize** (consumer) | The page size. Only used by the Continuous Query Consumer. | 1 | int
+| **query** (consumer) | The Query to execute only needed for operations that require it and for the Continuous Query Consumer. |  | Object>>
+| **remoteFilter** (consumer) | The remote filter only used by the Continuous Query Consumer. |  | Object>
+| **timeInterval** (consumer) | The time interval for the Continuous Query Consumer. | 0 | long
+| **exceptionHandler** (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| **exchangePattern** (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| **cachePeekMode** (producer) | The CachePeekMode only needed for operations that require it (link IgniteCacheOperationSIZE). | ALL | CachePeekMode
+| **failIfInexistentCache** (producer) | Whether to fail the initialization if the cache doesn't exist. | false | boolean
+| **operation** (producer) | The cache operation to invoke. Possible values: GET PUT REMOVE SIZE REBALANCE QUERY CLEAR. |  | IgniteCacheOperation
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteCacheKey | IgniteConstants.IGNITE_CACHE_KEY | String |
+The cache key for the entry value in the message body.
+
+| CamelIgniteCacheQuery | IgniteConstants.IGNITE_CACHE_QUERY | Query |
+The query to run (producer) when invoking the QUERY operation.
+
+| CamelIgniteCacheOperation | IgniteConstants.IGNITE_CACHE_OPERATION | IgniteCacheOperation enum |
+Allows you to dynamically change the cache operation to execute (producer).
+
+| CamelIgniteCachePeekMode | IgniteConstants.IGNITE_CACHE_PEEK_MODE | CachePeekMode enum |
+Allows you to dynamically change the cache peek mode when running the SIZE operation.
+
+| CamelIgniteCacheEventType | IgniteConstants.IGNITE_CACHE_EVENT_TYPE | int (EventType constants) |
+This header carries the received event type when using the continuous query consumer.
+
+| CamelIgniteCacheName | IgniteConstants.IGNITE_CACHE_NAME | String |
+This header carries the cache name for which a continuous query event was received (consumer).
+It does not allow you to dynamically change the cache against which a producer operation is performed. Use EIPs for that (e.g. recipient list, dynamic router).
+
+| CamelIgniteCacheOldValue | IgniteConstants.IGNITE_CACHE_OLD_VALUE | Object |
+This header carries the old cache value when passed in the incoming cache event (consumer).
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-component.adoc b/components/camel-ignite/src/main/docs/ignite-component.adoc
deleted file mode 100644
index 36b1e39..0000000
--- a/components/camel-ignite/src/main/docs/ignite-component.adoc
+++ /dev/null
@@ -1,473 +0,0 @@
-## Ignite Component
-
-*Available as of Camel version 2.17*
-
-https://ignite.apache.org/[Apache Ignite] In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies. It is designed to deliver uncompromised performance for a wide set of in-memory computing use cases from high performance computing, to the industry most advanced data grid, highly available service grid, and streaming. See all https://ignite.apache.org/features.html[features].
-
-image:https://ignite.apache.org/images/apache-ignite.png[]
-
-This component offers seven endpoints to cover much of Ignite's functionality:
-
-* <<Ignite-Cache,Ignite Cache>>.
-* <<Ignite-Compute,Ignite Compute>>.
-* <<Ignite-Messaging,Ignite Messaging>>.
-* <<Ignite-Events,Ignite Events>>.
-* <<Ignite-Sets,Ignite Sets>>.
-* <<Ignite-Queues,Ignite Queues>>.
-* <<Ignite-IDGenerator,Ignite ID Generator>>.
-
-To use this component, add the following dependency to your pom.xml:
-
-[source,xml]
-----
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-ignite</artifactId>
-    <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
-</dependency>
-----
-
-[IMPORTANT,title=Running in OSGi]
-====
-If running in an OSGi container, please don't miss the <<Ignite-OsgiSupport,OSGi Support>> section below.
-====
-
-// component options: START
-// component options: END
-
-// endpoint options: START
-// endpoint options: END
-
-
-### CACHE: Ignite Cache Endpoint
-
-This endpoint allows you to interact with an https://apacheignite.readme.io/docs/data-grid[Ignite Cache]:
-
-[source,text]
-----
-ignite:cache:cacheName?option1=value1&option2=value2...
-----
-
-Offers both a Producer (to invoke cache operations on an Ignite cache) and a Consumer (to consume changes from a continuous query).
-
-The cache value is always the body of the message, whereas the cache key is always stored in the `IgniteConstants.IGNITE_CACHE_KEY` message header.
-
-Even if you configure a fixed operation in the endpoint URI, you can vary it per-exchange by setting the `IgniteConstants.IGNITE_CACHE_OPERATION` message header.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteCacheOperation enum | --- |
-Cache operation to perform.
-Possible values: GET, PUT, REMOVE, SIZE, REBALANCE, QUERY, CLEAR. |
-N | Producer
-
-| failIfInexistentCache | boolean | false |
-Whether to fail the initialization if the cache doesn't exist.  |
-N | Producer
-
-| cachePeekMode | CachePeekMode (Ignite) enum | ALL |
-The cache peek mode used for SIZE operations. |
-N | Producer
-
-| query | Query | --- |
-The query used for QUERY operations (as a producer) or to launch the continuous query (as a consumer). You can use a reference to a registry bean with a syntax like: ?query=#myQuery. |
-Y for the consumer / N for the producer | Producer (for QUERY operation) and Consumer
-
-|remoteFilter | CacheEntryEventSerializableFilter | --- |
-An optional remote filter for the continuous query consumer. You can use a reference to a registry bean with a syntax like: ?remoteFilter=#myRemoteFilter. |
-N | Consumer
-
-| oneExchangePerUpdate | boolean | true |
-Whether to send one exchange per cache update, even if multiple changes arrive in a group. |
-N | Consumer
-
-| fireExistingQueryResults | boolean | false |
-When starting the continuous query consumer, whether to fire existing cache results. |
-N  | Consumer
-
-| autoUnsubscribe | boolean | ContinuousQuery.DFLT_AUTO_UNSUBSCRIBE |
-Auto-unsubscribe flag on the Continuous Query (see Ignite docs). |
-N | Consumer
-
-| pageSize | int | ContinuousQuery.DFLT_PAGE_SIZE |
-Page size on the Continuous Query (see Ignite docs). |
-N | Consumer
-
-| timeInterval | long | ContinuousQuery.DFLT_TIME_INTERVAL |
-Time interval in millis on the Continuous Query (see Ignite docs). | N | Consumer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteCacheKey | IgniteConstants.IGNITE_CACHE_KEY | String |
-The cache key for the entry value in the message body.
-
-| CamelIgniteCacheQuery | IgniteConstants.IGNITE_CACHE_QUERY | Query |
-The query to run (producer) when invoking the QUERY operation.
-
-| CamelIgniteCacheOperation | IgniteConstants.IGNITE_CACHE_OPERATION | IgniteCacheOperation enum |
-Allows you to dynamically change the cache operation to execute (producer).
-
-| CamelIgniteCachePeekMode | IgniteConstants.IGNITE_CACHE_PEEK_MODE | CachePeekMode enum |
-Allows you to dynamically change the cache peek mode when running the SIZE operation.
-
-| CamelIgniteCacheEventType | IgniteConstants.IGNITE_CACHE_EVENT_TYPE | int (EventType constants) |
-This header carries the received event type when using the continuous query consumer.
-
-| CamelIgniteCacheName | IgniteConstants.IGNITE_CACHE_NAME | String |
-This header carries the cache name for which a continuous query event was received (consumer).
-It does not allow you to dynamically change the cache against which a producer operation is performed. Use EIPs for that (e.g. recipient list, dynamic router).
-
-| CamelIgniteCacheOldValue | IgniteConstants.IGNITE_CACHE_OLD_VALUE | Object |
-This header carries the old cache value when passed in the incoming cache event (consumer).
-|=======================================================================
-
-
-### COMPUTE: Ignite Compute Endpoint
-
-This endpoint allows you to run https://apacheignite.readme.io/docs/compute-grid[compute operations] on the cluster by passing in an IgniteCallable, an IgniteRunnable, an IgniteClosure, or collections of them, along with their parameters if necessary.
-
-[source,text]
-----
-ignite:compute:endpointId?executionType=...&option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-The host part of the endpoint URI is a symbolic endpoint ID, it is not used for any purposes.
-
-The endpoint tries to run the object passed in the body of the IN message as the compute job. It expects different payload types depending on the execution type.
-
-#### Expected payload types
-
-Each operation expects the indicated types:
-[width="100%",cols="1,4",options="header"]
-|=======================================================================
-| Operation | Expected payloads
-| CALL | Collection of IgniteCallable, or a single IgniteCallable.
-| BROADCAST | IgniteCallable, IgniteRunnable, IgniteClosure.
-| APPLY | IgniteClosure.
-| EXECUTE | ComputeTask, Class<? extends ComputeTask> or an object representing parameters if the taskName option is not null.
-| RUN | A Collection of IgniteRunnables, or a single IgniteRunnable.
-| AFFINITY_CALL | IgniteCallable.
-| AFFINITY_RUN | IgniteRunnable.
-|=======================================================================
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| executionType | IgniteComputeExecutionType enum | --- |
-The compute operation to perform. Possible values: CALL, BROADCAST, APPLY, EXECUTE, RUN, AFFINITY_CALL, AFFINITY_RUN.
-The component expects different payload types depending on the operation. See above. |
-Y | Producer
-
-| clusterGroupExpression | ClusterGroupExpression | --- |
-An expression that returns the Cluster Group for the IgniteCompute instance. |
-N | Producer
-
-| taskName | String | --- | The task name, only used when performing the EXECUTE if a ComputeTask is not passed in the payload. |
-N | Producer
-
-| computeName | String | --- | The name for the IgniteCompute instances produced by this endpoint. |
-N | Producer
-
-| timeoutMillis | Long | --- | The timeout for the compute job. | N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteComputeExecutionType | IgniteConstants.IGNITE_COMPUTE_EXECUTION_TYPE | IgniteComputeExecutionType enum |
- Allows you to dynamically change the compute operation to perform.
-
-| CamelIgniteComputeParameters | IgniteConstants.IGNITE_COMPUTE_PARAMS | Any object or Collection of objects. |
-Parameters for APPLY, BROADCAST and EXECUTE operations.
-
-| CamelIgniteComputeReducer | IgniteConstants.IGNITE_COMPUTE_REDUCER | IgniteReducer |
-Reducer for the APPLY and CALL operations.
-
-| CamelIgniteComputeAffinityCacheName | IgniteConstants.IGNITE_COMPUTE_AFFINITY_CACHE_NAME | String |
-Affinity cache name for the AFFINITY_CALL and AFFINITY_RUN operations.
-
-| CamelIgniteComputeAffinityKey | IgniteConstants.IGNITE_COMPUTE_AFFINITY_KEY | Object |
-Affinity key for the AFFINITY_CALL and AFFINITY_RUN operations.
-|=======================================================================
-
-
-### MESSAGING: Ignite Messaging Endpoint
-
-The Ignite Messaging endpoint allows you to send and consume messages from an https://apacheignite.readme.io/docs/messaging[Ignite topic].
-
-[source,text]
-----
-ignite:messaging:topicName?option1=value1&option2=value2...
-----
-
-This endpoint supports producers (to send messages) and consumers (to receive messages).
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| clusterGroupExpression | ClusterGroupExpression | --- |
-An expression that returns the Cluster Group for the IgniteMessaging instance. |
-N |Consumer and Producer
-
-| sendMode | IgniteMessagingSendMode enum | UNORDERED |
-The send mode to use.
-Possible values: UNORDERED, ORDERED. |
-N | Producer
-
-| timeout | Long | --- | The timeout for the send operation when using ordered messages. |
-N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteMessagingTopic | IgniteConstants.IGNITE_MESSAGING_TOPIC | String |
-Allows you to dynamically change the topic to send messages to (producer).
-It also carries the topic on which a message was received (consumer).
-
-| CamelIgniteMessagingUUID | IgniteConstants.IGNITE_MESSAGING_UUID | UUID |
-This header is filled in with the UUID of the subscription when a message arrives (consumer).
-|=======================================================================
-
-
-### EVENTS: Ignite Events Endpoint
-
-The Ignite Events endpoint allows you to https://apacheignite.readme.io/docs/events[receive events] from the Ignite cluster by creating a local event listener.
-
-[source,text]
-----
-ignite:events:endpointId?option1=value1&option2=value2...
-----
-
-This endpoint only supports consumers.
-The Exchanges created by this consumer put the received Event object into the body of the IN message.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| events | Set<Integer> or String | EventType.EVTS_ALL |
-The event IDs to subscribe to. You can set a Set<Integer> directly where the IDs are the different constants in org.apache.ignite.events.EventType, or you can specify a comma-separated list of constant names.
-For example: EVT_CACHE_ENTRY_CREATED,EVT_CACHE_OBJECT_REMOVED,EVT_IGFS_DIR_CREATED. |
-N | Consumer
-| clusterGroupExpression | ClusterGroupExpression | --- |
-An expression that returns the Cluster Group to be used by the IgniteEvents instance. |
-N | Consumer
-|=======================================================================
-
-
-
-### SETS: Ignite Sets Endpoint
-
-The Ignite Sets endpoint allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Set data structures].
-
-[source,text]
-----
-ignite:sets:setName?option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteSetOperation enum | --- |
-The operation to invoke on the Ignite Set.
-Superseded by the IgniteConstants.IGNITE_SETS_OPERATION header in the IN message.
-Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY. |
-N | Producer
-
-| configuration | CollectionConfiguration | empty CollectionConfiguration |
-The configuration for this data structure. You can also specify inner properties by using the config. prefix.
-For example: ?config.backups=4 |
-N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteSetsOperation | IgniteConstants.IGNITE_SETS_OPERATION | IgniteSetOperation enum |
-Allows you to dynamically change the set operation.
-|=======================================================================
-
-
-### QUEUES: Ignite Queue Endpoint
-
-The Ignite Queue endpoint allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Queue data structures].
-
-[source,text]
-----
-ignite:queue:queueName?option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteQueueOperation enum | --- |
-The operation to invoke on the Ignite Queue.
-Superseded by the IgniteConstants.IGNITE_QUEUE_OPERATION header in the IN message.
-Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY, DRAIN, ELEMENT, PEEK, OFFER, POLL, TAKE, PUT. |
-N | Producer
-
-| configuration | CollectionConfiguration | empty CollectionConfiguration |
-The configuration for this data structure. You can also specify inner properties by using the config. prefix.
-For example: ?config.backups=4 |
-N | Producer
-
-| timeoutMillis | Long | | --- |
-The timeout in milliseconds to use when invoking the OFFER or POLL operations. |
-N | Producer
-
-| capacity | int | --- (unbounded) |
-The queue capacity if you'd like to use a bounded queue. |
-N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteQueueOperation | IgniteConstants.IGNITE_QUEUE_OPERATION | IgniteQueueOperation enum |
-Allows you to dynamically change the queue operation.
-
-| CamelIgniteQueueMaxElements | IgniteConstants.IGNITE_QUEUE_MAX_ELEMENTS | Integer or int |
-When invoking the DRAIN operation, the amount of items to drain.
-
-| CamelIgniteQueueTransferredCount | IgniteConstants.IGNITE_QUEUE_TRANSFERRED_COUNT | Integer or int |
-The amount of items transferred as the result of the DRAIN operation.
-
-| CamelIgniteQueueTimeoutMillis | IgniteConstants.IGNITE_QUEUE_TIMEOUT_MILLIS | Long or long |
-Dynamically sets the timeout in milliseconds to use when invoking the OFFER or POLL operations.
-|=======================================================================
-
-
-### IDGEN: Ignite ID Generator Endpoint
-
-The Ignite ID Generator endpoint allows you to interact with https://apacheignite.readme.io/docs/id-generator[Ignite Atomic Sequences and ID Generators].
-
-[source,text]
-----
-ignite:idgen:sequenceName?option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteIdGenOperation enum | --- |
-The operation to invoke on the Ignite ID Generator.
-Superseded by the IgniteConstants.IGNITE_IDGEN_OPERATION header in the IN message.
-Possible values: ADD_AND_GET, GET, GET_AND_ADD, GET_AND_INCREMENT, INCREMENT_AND_GET. |
-N | Producer
-
-| configuration | CollectionConfiguration | empty CollectionConfiguration |
-The configuration for this data structure. You can also specify inner properties by using the config. prefix.
-For example: ?config.backups=4 |
-N | Producer
-|=======================================================================
-
-
-
-### Initializing the Ignite component
-
-Each instance of the Ignite component is associated with an underlying org.apache.ignite.Ignite instance. You can interact with two Ignite clusters by initializing two instances of the Ignite component and binding them to different IgniteConfigurations. There are 3 ways to initialize the Ignite component:
-
-* By passing in an existing org.apache.ignite.Ignite instance. Here's an example using Spring config:
-
-[source,xml]
-------------------------------------------------------------
-<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
-   <property name="ignite" ref="ignite" />
-</bean>
-------------------------------------------------------------
-
-* By passing in an IgniteConfiguration, either constructed programmatically or through inversion of control (e.g. Spring, Blueprint, etc.). Here's an example using Spring config:
-
-[source,xml]
--------------------------------------------------------------------
-<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
-   <property name="igniteConfiguration">
-      <bean class="org.apache.ignite.configuration.IgniteConfiguration">
-         [...]
-      </bean>
-   </property>
-</bean>
--------------------------------------------------------------------
-
-* By passing in a URL, InputStream or String URL to a Spring-based configuration file. In all three cases, you inject them in the same property called configurationResource. Here's an example using Spring config:
-
-[source,xml]
--------------------------------------------------------------------
-<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
-   <property name="configurationResource" value="file:[...]/ignite-config.xml" />
-</bean>
--------------------------------------------------------------------
-
-Additionally, if using Camel programmatically, there are several convenience static methods in IgniteComponent that return a component out of any of these configuration options:
-
-* IgniteComponent#fromIgnite(Ignite)
-* IgniteComponent#fromConfiguration(IgniteConfiguration)
-* IgniteComponent#fromInputStream(InputStream)
-* IgniteComponent#fromUrl(URL)
-* IgniteComponent#fromLocation(String)
-
-You may use those methods to quickly create an IgniteComponent with your chosen configuration technique.
-
-### General options
-
-All endpoints share the following options:
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description
-| propagateIncomingBodyIfNoReturnValue | boolean | true |
-If the underlying Ignite operation returns void (no return type), this flag determines whether the producer will copy the IN body into the OUT body.
-
-| treatCollectionsAsCacheObjects | boolean | false |
-Some Ignite operations can deal with multiple elements at once, if passed a Collection. Enabling this option will treat Collections as a single object, invoking the operation variant for cardinality 1.
-|=======================================================================
-
-### OSGi Support
-
-TIP: Apache Ignite supports OSGi from version 1.5.0.final onwards.
-
-When installing on Apache Karaf:
-
-1. Installing the camel-ignite feature will require the Ignite feature repository to be present.
-2. You must have exported from the JRE (system bundle) some low-level, non-standard packages that Ignite requires.
-
-Please refer to the OSGi section in the Ignite documentation for more information.

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-compute-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-compute-component.adoc b/components/camel-ignite/src/main/docs/ignite-compute-component.adoc
new file mode 100644
index 0000000..92bf7c8
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-compute-component.adoc
@@ -0,0 +1,98 @@
+## Ignite Compute Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Compute endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to run https://apacheignite.readme.io/docs/compute-grid[compute operations] on the cluster by passing in an IgniteCallable, an IgniteRunnable, an IgniteClosure, or collections of them, along with their parameters if necessary.
+
+This endpoint only supports producers.
+
+The host part of the endpoint URI is a symbolic endpoint ID, it is not used for any purposes.
+
+The endpoint tries to run the object passed in the body of the IN message as the compute job. It expects different payload types depending on the execution type.
+
+#### Expected payload types
+
+Each operation expects the indicated types:
+[width="100%",cols="1,4",options="header"]
+|=======================================================================
+| Operation | Expected payloads
+| CALL | Collection of IgniteCallable, or a single IgniteCallable.
+| BROADCAST | IgniteCallable, IgniteRunnable, IgniteClosure.
+| APPLY | IgniteClosure.
+| EXECUTE | ComputeTask, Class<? extends ComputeTask> or an object representing parameters if the taskName option is not null.
+| RUN | A Collection of IgniteRunnables, or a single IgniteRunnable.
+| AFFINITY_CALL | IgniteCallable.
+| AFFINITY_RUN | IgniteRunnable.
+|=======================================================================
+
+
+
+// component options: START
+The Ignite Compute component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Compute endpoint is configured using URI syntax:
+
+    ignite-compute:[endpointId]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **endpointId** | *Required* The endpoint ID (not used). |  | String
+|=======================================================================
+
+#### Query Parameters (8 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **clusterGroupExpression** (producer) | An expression that returns the Cluster Group for the IgniteCompute instance. |  | ClusterGroupExpression
+| **computeName** (producer) | The name of the compute job which will be set via link IgniteComputewithName(String). |  | String
+| **executionType** (producer) | *Required* The compute operation to perform. Possible values: CALL BROADCAST APPLY EXECUTE RUN AFFINITY_CALL AFFINITY_RUN. The component expects different payload types depending on the operation. |  | IgniteComputeExecution Type
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **taskName** (producer) | The task name only applicable if using the link IgniteComputeExecutionTypeEXECUTE execution type. |  | String
+| **timeoutMillis** (producer) | The timeout interval for triggered jobs in milliseconds which will be set via link IgniteComputewithTimeout(long). |  | Long
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteComputeExecutionType | IgniteConstants.IGNITE_COMPUTE_EXECUTION_TYPE | IgniteComputeExecutionType enum |
+ Allows you to dynamically change the compute operation to perform.
+
+| CamelIgniteComputeParameters | IgniteConstants.IGNITE_COMPUTE_PARAMS | Any object or Collection of objects. |
+Parameters for APPLY, BROADCAST and EXECUTE operations.
+
+| CamelIgniteComputeReducer | IgniteConstants.IGNITE_COMPUTE_REDUCER | IgniteReducer |
+Reducer for the APPLY and CALL operations.
+
+| CamelIgniteComputeAffinityCacheName | IgniteConstants.IGNITE_COMPUTE_AFFINITY_CACHE_NAME | String |
+Affinity cache name for the AFFINITY_CALL and AFFINITY_RUN operations.
+
+| CamelIgniteComputeAffinityKey | IgniteConstants.IGNITE_COMPUTE_AFFINITY_KEY | Object |
+Affinity key for the AFFINITY_CALL and AFFINITY_RUN operations.
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-events-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-events-component.adoc b/components/camel-ignite/src/main/docs/ignite-events-component.adoc
new file mode 100644
index 0000000..9f8bfa7
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-events-component.adoc
@@ -0,0 +1,54 @@
+## Ignite Events Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Events endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to https://apacheignite.readme.io/docs/events[receive events] from the Ignite cluster by creating a local event listener.
+
+This endpoint only supports consumers.
+The Exchanges created by this consumer put the received Event object into the body of the IN message.
+
+// component options: START
+The Ignite Events component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (consumer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (consumer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (consumer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Events endpoint is configured using URI syntax:
+
+    ignite-events:[endpointId]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **endpointId** | The endpoint ID (not used). |  | String
+|=======================================================================
+
+#### Query Parameters (8 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **bridgeErrorHandler** (consumer) | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN or ERROR level and ignored. | false | boolean
+| **clusterGroupExpression** (consumer) | The cluster group expression. |  | ClusterGroupExpression
+| **events** (consumer) | The event IDs to subscribe to as a Set directly where the IDs are the different constants in org.apache.ignite.events.EventType. | EventType.EVTS_ALL | Set<Integer>OrString
+| **propagateIncomingBodyIfNo ReturnValue** (consumer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (consumer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **exceptionHandler** (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| **exchangePattern** (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc b/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc
new file mode 100644
index 0000000..bef9041
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc
@@ -0,0 +1,51 @@
+## Ignite ID Generator Component
+
+*Available as of Camel version 2.17*
+
+The Ignite ID Generator endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with https://apacheignite.readme.io/docs/id-generator[Ignite Atomic Sequences and ID Generators].
+
+This endpoint only supports producers.
+
+// component options: START
+The Ignite ID Generator component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite ID Generator endpoint is configured using URI syntax:
+
+    ignite-idgen:[name]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **name** | *Required* The sequence name. |  | String
+|=======================================================================
+
+#### Query Parameters (6 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **batchSize** (producer) | The batch size. |  | Integer
+| **initialValue** (producer) | The initial value. | 0 | Long
+| **operation** (producer) | The operation to invoke on the Ignite ID Generator. Superseded by the IgniteConstants.IGNITE_IDGEN_OPERATION header in the IN message. Possible values: ADD_AND_GET GET GET_AND_ADD GET_AND_INCREMENT INCREMENT_AND_GET. |  | IgniteIdGenOperation
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc b/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc
new file mode 100644
index 0000000..d5cc8e2
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc
@@ -0,0 +1,69 @@
+## Ignite Messaging Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Messaging endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to send and consume messages from an https://apacheignite.readme.io/docs/messaging[Ignite topic].
+
+This endpoint supports producers (to send messages) and consumers (to receive messages).
+
+// component options: START
+The Ignite Messaging component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (common) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (common) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (common) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Messaging endpoint is configured using URI syntax:
+
+    ignite-messaging:[topic]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **topic** | *Required* The topic name. |  | String
+|=======================================================================
+
+#### Query Parameters (9 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **propagateIncomingBodyIfNo ReturnValue** (common) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (common) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **bridgeErrorHandler** (consumer) | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN or ERROR level and ignored. | false | boolean
+| **exceptionHandler** (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| **exchangePattern** (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| **clusterGroupExpression** (producer) | The cluster group expression. |  | ClusterGroupExpression
+| **sendMode** (producer) | The send mode to use. Possible values: UNORDERED ORDERED. | UNORDERED | IgniteMessagingSend Mode
+| **timeout** (producer) | The timeout for the send operation when using ordered messages. |  | Long
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteMessagingTopic | IgniteConstants.IGNITE_MESSAGING_TOPIC | String |
+Allows you to dynamically change the topic to send messages to (producer).
+It also carries the topic on which a message was received (consumer).
+
+| CamelIgniteMessagingUUID | IgniteConstants.IGNITE_MESSAGING_UUID | UUID |
+This header is filled in with the UUID of the subscription when a message arrives (consumer).
+|=======================================================================

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-queue-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-queue-component.adoc b/components/camel-ignite/src/main/docs/ignite-queue-component.adoc
new file mode 100644
index 0000000..1d05796
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-queue-component.adoc
@@ -0,0 +1,74 @@
+## Ignite Queues Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Queue endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Queue data structures].
+
+This endpoint only supports producers.
+
+// component options: START
+The Ignite Queues component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Queues endpoint is configured using URI syntax:
+
+    ignite-queue:[name]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **name** | *Required* The queue name. |  | String
+|=======================================================================
+
+#### Query Parameters (7 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **capacity** (producer) | The queue capacity. Default: non-bounded. |  | int
+| **configuration** (producer) | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. |  | CollectionConfiguration
+| **operation** (producer) | The operation to invoke on the Ignite Queue. Superseded by the IgniteConstants.IGNITE_QUEUE_OPERATION header in the IN message. Possible values: CONTAINS ADD SIZE REMOVE ITERATOR CLEAR RETAIN_ALL ARRAY DRAIN ELEMENT PEEK OFFER POLL TAKE PUT. |  | IgniteQueueOperation
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **timeoutMillis** (producer) | The queue timeout in milliseconds. Default: no timeout. |  | Long
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteQueueOperation | IgniteConstants.IGNITE_QUEUE_OPERATION | IgniteQueueOperation enum |
+Allows you to dynamically change the queue operation.
+
+| CamelIgniteQueueMaxElements | IgniteConstants.IGNITE_QUEUE_MAX_ELEMENTS | Integer or int |
+When invoking the DRAIN operation, the amount of items to drain.
+
+| CamelIgniteQueueTransferredCount | IgniteConstants.IGNITE_QUEUE_TRANSFERRED_COUNT | Integer or int |
+The amount of items transferred as the result of the DRAIN operation.
+
+| CamelIgniteQueueTimeoutMillis | IgniteConstants.IGNITE_QUEUE_TIMEOUT_MILLIS | Long or long |
+Dynamically sets the timeout in milliseconds to use when invoking the OFFER or POLL operations.
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-set-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-set-component.adoc b/components/camel-ignite/src/main/docs/ignite-set-component.adoc
new file mode 100644
index 0000000..f161a6e
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-set-component.adoc
@@ -0,0 +1,63 @@
+## Ignite Sets Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Sets endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Set data structures].
+
+This endpoint only supports producers.
+
+// component options: START
+The Ignite Sets component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Sets endpoint is configured using URI syntax:
+
+    ignite-set:[name]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **name** | *Required* The set name. |  | String
+|=======================================================================
+
+#### Query Parameters (5 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **configuration** (producer) | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. |  | CollectionConfiguration
+| **operation** (producer) | The operation to invoke on the Ignite Set. Superseded by the IgniteConstants.IGNITE_SETS_OPERATION header in the IN message. Possible values: CONTAINS ADD SIZE REMOVE ITERATOR CLEAR RETAIN_ALL ARRAY.The set operation to perform. |  | IgniteSetOperation
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteSetsOperation | IgniteConstants.IGNITE_SETS_OPERATION | IgniteSetOperation enum |
+Allows you to dynamically change the set operation.
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite.adoc b/components/camel-ignite/src/main/docs/ignite.adoc
new file mode 100644
index 0000000..0cc2634
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite.adoc
@@ -0,0 +1,111 @@
+## Ignite endpoints Component
+
+*Available as of Camel version 2.17*
+
+https://ignite.apache.org/[Apache Ignite] In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies. It is designed to deliver uncompromised performance for a wide set of in-memory computing use cases from high performance computing, to the industry most advanced data grid, highly available service grid, and streaming. See all https://ignite.apache.org/features.html[features].
+
+image:https://ignite.apache.org/images/apache-ignite.png[]
+
+This component offers seven endpoints to cover much of Ignite's functionality:
+
+* link:ignite-cache-component.html[Ignite Cache].
+* link:ignite-compute-component.html[Ignite Compute].
+* link:ignite-messaging-component.html[Ignite Messaging].
+* link:ignite-events-component.html[Ignite Events].
+* link:ignite-set-component.html[Ignite Sets].
+* link:ignite-queue-component.html[Ignite Queues].
+* link:ignite-idgen-component.html[Ignite ID Generator].
+
+To use this component, add the following dependency to your pom.xml:
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-ignite</artifactId>
+    <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+[IMPORTANT,title=Running in OSGi]
+====
+If running in an OSGi container, please don't miss the <<Ignite-OsgiSupport,OSGi Support>> section below.
+====
+
+
+
+### Initializing the Ignite component
+
+Each instance of the Ignite component is associated with an underlying org.apache.ignite.Ignite instance. You can interact with two Ignite clusters by initializing two instances of the Ignite component and binding them to different IgniteConfigurations. There are 3 ways to initialize the Ignite component:
+
+* By passing in an existing org.apache.ignite.Ignite instance. Here's an example using Spring config:
+
+[source,xml]
+------------------------------------------------------------
+<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
+   <property name="ignite" ref="ignite" />
+</bean>
+------------------------------------------------------------
+
+* By passing in an IgniteConfiguration, either constructed programmatically or through inversion of control (e.g. Spring, Blueprint, etc.). Here's an example using Spring config:
+
+[source,xml]
+-------------------------------------------------------------------
+<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
+   <property name="igniteConfiguration">
+      <bean class="org.apache.ignite.configuration.IgniteConfiguration">
+         [...]
+      </bean>
+   </property>
+</bean>
+-------------------------------------------------------------------
+
+* By passing in a URL, InputStream or String URL to a Spring-based configuration file. In all three cases, you inject them in the same property called configurationResource. Here's an example using Spring config:
+
+[source,xml]
+-------------------------------------------------------------------
+<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
+   <property name="configurationResource" value="file:[...]/ignite-config.xml" />
+</bean>
+-------------------------------------------------------------------
+
+Additionally, if using Camel programmatically, there are several convenience static methods in IgniteComponent that return a component out of any of these configuration options:
+
+* IgniteComponent#fromIgnite(Ignite)
+* IgniteComponent#fromConfiguration(IgniteConfiguration)
+* IgniteComponent#fromInputStream(InputStream)
+* IgniteComponent#fromUrl(URL)
+* IgniteComponent#fromLocation(String)
+
+You may use those methods to quickly create an IgniteComponent with your chosen configuration technique.
+
+### General options
+
+All endpoints share the following options:
+[width="100%",cols="1,1,1,4,1,1",options="header"]
+|=======================================================================
+| Option | Type | Default value | Description
+| propagateIncomingBodyIfNoReturnValue | boolean | true |
+If the underlying Ignite operation returns void (no return type), this flag determines whether the producer will copy the IN body into the OUT body.
+
+| treatCollectionsAsCacheObjects | boolean | false |
+Some Ignite operations can deal with multiple elements at once, if passed a Collection. Enabling this option will treat Collections as a single object, invoking the operation variant for cardinality 1.
+|=======================================================================
+
+### OSGi Support
+
+TIP: Apache Ignite supports OSGi from version 1.5.0.final onwards.
+
+When installing on Apache Karaf:
+
+1. Installing the camel-ignite feature will require the Ignite feature repository to be present.
+2. You must have exported from the JRE (system bundle) some low-level, non-standard packages that Ignite requires.
+
+Please refer to the OSGi section in the Ignite documentation for more information.
+
+### See Also
+
+* http://camel.apache.org/configuring-camel.html[Configuring Camel]
+* http://camel.apache.org/component.html[Component]
+* http://camel.apache.org/endpoint.html[Endpoint]
+* http://camel.apache.org/getting-started.html[Getting Started]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
new file mode 100644
index 0000000..1c56340
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
@@ -0,0 +1,156 @@
+/**
+ * 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.component.ignite;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.cache.IgniteCacheEndpoint;
+import org.apache.camel.component.ignite.compute.IgniteComputeEndpoint;
+import org.apache.camel.component.ignite.events.IgniteEventsEndpoint;
+import org.apache.camel.component.ignite.idgen.IgniteIdGenEndpoint;
+import org.apache.camel.component.ignite.messaging.IgniteMessagingEndpoint;
+import org.apache.camel.component.ignite.queue.IgniteQueueEndpoint;
+import org.apache.camel.component.ignite.set.IgniteSetEndpoint;
+import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+
+/**
+ * This is a base class of camel-ignite components which correspond to following Apache Ignite functions:
+ * <ul>
+ * <li>{@link IgniteSetComponent}: Cache operations.</li>
+ * <li>{@link IgniteSetComponent}: Cluster computation.</li>
+ * <li>{@link IgniteSetComponent}: Messaging.</li>
+ * <li>{@link IgniteSetComponent}: Eventing.</li>
+ * <li>{@link IgniteSetComponent}: Id Generation.</li>
+ * <li>{@link IgniteSetComponent}: Set operations.</li>
+ * <li>{@link IgniteSetComponent}: Queue operations.</li>
+ * </ul>
+ */
+public abstract class AbstractIgniteComponent extends DefaultComponent {
+
+    /**
+     * Modes of managing the underlying {@link Ignite} instance.
+     */
+    public enum IgniteLifecycleMode {
+        USER_MANAGED, COMPONENT_MANAGED
+    }
+
+    /** Ignite configuration. */
+    private IgniteConfiguration igniteConfiguration;
+
+    /** Resource from where to load configuration. */
+    private Object configurationResource;
+
+    /** Ignite instance. */
+    private Ignite ignite;
+
+    /** How the Ignite lifecycle is managed. */
+    private IgniteLifecycleMode lifecycleMode = IgniteLifecycleMode.COMPONENT_MANAGED;
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+
+        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
+            return;
+        }
+
+        // Try to load the configuration from the resource.
+        if (configurationResource != null) {
+            if (configurationResource instanceof URL) {
+                ignite = Ignition.start((URL) configurationResource);
+            } else if (configurationResource instanceof InputStream) {
+                ignite = Ignition.start((InputStream) configurationResource);
+            } else if (configurationResource instanceof String) {
+                ignite = Ignition.start((String) configurationResource);
+            } else {
+                throw new IllegalStateException("An unsupported configuration resource was provided to the Ignite component. " + "Supported types are: URL, InputStream, String.");
+            }
+        } else if (igniteConfiguration != null) {
+            ignite = Ignition.start(igniteConfiguration);
+        } else {
+            throw new IllegalStateException("No configuration resource or IgniteConfiguration was provided to the Ignite component.");
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        super.doStop();
+
+        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
+            return;
+        }
+
+        if (ignite != null) {
+            ignite.close();
+        }
+    }
+
+    /**
+     * Returns the {@link Ignite} instance.
+     */
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    /**
+     * Sets the {@link Ignite} instance.
+     */
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    /**
+     * Gets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI)
+     * or an {@link InputStream}.
+     */
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    /**
+     * Sets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI)
+     * or an {@link InputStream}.
+     */
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    /**
+     * Gets the {@link IgniteConfiguration} if the user set it explicitly.
+     */
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    /**
+     * Allows the user to set a programmatic {@link IgniteConfiguration}.
+     */
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
index b787d15..44ddaf6 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
@@ -20,15 +20,15 @@ import org.apache.camel.Component;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.ignite.Ignite;
 
 /**
  * Base class for all Ignite endpoints.
  */
-@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite:...", title = "Ignite endpoints", syntax = "ignite:...", label = "nosql,cache,compute", producerOnly = true)
 public abstract class AbstractIgniteEndpoint extends DefaultEndpoint {
 
-    protected IgniteComponent component;
+    protected AbstractIgniteComponent component;
 
     @UriParam(defaultValue = "true")
     private boolean propagateIncomingBodyIfNoReturnValue = true;
@@ -45,9 +45,9 @@ public abstract class AbstractIgniteEndpoint extends DefaultEndpoint {
         return false;
     }
 
-    protected IgniteComponent igniteComponent() {
+    protected AbstractIgniteComponent igniteComponent() {
         if (component == null) {
-            component = (IgniteComponent) getComponent();
+            component = (AbstractIgniteComponent) getComponent();
         }
         return component;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
index beccf93..c10c614 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
@@ -36,6 +36,8 @@ import org.apache.camel.util.URISupport;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The Ignite Component integrates Apache Camel with Apache Ignite, providing endpoints for the following functions:
@@ -48,31 +50,14 @@ import org.apache.ignite.configuration.IgniteConfiguration;
  * <li>Set operations.</li>
  * <li>Queue operations.</li>
  * </ul>
+ * @deprecated Use {@link IgniteSetComponent}, {@link IgniteSetComponent}, {@link IgniteSetComponent},
+ * {@link IgniteSetComponent}, {@link IgniteSetComponent}, {@link IgniteSetComponent} and
+ * {@link IgniteSetComponent}
  */
-public class IgniteComponent extends UriEndpointComponent {
+@Deprecated
+public class IgniteComponent extends AbstractIgniteComponent {
 
-    /**
-     * Modes of managing the underlying {@link Ignite} instance.
-     */
-    public enum IgniteLifecycleMode {
-        USER_MANAGED, COMPONENT_MANAGED
-    }
-
-    /** Ignite configuration. */
-    private IgniteConfiguration igniteConfiguration;
-
-    /** Resource from where to load configuration. */
-    private Object configurationResource;
-
-    /** Ignite instance. */
-    private Ignite ignite;
-
-    /** How the Ignite lifecycle is managed. */
-    private IgniteLifecycleMode lifecycleMode = IgniteLifecycleMode.COMPONENT_MANAGED;
-
-    public IgniteComponent() {
-        super(AbstractIgniteEndpoint.class);
-    }
+    private static final Logger LOG = LoggerFactory.getLogger(IgniteComponent.class);
 
     public static IgniteComponent fromIgnite(Ignite ignite) {
         IgniteComponent answer = new IgniteComponent();
@@ -112,6 +97,8 @@ public class IgniteComponent extends UriEndpointComponent {
         URI remainingUri = new URI(URISupport.normalizeUri(remaining));
         String scheme = remainingUri.getScheme();
 
+        LOG.warn("The scheme syntax 'ignite:{}' has been deprecated. Use 'ignite-{}' instead.", scheme, scheme);
+
         switch (scheme) {
         case "cache":
             answer = new IgniteCacheEndpoint(uri, remainingUri, parameters, this);
@@ -145,87 +132,4 @@ public class IgniteComponent extends UriEndpointComponent {
         return answer;
     }
 
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-
-        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
-            return;
-        }
-
-        // Try to load the configuration from the resource.
-        if (configurationResource != null) {
-            if (configurationResource instanceof URL) {
-                ignite = Ignition.start((URL) configurationResource);
-            } else if (configurationResource instanceof InputStream) {
-                ignite = Ignition.start((InputStream) configurationResource);
-            } else if (configurationResource instanceof String) {
-                ignite = Ignition.start((String) configurationResource);
-            } else {
-                throw new IllegalStateException("An unsupported configuration resource was provided to the Ignite component. " + "Supported types are: URL, InputStream, String.");
-            }
-        } else if (igniteConfiguration != null) {
-            ignite = Ignition.start(igniteConfiguration);
-        } else {
-            throw new IllegalStateException("No configuration resource or IgniteConfiguration was provided to the Ignite component.");
-        }
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-
-        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
-            return;
-        }
-
-        if (ignite != null) {
-            ignite.close();
-        }
-    }
-
-    /**
-     * Returns the {@link Ignite} instance.
-     */
-    public Ignite getIgnite() {
-        return ignite;
-    }
-
-    /**
-     * Sets the {@link Ignite} instance.
-     */
-    public void setIgnite(Ignite ignite) {
-        this.ignite = ignite;
-    }
-
-    /**
-     * Gets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI)
-     * or an {@link InputStream}.
-     */
-    public Object getConfigurationResource() {
-        return configurationResource;
-    }
-
-    /**
-     * Sets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI)
-     * or an {@link InputStream}.
-     */
-    public void setConfigurationResource(Object configurationResource) {
-        this.configurationResource = configurationResource;
-    }
-
-    /**
-     * Gets the {@link IgniteConfiguration} if the user set it explicitly.
-     */
-    public IgniteConfiguration getIgniteConfiguration() {
-        return igniteConfiguration;
-    }
-
-    /**
-     * Allows the user to set a programmatic {@link IgniteConfiguration}.
-     */
-    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
-        this.igniteConfiguration = igniteConfiguration;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
new file mode 100644
index 0000000..70098f4
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
@@ -0,0 +1,78 @@
+/**
+ * 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.component.ignite.cache;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite Cache Component.
+ */
+public class IgniteCacheComponent extends AbstractIgniteComponent {
+
+    public static IgniteCacheComponent fromIgnite(Ignite ignite) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromInputStream(InputStream inputStream) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromUrl(URL url) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromLocation(String location) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteCacheEndpoint answer = new IgniteCacheEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}

Loading...