CAMEL-9586: Reworked a bit to include component docs.

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

Branch: refs/heads/master
Commit: 5ab310241bc5ff58a534c401d5dd2c794df0fe60
Parents: f383b20
Author: Claus Ibsen <[email protected]>
Authored: Tue Feb 23 08:37:11 2016 +0100
Committer: Claus Ibsen <[email protected]>
Committed: Tue Feb 23 08:37:11 2016 +0100

----------------------------------------------------------------------
 components/camel-etcd/src/main/docs/etcd.adoc   |  5 ++--
 .../component/etcd/AbstractEtcdConsumer.java    | 11 ++++++++
 .../component/etcd/AbstractEtcdEndpoint.java    |  9 ------
 .../camel/component/etcd/EtcdComponent.java     | 25 +++++++++++------
 .../camel/component/etcd/EtcdConstants.java     |  4 ---
 .../camel/component/etcd/EtcdKeysProducer.java  |  4 +--
 .../camel/component/etcd/EtcdNamespace.java     | 29 +-------------------
 .../camel/component/etcd/EtcdStatsEndpoint.java |  4 ++-
 .../camel/component/etcd/EtcdWatchConsumer.java | 12 ++++----
 .../camel/component/etcd/EtcdWatchEndpoint.java |  4 ++-
 .../camel/component/etcd/EtcdKeysTest.java      |  6 ++--
 .../camel/component/etcd/EtcdStatsTest.java     | 12 ++++----
 .../camel/component/etcd/EtcdWatchTest.java     |  8 +++---
 13 files changed, 56 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 d416460..9ca7dcc 100644
--- a/components/camel-etcd/src/main/docs/etcd.adoc
+++ b/components/camel-etcd/src/main/docs/etcd.adoc
@@ -4,15 +4,15 @@
 
 
 
+
 // endpoint options: START
-The etcd component supports 15 endpoint options which are listed below:
+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
-| path | common |  | String | TODO: document me
 | recursive | common | false | boolean | TODO: document me
 | sendEmptyExchangeOnTimeout | common | false | boolean | TODO: document me
 | timeout | common |  | Long | TODO: document me
@@ -32,6 +32,7 @@ The etcd component supports 15 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/5ab31024/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdConsumer.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdConsumer.java
index 0d70397..84533d8 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdConsumer.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/AbstractEtcdConsumer.java
@@ -56,4 +56,15 @@ public abstract class AbstractEtcdConsumer extends 
DefaultConsumer {
         return client;
     }
 
