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 2025/10/15 11:32:16 UTC

(camel) branch main updated: CAMEL-22491: camel-plc4j: Avoid NPE if consumer cannot connect to device.

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

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


The following commit(s) were added to refs/heads/main by this push:
     new dfa1db173a71 CAMEL-22491: camel-plc4j: Avoid NPE if consumer cannot connect to device.
dfa1db173a71 is described below

commit dfa1db173a713e6bfe8fda2233095ad7b6a3aba9
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 15 13:31:56 2025 +0200

    CAMEL-22491: camel-plc4j: Avoid NPE if consumer cannot connect to device.
---
 .../java/org/apache/camel/component/plc4x/Plc4XConsumer.java     | 9 ++++++---
 .../org/apache/camel/component/plc4x/Plc4XPollingConsumer.java   | 3 +++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java
index 478fdd5e3b6a..f16ade351fd5 100644
--- a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java
@@ -89,9 +89,14 @@ public class Plc4XConsumer extends DefaultConsumer {
     }
 
     private void startUnTriggered() {
+        PlcReadRequest request;
         try {
             plc4XEndpoint.reconnectIfNeeded();
-        } catch (PlcConnectionException e) {
+            if (plc4XEndpoint.connection == null) {
+                throw new PlcConnectionException("Cannot establish connection");
+            }
+            request = plc4XEndpoint.buildPlcReadRequest();
+        } catch (Exception e) {
             if (LOGGER.isTraceEnabled()) {
                 LOGGER.warn("Unable to reconnect, skipping request", e);
             } else {
@@ -100,8 +105,6 @@ public class Plc4XConsumer extends DefaultConsumer {
             return;
         }
 
-        PlcReadRequest request = plc4XEndpoint.buildPlcReadRequest();
-
         future = executorService.schedule(() -> request.execute().thenAccept(response -> {
             try {
                 Exchange exchange = plc4XEndpoint.createExchange();
diff --git a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XPollingConsumer.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XPollingConsumer.java
index 570fd07a24a2..8c0e10e1bfa1 100644
--- a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XPollingConsumer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XPollingConsumer.java
@@ -86,6 +86,9 @@ public class Plc4XPollingConsumer extends EventDrivenPollingConsumer {
         Exchange exchange = plc4XEndpoint.createExchange();
         try {
             plc4XEndpoint.reconnectIfNeeded();
+            if (plc4XEndpoint.connection == null) {
+                throw new PlcConnectionException("Cannot establish connection");
+            }
 
             PlcReadRequest request = plc4XEndpoint.buildPlcReadRequest();
             CompletableFuture<? extends PlcReadResponse> future