This is an automated email from the ASF dual-hosted git repository. riemer pushed a commit to branch bump-plc4x-version-0140 in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit a856203d6d725c962900024af2f22196effe519a Author: Dominik Riemer <[email protected]> AuthorDate: Fri Aug 22 21:04:58 2025 +0200 feat: Bump PLC4X version, improve connection cache management --- pom.xml | 15 ++++++++++++++- .../management/connect/PullAdapterScheduler.java | 2 +- streampipes-extensions/streampipes-connectors-plc/pom.xml | 6 +++++- .../generic/connection/ContinuousPlcRequestReader.java | 14 +++++++------- .../plc/adapter/generic/connection/PlcEventGenerator.java | 7 ++----- .../adapter/generic/model/Plc4xConnectionExtractor.java | 11 ++++++++++- .../connectors/plc/adapter/s7/Plc4xS7Adapter.java | 2 +- 7 files changed, 40 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index a54fafdccf..fce3dd55d2 100644 --- a/pom.xml +++ b/pom.xml @@ -111,7 +111,7 @@ <okhttp.version>3.13.1</okhttp.version> <opencsv.version>5.9</opencsv.version> <opennlp.version>2.3.1</opennlp.version> - <plc4x.version>0.12.0</plc4x.version> + <plc4x.version>0.14.0-SNAPSHOT</plc4x.version> <plexus-component-annotations.version>2.2.0</plexus-component-annotations.version> <plexus-interactivity-api.version>1.1</plexus-interactivity-api.version> <plexus-utils.version>4.0.0</plexus-utils.version> @@ -1180,6 +1180,19 @@ <!-- Build Settings --> + <repositories> + <repository> + <id>apache</id> + <url>https://repository.apache.org/content/groups/snapshots/</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + <updatePolicy>always</updatePolicy> + </snapshots> + </repository> + </repositories> <build> diff --git a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/PullAdapterScheduler.java b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/PullAdapterScheduler.java index 0daec7c47b..2832435e39 100644 --- a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/PullAdapterScheduler.java +++ b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/PullAdapterScheduler.java @@ -48,7 +48,7 @@ public class PullAdapterScheduler { try { pullAdapter.pullData(); } catch (ExecutionException | InterruptedException | TimeoutException e) { - LOG.error("Error while pulling data", e); + LOG.error("Error while pulling data: {}", e.getMessage()); SpMonitoringManager.INSTANCE.addErrorMessage( adapterElementId, SpLogEntry.from(System.currentTimeMillis(), SpLogMessage.from(e)) diff --git a/streampipes-extensions/streampipes-connectors-plc/pom.xml b/streampipes-extensions/streampipes-connectors-plc/pom.xml index 4cdc9dadeb..9841f8065f 100644 --- a/streampipes-extensions/streampipes-connectors-plc/pom.xml +++ b/streampipes-extensions/streampipes-connectors-plc/pom.xml @@ -52,6 +52,11 @@ <groupId>org.apache.plc4x</groupId> <artifactId>plc4j-api</artifactId> </dependency> + <dependency> + <groupId>org.apache.plc4x</groupId> + <artifactId>plc4j-spi</artifactId> + <version>${plc4x.version}</version> + </dependency> <dependency> <groupId>org.apache.plc4x</groupId> <artifactId>plc4j-driver-all</artifactId> @@ -78,7 +83,6 @@ <version>${plc4x.version}</version> </dependency> - <!-- Test dependencies --> <dependency> <groupId>org.mockito</groupId> diff --git a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/ContinuousPlcRequestReader.java b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/ContinuousPlcRequestReader.java index 639f4e0534..31d973538a 100644 --- a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/ContinuousPlcRequestReader.java +++ b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/ContinuousPlcRequestReader.java @@ -78,12 +78,6 @@ public class ContinuousPlcRequestReader } } - private void processPlcReadResponse(PlcReadResponse readResponse) { - var event = eventGenerator.makeEvent(readResponse); - collector.collect(event); - this.resetIdlePulls(); - } - private void handleFailingPlcRead(Exception e) { // ensure that the cached connection manager removes the broken connection if (connectionManager instanceof CachedPlcConnectionManager) { @@ -98,13 +92,19 @@ public class ContinuousPlcRequestReader } LOG.error( - "Error while reading from PLC with connection string {}. Setting adapter to idle for {} attemtps. {} ", + "Error while reading from PLC with connection string {}. Setting adapter to idle for {} attempts. {} ", settings.connectionString(), idlePullsBeforeNextAttempt, e.getMessage() ); currentIdlePulls = 0; } + private void processPlcReadResponse(PlcReadResponse readResponse) { + var event = eventGenerator.makeEvent(readResponse); + collector.collect(event); + this.resetIdlePulls(); + } + private void idleRead() { LOG.debug("Skipping pullData call for {}. Idle pulls left: {}", settings.connectionString(), idlePullsBeforeNextAttempt - currentIdlePulls); diff --git a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/PlcEventGenerator.java b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/PlcEventGenerator.java index d0dabef4f3..5f0d3099e2 100644 --- a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/PlcEventGenerator.java +++ b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/connection/PlcEventGenerator.java @@ -25,7 +25,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.HashMap; -import java.util.List; import java.util.Map; public class PlcEventGenerator { @@ -43,9 +42,8 @@ public class PlcEventGenerator { for (String key : nodes.keySet()) { if (response.getResponseCode(key) == PlcResponseCode.OK) { - // if the response is a list, add each element to the result - if (response.getObject(key) instanceof List) { + if (response.getAsPlcValue().getValue(key).isList()) { event.put(key, response.getAsPlcValue() .getValue(key) @@ -57,8 +55,7 @@ public class PlcEventGenerator { event.put(key, response.getObject(key)); } } else { - LOG.error("Error[" + key + "]: " - + response.getResponseCode(key).name()); + LOG.error("Error[{}]: {}", key, response.getResponseCode(key).name()); } } return event; diff --git a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/model/Plc4xConnectionExtractor.java b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/model/Plc4xConnectionExtractor.java index 2ed2a13a2b..ce928b1eeb 100644 --- a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/model/Plc4xConnectionExtractor.java +++ b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/generic/model/Plc4xConnectionExtractor.java @@ -44,6 +44,7 @@ public class Plc4xConnectionExtractor { } public Plc4xConnectionSettings makeSettings() { + var modifiedProtocolCode = checkAndOverrideProtocolCode(); var host = extractHost(); var transportCode = extractTransportCode(); var transportConfigs = extractTransportMetadata(transportCode); @@ -51,12 +52,20 @@ public class Plc4xConnectionExtractor { var configParameters = makeConfigParameters(transportConfigs, protocolConfigs); return new Plc4xConnectionSettings( - getConnectionString(host, transportCode, protocolCode, configParameters), + getConnectionString(host, transportCode, modifiedProtocolCode, configParameters), extractor.singleValueParameter(Plc4xLabels.PLC_POLLING_INTERVAL, Integer.class), extractNodes() ); } + private String checkAndOverrideProtocolCode() { + if (protocolCode.equals("s7")) { + return "s7-light"; + } else { + return protocolCode; + } + } + private String getConnectionString(String host, String transportCode, String protocolCode, diff --git a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/s7/Plc4xS7Adapter.java b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/s7/Plc4xS7Adapter.java index 1c7657a79a..9355b9f79f 100644 --- a/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/s7/Plc4xS7Adapter.java +++ b/streampipes-extensions/streampipes-connectors-plc/src/main/java/org/apache/streampipes/extensions/connectors/plc/adapter/s7/Plc4xS7Adapter.java @@ -65,7 +65,7 @@ public class Plc4xS7Adapter implements StreamPipesAdapter { */ public static final String ID = "org.apache.streampipes.connect.iiot.adapters.plc4x.s7"; - private static final String S7_URL = "s7://"; + private static final String S7_URL = "s7-light://"; /** * Keys of user configuration parameters
