Repository: camel
Updated Branches:
  refs/heads/master 622e515d4 -> 5865d2e4a


CAMEL-9586 - add option documentation, include component in distribution, 
improve karaf features definition


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

Branch: refs/heads/master
Commit: 5865d2e4aa3f2743640d7cbf199daa2d27dba18d
Parents: 622e515
Author: lburgazzoli <lburgazz...@gmail.com>
Authored: Tue Feb 23 10:35:55 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Feb 23 11:51:43 2016 +0100

----------------------------------------------------------------------
 apache-camel/pom.xml                            |  4 ++
 .../src/main/descriptors/common-bin.xml         |  1 +
 components/camel-etcd/src/main/docs/etcd.adoc   | 26 +++++---
 .../component/etcd/AbstractEtcdEndpoint.java    | 20 +++---
 .../etcd/AbstractEtcdPollingConsumer.java       |  2 +-
 .../component/etcd/AbstractEtcdProducer.java    |  2 +-
 .../camel/component/etcd/EtcdComponent.java     |  9 ++-
 .../camel/component/etcd/EtcdConfiguration.java | 22 +++----
 .../camel/component/etcd/EtcdConstants.java     | 14 ++--
 .../camel/component/etcd/EtcdKeysProducer.java  | 68 ++++++++++++++------
 .../camel/component/etcd/EtcdStatsConsumer.java |  1 +
 .../camel/component/etcd/EtcdStatsProducer.java |  1 +
 .../camel/component/etcd/EtcdWatchConsumer.java |  2 +
 .../camel/component/etcd/EtcdKeysTest.java      |  3 +
 .../camel/component/etcd/EtcdStatsTest.java     |  1 +
 .../camel/component/etcd/EtcdWatchTest.java     |  2 +
 parent/pom.xml                                  |  7 ++
 .../src/main/resources/bundles.properties       |  1 +
 .../features/src/main/resources/features.xml    | 16 ++++-
 19 files changed, 141 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/apache-camel/pom.xml
----------------------------------------------------------------------
diff --git a/apache-camel/pom.xml b/apache-camel/pom.xml
index c404de6..d469490 100644
--- a/apache-camel/pom.xml
+++ b/apache-camel/pom.xml
@@ -221,6 +221,10 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>camel-etcd</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-eventadmin</artifactId>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/apache-camel/src/main/descriptors/common-bin.xml
----------------------------------------------------------------------
diff --git a/apache-camel/src/main/descriptors/common-bin.xml 
b/apache-camel/src/main/descriptors/common-bin.xml
index 865300d..d5024cb 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -68,6 +68,7 @@
         <include>org.apache.camel:camel-ejb</include>
         <include>org.apache.camel:camel-elasticsearch</include>
         <include>org.apache.camel:camel-elsql</include>
+        <include>org.apache.camel:camel-etcd</include>
         <include>org.apache.camel:camel-eventadmin</include>
         <include>org.apache.camel:camel-exec</include>
         <include>org.apache.camel:camel-facebook</include>

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/docs/etcd.adoc
----------------------------------------------------------------------
diff --git a/components/camel-etcd/src/main/docs/etcd.adoc 
b/components/camel-etcd/src/main/docs/etcd.adoc
index 9ca7dcc..9ed8475 100644
--- a/components/camel-etcd/src/main/docs/etcd.adoc
+++ b/components/camel-etcd/src/main/docs/etcd.adoc
@@ -5,26 +5,29 @@
 
 
 
