You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/01/23 11:12:29 UTC

[camel] 08/09: CAMEL-15844: Camel components creating consumer should not do init/start logic in their constructors.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f7b457a959faf12049b1045c5db586877aff05d2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jan 23 11:55:44 2021 +0100

    CAMEL-15844: Camel components creating consumer should not do init/start logic in their constructors.
---
 components/camel-stomp/README.md                   | 20 --------------------
 .../camel/component/stomp/StompConsumer.java       |  2 +-
 .../camel/component/weather/WeatherConsumer.java   | 11 ++++++++---
 .../camel/component/weather/WeatherEndpoint.java   |  2 +-
 .../camel/component/web3j/Web3jConsumer.java       | 22 ++++------------------
 5 files changed, 14 insertions(+), 43 deletions(-)

diff --git a/components/camel-stomp/README.md b/components/camel-stomp/README.md
deleted file mode 100644
index 8341d09..0000000
--- a/components/camel-stomp/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-camel-stomp
-===========
-
-Camel component used for communicating with [Stomp] (http://stomp.github.io/) compliant message brokers, like [Apache ActiveMQ](http://activemq.apache.org) or [ActiveMQ Apollo](http://activemq.apache.org/apollo/).
-
-URI format
-----------
-
-    stomp:destination
-
-Where destination is broker specific. With ActiveMQ you can use queues and topics in the form of
-
-    stomp:queue:test
-
-Samples
--------
-
-    from("direct:foo").to("stomp:queue:test")
-
-
diff --git a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompConsumer.java b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompConsumer.java
index dc2ed63..ff28a15 100644
--- a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompConsumer.java
+++ b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompConsumer.java
@@ -28,7 +28,6 @@ public class StompConsumer extends DefaultConsumer {
 
     public StompConsumer(Endpoint endpoint, Processor processor) {
         super(endpoint, processor);
-        id = getEndpoint().getNextId();
     }
 
     @Override
@@ -38,6 +37,7 @@ public class StompConsumer extends DefaultConsumer {
 
     @Override
     protected void doStart() throws Exception {
+        id = getEndpoint().getNextId();
         getEndpoint().addConsumer(this);
         super.doStart();
     }
diff --git a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
index ec98e10..850f3da 100644
--- a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
+++ b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
@@ -33,11 +33,10 @@ public class WeatherConsumer extends ScheduledPollConsumer {
 
     private static final Logger LOG = LoggerFactory.getLogger(WeatherConsumer.class);
 
-    private final String query;
+    private String query;
 
-    public WeatherConsumer(WeatherEndpoint endpoint, Processor processor, String query) {
+    public WeatherConsumer(WeatherEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
-        this.query = query;
     }
 
     @Override
@@ -46,6 +45,12 @@ public class WeatherConsumer extends ScheduledPollConsumer {
     }
 
     @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+        this.query = this.getEndpoint().getWeatherQuery().getQuery();
+    }
+
+    @Override
     protected int poll() throws Exception {
         LOG.debug("Going to execute the Weather query {}", query);
         HttpClient httpClient = getEndpoint().getConfiguration().getHttpClient();
diff --git a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherEndpoint.java b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherEndpoint.java
index 24cdef7..70cf52d 100644
--- a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherEndpoint.java
+++ b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherEndpoint.java
@@ -45,7 +45,7 @@ public class WeatherEndpoint extends DefaultPollingEndpoint {
 
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
-        WeatherConsumer answer = new WeatherConsumer(this, processor, getWeatherQuery().getQuery());
+        WeatherConsumer answer = new WeatherConsumer(this, processor);
 
         // ScheduledPollConsumer default delay is 500 millis and that is too often for polling a feed, so we override
         // with a new default value. End user can override this value by providing a consumer.delay parameter
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java
index fed6c12..1cbc8ff 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java
@@ -35,14 +35,13 @@ import static org.apache.camel.component.web3j.Web3jHelper.toDefaultBlockParamet
  */
 public class Web3jConsumer extends DefaultConsumer {
     private static final Logger LOG = LoggerFactory.getLogger(Web3jConsumer.class);
-    private final Web3j web3j;
     private final Web3jConfiguration configuration;
+    private Web3j web3j;
     private Subscription subscription;
     private Web3jEndpoint endpoint;
 
     public Web3jConsumer(Web3jEndpoint endpoint, Processor processor, Web3jConfiguration configuration) {
         super(endpoint, processor);
-        this.web3j = endpoint.getWeb3j();
         this.endpoint = endpoint;
         this.configuration = configuration;
     }
@@ -55,6 +54,9 @@ public class Web3jConsumer extends DefaultConsumer {
     @Override
     protected void doStart() throws Exception {
         super.doStart();
+
+        this.web3j = getEndpoint().getWeb3j();
+
         LOG.info("Subscribing to: {}", endpoint.getNodeAddress());
         switch (configuration.getOperation()) {
             case Web3jConstants.ETH_LOG_OBSERVABLE:
@@ -163,22 +165,6 @@ public class Web3jConsumer extends DefaultConsumer {
         LOG.info("Subscribed: {}", this.configuration);
     }
 
-    private EthFilter buildEthFilter() {
-        EthFilter ethFilter = new EthFilter(
-                toDefaultBlockParameter(configuration.getFromBlock()), toDefaultBlockParameter(configuration.getToBlock()),
-                configuration.getAddresses());
-        if (configuration.getTopics() != null) {
-            for (String topic : configuration.getTopics()) {
-                if (topic != null && topic.length() > 0) {
-                    ethFilter.addSingleTopic(topic);
-                } else {
-                    ethFilter.addNullTopic();
-                }
-            }
-        }
-        return ethFilter;
-    }
-
     private void ethBlockHashObservable(String x) {
         LOG.debug("processEthBlock {}", x);
         Exchange exchange = this.getEndpoint().createExchange();