+    public EtcdConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    public EtcdNamespace getNamespace() {
+        return namespace;
+    }
+
+    public String getPath() {
+        return path;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 5c7bd34..a761c98 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
@@ -90,15 +90,6 @@ public abstract class AbstractEtcdEndpoint extends 
DefaultEndpoint {
         return this.path;
     }
 
-    public String getRemainingPath(String defaultPath) {
-        String path = getPath().substring(namespace.path().length());
-        if (ObjectHelper.isEmpty(path)) {
-            path = defaultPath;
-        }
-
-        return path;
-    }
-
     private SSLContext createSslContext(EtcdConfiguration configuration) 
throws Exception {
         if (configuration.getSslContextParameters() != null) {
             return configuration.getSslContextParameters().createSSLContext();

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 fca9136..412a664 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
@@ -21,6 +21,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * Represents the component that manages {@link AbstractEtcdEndpoint}.
@@ -36,36 +37,42 @@ public class EtcdComponent extends UriEndpointComponent {
 
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
-        EtcdNamespace namespace = EtcdNamespace.fromPath(remaining);
+
+        String ns = ObjectHelper.before(remaining, "/");
+        String path = ObjectHelper.after(remaining, "/");
+
+        EtcdNamespace namespace = 
getCamelContext().getTypeConverter().mandatoryConvertTo(EtcdNamespace.class, 
ns);
+
         if (namespace != null) {
-            if (!remaining.startsWith("/")) {
-                remaining = "/" + remaining;
+            // path must start with leading slash
+            if (!path.startsWith("/")) {
+                path = "/" + path;
             }
 
             switch (namespace) {
-            case STATS:
+            case stats:
                 return new EtcdStatsEndpoint(
                     uri,
                     this,
                     loadConfiguration(new EtcdConfiguration(), parameters),
                     namespace,
-                    remaining
+                    path
                 );
-            case WATCH:
+            case watch:
                 return new EtcdWatchEndpoint(
                     uri,
                     this,
                     loadConfiguration(new EtcdConfiguration(), parameters),
                     namespace,
-                    remaining
+                    path
                 );
-            case KEYS:
+            case keys:
                 return new EtcdKeysEndpoint(
                     uri,
                     this,
                     loadConfiguration(new EtcdConfiguration(), parameters),
                     namespace,
-                    remaining
+                    path
                 );
             default:
                 throw new IllegalStateException("No endpoint for " + 
remaining);

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 0b102c3..e0a46b6 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
@@ -23,10 +23,6 @@ public interface EtcdConstants {
         "http://localhost:4001";
     };
 
-    String ETCD_PATH_STATS         = "/stats";
-    String ETCD_PATH_WATCH         = "/watch";
-    String ETCD_PATH_KEYS          = "/keys";
-
     String ETCD_ACTION             = "CamelEtcdAction";
     String ETCD_PATH               = "CamelEtcdPath";
     String ETCD_TIMEOUT            = "CamelEtcdTimeout";

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 fb9f2a1..abd1c73 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
@@ -29,13 +29,11 @@ import org.apache.camel.util.ObjectHelper;
 
 public class EtcdKeysProducer extends AbstractEtcdProducer {
     private final EtcdConfiguration configuration;
-    private final String defaultPath;
 
     public EtcdKeysProducer(EtcdKeysEndpoint endpoint, EtcdConfiguration 
configuration, EtcdNamespace namespace, String path) {
         super(endpoint, configuration, namespace, path);
 
         this.configuration = configuration;
-        this.defaultPath = endpoint.getRemainingPath(path);
     }
 
     @Override
@@ -43,7 +41,7 @@ public class EtcdKeysProducer extends AbstractEtcdProducer {
         String action = exchange.getIn().getHeader(EtcdConstants.ETCD_ACTION, 
String.class);
         String path = exchange.getIn().getHeader(EtcdConstants.ETCD_PATH, 
String.class);
         if (path == null) {
-            path = defaultPath;
+            path = getPath();
         }
 
         ObjectHelper.notEmpty(path, EtcdConstants.ETCD_PATH);

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdNamespace.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdNamespace.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdNamespace.java
index 9517c67..5bbd108 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdNamespace.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdNamespace.java
@@ -16,34 +16,7 @@
  */
 package org.apache.camel.component.etcd;
 
-import org.apache.camel.util.ObjectHelper;
-
 public enum EtcdNamespace {
-    STATS(EtcdConstants.ETCD_PATH_STATS),
-    WATCH(EtcdConstants.ETCD_PATH_WATCH),
-    KEYS(EtcdConstants.ETCD_PATH_KEYS);
-
-    static final EtcdNamespace[] VALUES = values();
-    
-    final String path;
-
-    EtcdNamespace(String path) {
-        this.path = path;
-    }
-
-    public String path() {
-        return path;
-    }
-
-    static EtcdNamespace fromPath(String name) {
-        if (ObjectHelper.isNotEmpty(name)) {
-            for (int i = VALUES.length - 1; i >= 0; --i) {
-                if (name.startsWith(VALUES[i].path)) {
-                    return VALUES[i];
-                }
-            }
-        }
 
-        return null;
-    }
+    stats, watch, keys
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsEndpoint.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsEndpoint.java
index e3386bc..a081771 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsEndpoint.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdStatsEndpoint.java
@@ -35,7 +35,9 @@ public class EtcdStatsEndpoint extends AbstractEtcdEndpoint {
 
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
-        return new EtcdStatsConsumer(this, processor, getConfiguration(), 
getNamespace(), getPath());
+        EtcdStatsConsumer consumer = new EtcdStatsConsumer(this, processor, 
getConfiguration(), getNamespace(), getPath());
+        configureConsumer(consumer);
+        return consumer;
     }
 
     Object getStats(EtcdClient client) {

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 53ce279..9b960aa 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
@@ -33,14 +33,12 @@ public class EtcdWatchConsumer extends AbstractEtcdConsumer 
implements ResponseP
 
     private final EtcdWatchEndpoint endpoint;
     private final EtcdConfiguration configuration;
-    private final String defaultPath;
 
     public EtcdWatchConsumer(EtcdWatchEndpoint endpoint, Processor processor, 
EtcdConfiguration configuration, EtcdNamespace namespace, String path) {
         super(endpoint, processor, configuration, namespace, path);
 
         this.endpoint = endpoint;
         this.configuration = configuration;
-        this.defaultPath = endpoint.getRemainingPath(path);
     }
 
     @Override
@@ -72,18 +70,18 @@ public class EtcdWatchConsumer extends AbstractEtcdConsumer 
implements ResponseP
 
             watch();
         } catch (TimeoutException e) {
-            LOGGER.debug("Timeout watching for " + defaultPath);
+            LOGGER.debug("Timeout watching for {}", getPath());
 
             if (configuration.isSendEmptyExchangeOnTimeout()) {
+                Exchange exchange = endpoint.createExchange();
                 try {
-                    Exchange exchange = endpoint.createExchange();
                     exchange.getIn().setHeader(EtcdConstants.ETCD_TIMEOUT, 
true);
-                    exchange.getIn().setHeader(EtcdConstants.ETCD_PATH, 
defaultPath);
+                    exchange.getIn().setHeader(EtcdConstants.ETCD_PATH, 
getPath());
                     exchange.getIn().setBody(null);
 
                     getProcessor().process(exchange);
                 } catch (Exception e1) {
-                    throw new IllegalArgumentException(e);
+                    getExceptionHandler().handleException("Error processing 
exchange", exchange, e1);
                 }
             }
         } catch (Exception e) {
@@ -96,7 +94,7 @@ public class EtcdWatchConsumer extends AbstractEtcdConsumer 
implements ResponseP
             return;
         }
 
-        EtcdKeyGetRequest request = 
getClient().get(defaultPath).waitForChange();
+        EtcdKeyGetRequest request = getClient().get(getPath()).waitForChange();
         if (configuration.isRecursive()) {
             request.recursive();
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchEndpoint.java
 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchEndpoint.java
index 3dbfc33..0b74217 100644
--- 
a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchEndpoint.java
+++ 
b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdWatchEndpoint.java
@@ -34,6 +34,8 @@ public class EtcdWatchEndpoint extends AbstractEtcdEndpoint {
 
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
-        return new EtcdWatchConsumer(this, processor, getConfiguration(), 
getNamespace(), getPath());
+        EtcdWatchConsumer consumer = new EtcdWatchConsumer(this, processor, 
getConfiguration(), getNamespace(), getPath());
+        configureConsumer(consumer);
+        return consumer;
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 99590b5..89d0ca5 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
@@ -111,13 +111,13 @@ public class EtcdKeysTest extends EtcdTest {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:keys-set")
-                    .to("etcd:/keys")
+                    .to("etcd:keys")
                         .to("mock:result-set");
                 from("direct:keys-get")
-                    .to("etcd:/keys")
+                    .to("etcd:keys")
                         .to("mock:result-get");
                 from("direct:keys-del")
-                    .to("etcd:/keys")
+                    .to("etcd:keys")
                         .to("mock:result-del");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 4bfcd07..b1a578a 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
@@ -65,22 +65,22 @@ public class EtcdStatsTest extends EtcdTest {
         return new RouteBuilder() {
             public void configure() {
                 // CONSUMER
-                
from("etcd:/stats/leader?consumer.delay=50&consumer.initialDelay=0")
+                
from("etcd:stats/leader?consumer.delay=50&consumer.initialDelay=0")
                     .to("mock:stats-leader-consumer");
-                
from("etcd:/stats/self?consumer.delay=50&consumer.initialDelay=0")
+                
from("etcd:stats/self?consumer.delay=50&consumer.initialDelay=0")
                     .to("mock:stats-self-consumer");
-                
from("etcd:/stats/store?consumer.delay=50&consumer.initialDelay=0")
+                
from("etcd:stats/store?consumer.delay=50&consumer.initialDelay=0")
                     .to("mock:stats-store-consumer");
 
                 // PRODUCER
                 from("direct:stats-leader")
-                    .to("etcd:/stats/leader")
+                    .to("etcd:stats/leader")
                         .to("mock:stats-leader-producer");
                 from("direct:stats-self")
-                    .to("etcd:/stats/self")
+                    .to("etcd:stats/self")
                         .to("mock:stats-self-producer");
                 from("direct:stats-store")
-                    .to("etcd:/stats/store")
+                    .to("etcd:stats/store")
                         .to("mock:stats-store-producer");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/5ab31024/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 2af853a..d1700e6 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
@@ -83,17 +83,17 @@ public class EtcdWatchTest extends EtcdTest {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from("etcd:/watch/myKey1")
+                from("etcd:watch/myKey1")
                     .process(NODE_TO_VALUE_IN)
                     .to("mock:watch-with-path");
-                from("etcd:/watch/recursive?recursive=true")
+                from("etcd:watch/recursive?recursive=true")
                     .process(NODE_TO_VALUE_IN)
                     .to("log:org.apache.camel.component.etcd?level=INFO")
                     .to("mock:watch-recursive");
-                from("etcd:/watch?path=/myKey2")
+                from("etcd:watch/myKey2")
                     .process(NODE_TO_VALUE_IN)
                     .to("mock:watch-with-config-path");
-                
from("etcd:/watch/timeoutKey?timeout=250&sendEmptyExchangeOnTimeout=true")
+                
from("etcd:watch/timeoutKey?timeout=250&sendEmptyExchangeOnTimeout=true")
                     .to("mock:watch-with-timeout");
             }
         };

Reply via email to