+
+
+
 // endpoint options: START
 The etcd component supports 14 endpoint options which are listed below:
 
 [width="100%",cols="2s,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
-| namespace | common |  | EtcdNamespace | *Required* The namespace
-| path | common |  | String | The path
-| recursive | common | false | boolean | TODO: document me
-| sendEmptyExchangeOnTimeout | common | false | boolean | TODO: document me
-| timeout | common |  | Long | TODO: document me
-| uris | common |  | String | TODO: document me
+| namespace | common |  | EtcdNamespace | *Required* The API namespace to use
+| path | common |  | String | The path the enpoint refers to
+| recursive | common | false | boolean | To apply an action recursively.
+| timeout | common |  | Long | To set the maximum time an action could take to 
complete.
+| uris | common | http://localhost:2379,http://localhost:4001 | String | To 
set the URIs the client connects.
 | bridgeErrorHandler | consumer | false | boolean | 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/ERROR level and ignored.
+| sendEmptyExchangeOnTimeout | consumer | false | boolean | To send an empty 
message in case of timeout watching for a key.
 | exceptionHandler | consumer (advanced) |  | ExceptionHandler | 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/ERROR level and ignored.
-| timeToLive | producer |  | Integer | TODO: document me
+| timeToLive | producer |  | Integer | To set the lifespan of a key in 
milliseconds.
 | exchangePattern | advanced | InOnly | ExchangePattern | Sets the default 
exchange pattern when creating an exchange
 | synchronous | advanced | false | boolean | Sets whether synchronous 
processing should be strictly used or Camel is allowed to use asynchronous 
processing (if supported).
-| password | security |  | String | TODO: document me
-| sslContextParameters | security |  | SSLContextParameters | TODO: document me
-| userName | security |  | String | TODO: document me
+| password | security |  | String | The password to use for basic 
authentication.
+| sslContextParameters | security |  | SSLContextParameters | To configure 
security using SSLContextParameters.
+| userName | security |  | String | The user name to use for basic 
authentication.
 |=======================================================================
 // endpoint options: END
 
@@ -33,6 +36,9 @@ The etcd component supports 14 endpoint options which are 
listed below:
 
 
 
+
+
+
 // component options: START
 The etcd component has no options.
 

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdEndpoint.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdEndpoint.java
index a761c98..62a93aa 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdEndpoint.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdEndpoint.java
@@ -26,7 +26,6 @@ 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;
 
 /**
  * Represents a etcd endpoint.
@@ -34,10 +33,11 @@ import org.apache.camel.util.ObjectHelper;
 @UriEndpoint(scheme = "etcd", title = "etcd", syntax = "etcd:namespace/path", 
consumerClass = AbstractEtcdConsumer.class, label = "etcd")
 public abstract class AbstractEtcdEndpoint extends DefaultEndpoint {
 
-    @UriPath(description = "The namespace") // TODO: document me
+    @UriPath(description = "The API namespace to use", enums = 
"keys,stats,watch")
     @Metadata(required = "true")
     private final EtcdNamespace namespace;
-    @UriPath(description = "The path") // TODO: document me
+    @UriPath(description = "The path the enpoint refers to")
+    @Metadata(required = "false")
     private final String path;
     @UriParam
     private final EtcdConfiguration configuration;
@@ -63,11 +63,16 @@ public abstract class AbstractEtcdEndpoint extends 
DefaultEndpoint {
         return this.namespace;
     }
 
-    public EtcdClient createClient() throws Exception {
+    public String getPath() {
+        return this.path;
+    }
 
-        String[] uris = EtcdConstants.ETCD_DEFAULT_URIS;
+    public EtcdClient createClient() throws Exception {
+        String[] uris;
         if (configuration.getUris() != null) {
             uris = configuration.getUris().split(",");
+        } else {
+            uris = EtcdConstants.ETCD_DEFAULT_URIS.split(",");
         }
 
         URI[] etcdUriList = new URI[uris.length];
@@ -86,15 +91,10 @@ public abstract class AbstractEtcdEndpoint extends 
DefaultEndpoint {
         );
     }
 
-    public String getPath() {
-        return this.path;
-    }
-
     private SSLContext createSslContext(EtcdConfiguration configuration) 
throws Exception {
         if (configuration.getSslContextParameters() != null) {
             return configuration.getSslContextParameters().createSSLContext();
         }
         return null;
     }
-
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdPollingConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdPollingConsumer.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdPollingConsumer.java
index 542250c..80ba445 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdPollingConsumer.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdPollingConsumer.java
@@ -60,7 +60,7 @@ public abstract class AbstractEtcdPollingConsumer extends 
ScheduledPollConsumer
         return configuration;
     }
 
-    protected EtcdNamespace getActionNamespace() {
+    protected EtcdNamespace getNamespace() {
         return namespace;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdProducer.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdProducer.java
index 3c56240..ab6a4ef 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdProducer.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdProducer.java
@@ -59,7 +59,7 @@ public abstract class AbstractEtcdProducer extends 
DefaultProducer {
         return configuration;
     }
 
-    protected EtcdNamespace getActionNamespace() {
+    protected EtcdNamespace getNamespace() {
         return namespace;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
index 412a664..eab5d35 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
@@ -37,10 +37,17 @@ public class EtcdComponent extends UriEndpointComponent {
 
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
-
         String ns = ObjectHelper.before(remaining, "/");
         String path = ObjectHelper.after(remaining, "/");
 
+        if (ns == null) {
+            ns = remaining;
+        }
+
+        if (path == null) {
+            path = remaining;
+        }
+
         EtcdNamespace namespace = 
getCamelContext().getTypeConverter().mandatoryConvertTo(EtcdNamespace.class, 
ns);
 
         if (namespace != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConfiguration.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConfiguration.java
index a68e25b..9fe36cd 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConfiguration.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConfiguration.java
@@ -23,15 +23,15 @@ import org.apache.camel.util.jsse.SSLContextParameters;
 @UriParams
 public class EtcdConfiguration {
 
-    @UriParam
-    private String uris;
+    @UriParam(defaultValue = EtcdConstants.ETCD_DEFAULT_URIS)
+    private String uris = EtcdConstants.ETCD_DEFAULT_URIS;
     @UriParam(label = "security")
     private SSLContextParameters sslContextParameters;
     @UriParam(label = "security")
     private String userName;
     @UriParam(label = "security")
     private String password;
-    @UriParam
+    @UriParam(label = "consumer")
     private boolean sendEmptyExchangeOnTimeout;
     @UriParam
     private boolean recursive;
@@ -45,7 +45,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * To set the URIs the client connects.
      */
     public void setUris(String uris) {
         this.uris = uris;
@@ -56,7 +56,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * To configure security using SSLContextParameters.
      */
     public void setSslContextParameters(SSLContextParameters 
sslContextParameters) {
         this.sslContextParameters = sslContextParameters;
@@ -67,7 +67,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * The user name to use for basic authentication.
      */
     public void setUserName(String userName) {
         this.userName = userName;
@@ -78,7 +78,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * The password to use for basic authentication.
      */
     public void setPassword(String password) {
         this.password = password;
@@ -89,7 +89,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * To send an empty message in case of timeout watching for a key.
      */
     public void setSendEmptyExchangeOnTimeout(boolean 
sendEmptyExchangeOnTimeout) {
         this.sendEmptyExchangeOnTimeout = sendEmptyExchangeOnTimeout;
@@ -100,7 +100,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * To apply an action recursively.
      */
     public void setRecursive(boolean recursive) {
         this.recursive = recursive;
@@ -111,7 +111,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * To set the lifespan of a key in milliseconds.
      */
     public void setTimeToLive(Integer timeToLive) {
         this.timeToLive = timeToLive;
@@ -122,7 +122,7 @@ public class EtcdConfiguration {
     }
 
     /**
-     * TODO: document me
+     * To set the maximum time an action could take to complete.
      */
     public void setTimeout(Long timeout) {
         this.timeout = timeout;

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConstants.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConstants.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConstants.java
index e0a46b6..c3b02f8 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConstants.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdConstants.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.etcd;
 
 public interface EtcdConstants {
 
-    String[] ETCD_DEFAULT_URIS = new String [] {
-        "http://localhost:2379";,
-        "http://localhost:4001";
-    };
+    String ETCD_DEFAULT_URIS = "http://localhost:2379,http://localhost:4001";;
 
     String ETCD_ACTION             = "CamelEtcdAction";
+    String ETCD_NAMESPACE          = "CamelEtcdNamespace";
     String ETCD_PATH               = "CamelEtcdPath";
     String ETCD_TIMEOUT            = "CamelEtcdTimeout";
+    String ETCD_RECURSIVE          = "CamelEtcdRecursive";
+    String ETCD_TTL                = "CamelEtcdTtl";
 
     String ETCD_KEYS_ACTION_SET        = "set";
     String ETCD_KEYS_ACTION_DELETE     = "delete";
@@ -33,7 +33,7 @@ public interface EtcdConstants {
     String ETCD_KEYS_ACTION_GET        = "get";
 
 
-    String ETCD_LEADER_STATS_PATH  = "/stats/leader";
-    String ETCD_SELF_STATS_PATH    = "/stats/self";
-    String ETCD_STORE_STATS_PATH   = "/stats/store";
+    String ETCD_LEADER_STATS_PATH  = "/leader";
+    String ETCD_SELF_STATS_PATH    = "/self";
+    String ETCD_STORE_STATS_PATH   = "/store";
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdKeysProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdKeysProducer.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdKeysProducer.java
index abd1c73..a1964d5 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdKeysProducer.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdKeysProducer.java
@@ -23,6 +23,7 @@ import mousio.etcd4j.EtcdClient;
 import mousio.etcd4j.requests.EtcdKeyDeleteRequest;
 import mousio.etcd4j.requests.EtcdKeyGetRequest;
 import mousio.etcd4j.requests.EtcdKeyPutRequest;
+import mousio.etcd4j.requests.EtcdRequest;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeTimedOutException;
 import org.apache.camel.util.ObjectHelper;
@@ -71,14 +72,11 @@ public class EtcdKeysProducer extends AbstractEtcdProducer {
 
     private void processSet(EtcdClient client, String path, Exchange exchange) 
throws Exception {
         EtcdKeyPutRequest request = client.put(path, 
exchange.getIn().getBody(String.class));
-        if (configuration.getTimeToLive() != null) {
-            request.ttl(configuration.getTimeToLive());
-        }
-        if (configuration.getTimeout() != null) {
-            request.timeout(configuration.getTimeout(), TimeUnit.MILLISECONDS);
-        }
+        setRequestTimeToLive(request, exchange);
+        setRequestTimeout(request, exchange);
 
         try {
+            exchange.getIn().setHeader(EtcdConstants.ETCD_NAMESPACE, 
getNamespace());
             exchange.getIn().setBody(request.send().get());
         } catch (TimeoutException e) {
             throw new ExchangeTimedOutException(exchange, 
configuration.getTimeout());
@@ -87,14 +85,11 @@ public class EtcdKeysProducer extends AbstractEtcdProducer {
 
     private void processGet(EtcdClient client, String path, Exchange exchange) 
throws Exception {
         EtcdKeyGetRequest request = client.get(path);
-        if (configuration.getTimeout() != null) {
-            request.timeout(configuration.getTimeout(), TimeUnit.MILLISECONDS);
-        }
-        if (configuration.isRecursive()) {
-            request.recursive();
-        }
+        setRequestTimeout(request, exchange);
+        setRequestRecursive(request, exchange);
 
         try {
+            exchange.getIn().setHeader(EtcdConstants.ETCD_NAMESPACE, 
getNamespace());
             exchange.getIn().setBody(request.send().get());
         } catch (TimeoutException e) {
             throw new ExchangeTimedOutException(exchange, 
configuration.getTimeout());
@@ -103,20 +98,57 @@ public class EtcdKeysProducer extends AbstractEtcdProducer 
{
 
     private void processDel(EtcdClient client, String path, boolean dir, 
Exchange exchange) throws Exception {
         EtcdKeyDeleteRequest request = client.delete(path);
-        if (configuration.getTimeout() != null) {
-            request.timeout(configuration.getTimeout(), TimeUnit.MILLISECONDS);
-        }
-        if (configuration.isRecursive()) {
-            request.recursive();
-        }
+        setRequestTimeout(request, exchange);
+        setRequestRecursive(request, exchange);
+
         if (dir) {
             request.dir();
         }
 
         try {
+            exchange.getIn().setHeader(EtcdConstants.ETCD_NAMESPACE, 
getNamespace());
             exchange.getIn().setBody(request.send().get());
         } catch (TimeoutException e) {
             throw new ExchangeTimedOutException(exchange, 
configuration.getTimeout());
         }
     }
+
+    private void setRequestTimeout(EtcdRequest<?> request, Exchange exchange) {
+        Long timeout = exchange.getIn().getHeader(EtcdConstants.ETCD_TIMEOUT, 
Long.class);
+        if (timeout != null) {
+            request.timeout(timeout, TimeUnit.MILLISECONDS);
+        } else if (configuration.getTimeout() != null) {
+            request.timeout(configuration.getTimeout(), TimeUnit.MILLISECONDS);
+        }
+    }
+
+    private void setRequestTimeToLive(EtcdKeyPutRequest request, Exchange 
exchange) {
+        Integer ttl = exchange.getIn().getHeader(EtcdConstants.ETCD_TTL, 
Integer.class);
+        if (ttl != null) {
+            request.ttl(ttl);
+        } else if (configuration.getTimeToLive() != null) {
+            request.ttl(configuration.getTimeToLive());
+        }
+    }
+
+    private void setRequestRecursive(EtcdKeyGetRequest request, Exchange 
exchange) {
+        if (isRecursive(exchange)) {
+            request.recursive();
+        }
+    }
+
+    private void setRequestRecursive(EtcdKeyDeleteRequest request, Exchange 
exchange) {
+        if (isRecursive(exchange)) {
+            request.recursive();
+        }
+    }
+
+    private boolean isRecursive(Exchange exchange) {
+        Boolean recursive = 
exchange.getIn().getHeader(EtcdConstants.ETCD_RECURSIVE, Boolean.class);
+        if (recursive != null) {
+            return recursive;
+        }
+
+        return configuration.isRecursive();
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsConsumer.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsConsumer.java
index adda1f3..2959ebf 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsConsumer.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsConsumer.java
@@ -37,6 +37,7 @@ public class EtcdStatsConsumer extends 
AbstractEtcdPollingConsumer {
 
         if (answer != null) {
             Exchange exchange = endpoint.createExchange();
+            exchange.getIn().setHeader(EtcdConstants.ETCD_NAMESPACE, 
getNamespace());
             exchange.getIn().setHeader(EtcdConstants.ETCD_PATH, getPath());
             exchange.getIn().setBody(answer);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsProducer.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsProducer.java
index a5bd069..4b6f9e7 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsProducer.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsProducer.java
@@ -35,6 +35,7 @@ public class EtcdStatsProducer extends AbstractEtcdProducer {
         Object answer = endpoint.getStats(getClient());
 
         if (answer != null) {
+            exchange.getIn().setHeader(EtcdConstants.ETCD_NAMESPACE, 
getNamespace());
             exchange.getIn().setHeader(EtcdConstants.ETCD_PATH, getPath());
             exchange.getIn().setBody(answer);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchConsumer.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchConsumer.java
index 9b960aa..4c3e6fa 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchConsumer.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchConsumer.java
@@ -63,6 +63,7 @@ public class EtcdWatchConsumer extends AbstractEtcdConsumer 
implements ResponseP
             EtcdKeysResponse response = promise.get();
 
             Exchange exchange = endpoint.createExchange();
+            exchange.getIn().setHeader(EtcdConstants.ETCD_NAMESPACE, 
getNamespace());
             exchange.getIn().setHeader(EtcdConstants.ETCD_PATH, 
response.node.key);
             exchange.getIn().setBody(response);
 
@@ -75,6 +76,7 @@ public class EtcdWatchConsumer extends AbstractEtcdConsumer 
implements ResponseP
             if (configuration.isSendEmptyExchangeOnTimeout()) {
                 Exchange exchange = endpoint.createExchange();
                 try {
+                    exchange.getIn().setHeader(EtcdConstants.ETCD_NAMESPACE, 
getNamespace());
                     exchange.getIn().setHeader(EtcdConstants.ETCD_TIMEOUT, 
true);
                     exchange.getIn().setHeader(EtcdConstants.ETCD_PATH, 
getPath());
                     exchange.getIn().setBody(null);

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdKeysTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdKeysTest.java
 
b/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdKeysTest.java
index 89d0ca5..eca2339 100644
--- 
a/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdKeysTest.java
+++ 
b/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdKeysTest.java
@@ -52,6 +52,7 @@ public class EtcdKeysTest extends EtcdTest {
 
         MockEndpoint mockSet = getMockEndpoint("mock:result-set");
         mockSet.expectedMinimumMessageCount(1);
+        mockSet.expectedHeaderReceived(EtcdConstants.ETCD_NAMESPACE, 
EtcdNamespace.keys.name());
         mockSet.expectedHeaderReceived(EtcdConstants.ETCD_PATH, path);
         mockSet.assertIsSatisfied();
 
@@ -67,6 +68,7 @@ public class EtcdKeysTest extends EtcdTest {
 
         MockEndpoint mockGet = getMockEndpoint("mock:result-get");
         mockGet.expectedMinimumMessageCount(1);
+        mockSet.expectedHeaderReceived(EtcdConstants.ETCD_NAMESPACE, 
EtcdNamespace.keys.name());
         mockGet.expectedHeaderReceived(EtcdConstants.ETCD_PATH, path);
         mockGet.expectedMessagesMatches(new Predicate() {
             @Override
@@ -94,6 +96,7 @@ public class EtcdKeysTest extends EtcdTest {
 
         MockEndpoint mockDel = getMockEndpoint("mock:result-del");
         mockDel.expectedMinimumMessageCount(1);
+        mockSet.expectedHeaderReceived(EtcdConstants.ETCD_NAMESPACE, 
EtcdNamespace.keys.name());
         mockDel.expectedHeaderReceived(EtcdConstants.ETCD_PATH, path);
         mockDel.assertIsSatisfied();
 

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdStatsTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdStatsTest.java
 
b/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdStatsTest.java
index b1a578a..b142355 100644
--- 
a/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdStatsTest.java
+++ 
b/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdStatsTest.java
@@ -43,6 +43,7 @@ public class EtcdStatsTest extends EtcdTest {
     protected void testStatsConsumer(String mockEnpoint, String expectedPath, 
final Class<?> expectedType) throws Exception {
         MockEndpoint mock = getMockEndpoint(mockEnpoint);
         mock.expectedMinimumMessageCount(1);
+        mock.expectedHeaderReceived(EtcdConstants.ETCD_NAMESPACE, 
EtcdNamespace.stats.name());
         mock.expectedHeaderReceived(EtcdConstants.ETCD_PATH, expectedPath);
         mock.expectedMessagesMatches(new Predicate() {
             @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdWatchTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdWatchTest.java
 
b/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdWatchTest.java
index d1700e6..0bc7ab9 100644
--- 
a/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdWatchTest.java
+++ 
b/components/camel-etcd/src/test/java/org/apache/camel/component/etcd/EtcdWatchTest.java
@@ -46,6 +46,7 @@ public class EtcdWatchTest extends EtcdTest {
     public void testWatchWithTimeout() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:watch-with-timeout");
         mock.expectedMessageCount(1);
+        mock.expectedHeaderReceived(EtcdConstants.ETCD_NAMESPACE, 
EtcdNamespace.watch.name());
         mock.expectedHeaderReceived(EtcdConstants.ETCD_PATH, "/timeoutKey");
         mock.expectedHeaderReceived(EtcdConstants.ETCD_TIMEOUT, true);
         mock.expectedMessagesMatches(new Predicate() {
@@ -61,6 +62,7 @@ public class EtcdWatchTest extends EtcdTest {
     private void testWatch(String mockEndpoint, final String key, boolean 
updateKey) throws Exception {
         MockEndpoint mock = getMockEndpoint(mockEndpoint);
         mock.expectedMessageCount(2);
+        mock.expectedHeaderReceived(EtcdConstants.ETCD_NAMESPACE, 
EtcdNamespace.watch.name());
         mock.expectedHeaderReceived(EtcdConstants.ETCD_PATH, key);
         mock.expectedMessagesMatches(new Predicate() {
             @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 758d331..18184de 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -343,6 +343,7 @@
     <junit-version>4.11</junit-version>
     <jython-version>2.5.3</jython-version>
     <jzlib-version>1.1.3</jzlib-version>
+    <jzlib-bundle-version>1.1.3_2</jzlib-bundle-version>
     <kafka-version>0.9.0.0</kafka-version>
     <kafka-bundle-version>0.9.0.0_1</kafka-bundle-version>
     <kafka-clients-bundle-version>0.9.0.0_1</kafka-clients-bundle-version>
@@ -409,6 +410,7 @@
     <neethi-bundle-version>3.0.1</neethi-bundle-version>
     <netty3-version>3.10.5.Final</netty3-version>
     <netty-version>4.0.34.Final</netty-version>
+    <netty41-version>4.1.0.CR2</netty41-version>
     <noggit-bundle-version>0.5_1</noggit-bundle-version>
     <!-- should be in-sync with deltaspike -->
     <openwebbeans1-version>1.2.7</openwebbeans1-version>
@@ -881,6 +883,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-etcd</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-eventadmin</artifactId>
         <version>${project.version}</version>
       </dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/platforms/karaf/features/src/main/resources/bundles.properties
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/bundles.properties 
b/platforms/karaf/features/src/main/resources/bundles.properties
index 28082d4..cf535c1 100644
--- a/platforms/karaf/features/src/main/resources/bundles.properties
+++ b/platforms/karaf/features/src/main/resources/bundles.properties
@@ -57,6 +57,7 @@ 
org.apache.servicemix.bundles/org.apache.servicemix.bundles.josql/${josql-bundle
 
org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch-bundle-version}/jar
 
org.apache.servicemix.bundles/org.apache.servicemix.bundles.juel/${juel-bundle-version}/jar
 
org.apache.servicemix.bundles/org.apache.servicemix.bundles.junit/${junit-bundle-version}/jar
+org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib-bundle-version}/jar
 
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene/${lucene-bundle-version}/jar
 
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene-analyzers-common/${lucene-bundle-version}/jar
 
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene-queryparser/${lucene-bundle-version}/jar

http://git-wip-us.apache.org/repos/asf/camel/blob/5865d2e4/platforms/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/features.xml 
b/platforms/karaf/features/src/main/resources/features.xml
index 12c429f..873c188 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -417,8 +417,20 @@
   </feature>
   <feature name='camel-etcd' version='${project.version}' resolver='(obr)' 
start-level='50'>
     <feature version='${project.version}'>camel-core</feature>
-     <bundle 
dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle>
-     <bundle dependency='true'>mvn:org.mousio/etcd4j/${etcd4j-version}</bundle>
+    <bundle 
dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle>
+    <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib-bundle-version}</bundle>
+    <bundle 
dependency='true'>mvn:com.fasterxml.jackson.core/jackson-core/${jackson2-version}</bundle>
+    <bundle 
dependency='true'>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson2-version}</bundle>
+    <bundle 
dependency='true'>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson2-version}</bundle>
+    <bundle 
dependency='true'>mvn:com.fasterxml.jackson.module/jackson-module-afterburner/${jackson2-version}</bundle>
+    <bundle 
dependency='true'>mvn:io.netty/netty-common/${netty41-version}</bundle>
+    <bundle 
dependency='true'>mvn:io.netty/netty-buffer/${netty41-version}</bundle>
+    <bundle 
dependency='true'>mvn:io.netty/netty-resolver/${netty41-version}</bundle>
+    <bundle 
dependency='true'>mvn:io.netty/netty-transport/${netty41-version}</bundle>
+    <bundle 
dependency='true'>mvn:io.netty/netty-handler/${netty41-version}</bundle>
+    <bundle 
dependency='true'>mvn:io.netty/netty-codec/${netty41-version}</bundle>
+    <bundle 
dependency='true'>mvn:io.netty/netty-codec-http/${netty41-version}</bundle>
+    <bundle dependency='true'>mvn:org.mousio/etcd4j/${etcd4j-version}</bundle>
     <bundle>mvn:org.apache.camel/camel-etcd/${project.version}</bundle>
   </feature>
   <feature name='camel-eventadmin' version='${project.version}' 
resolver='(obr)' start-level='50'>

Reply via email to