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"); } };
