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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new be0da39319 fix(plc4j/scraper): supply default connection manager, port 
to new SPI, re-enable module
be0da39319 is described below

commit be0da3931904b4fdd95717eee31e3dcd42132c96
Author: Sebastian Rühl <[email protected]>
AuthorDate: Fri Jul 10 08:57:54 2026 +0200

    fix(plc4j/scraper): supply default connection manager, port to new SPI, 
re-enable module
    
    The connection-cache re-implementation (1b961389c8) made
    CachedPlcConnectionManager.Builder.build() throw an IllegalStateException
    unless a PlcConnectionManager is set via withConnectionManager().
    The config-based convenience constructors of ScraperImpl and
    TriggeredScraperImpl still built the cache without one, so every
    consumer using them failed at construction time (first observed as the
    plc4x-extras Apache Calcite and Kafka CI failures).
    
    - ScraperImpl/TriggeredScraperImpl: pass new DefaultPlcDriverManager()
      explicitly, restoring the documented pre-rework default
    - Add regression tests covering the config-based constructors (they were
      previously only exercised by a @Disabled manual test, which is why CI
      never caught this)
    - Port the scraper tests to the restructured SPI:
      DefaultPlcResponseItem moved to plc4j-spi-drivers
      (org.apache.plc4x.java.spi.drivers.messages.items)
    - Re-enable the scraper module in the plc4j-tools reactor; it was
      parked by the SPI restructuring (372501287d) pending exactly this
      port and now builds and tests green (opm/scraper-ng stay disabled)
---
 plc4j/tools/pom.xml                                         |  4 ++--
 plc4j/tools/scraper/pom.xml                                 |  6 ++++++
 .../java/org/apache/plc4x/java/scraper/ScraperImpl.java     |  5 ++++-
 .../java/scraper/triggeredscraper/TriggeredScraperImpl.java |  5 ++++-
 .../java/org/apache/plc4x/java/scraper/ScraperTaskTest.java |  2 +-
 .../java/org/apache/plc4x/java/scraper/ScraperTest.java     | 13 ++++++++++++-
 .../scraper/triggeredscraper/TriggeredScraperImplTest.java  | 11 ++++++++++-
 7 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/plc4j/tools/pom.xml b/plc4j/tools/pom.xml
index 418447abcd..3afe91bd53 100644
--- a/plc4j/tools/pom.xml
+++ b/plc4j/tools/pom.xml
@@ -38,9 +38,9 @@
   <subprojects>
     <subproject>capture-replay</subproject>
     <subproject>connection-cache</subproject>
+    <subproject>scraper</subproject>
     <!--subproject>opm</subproject-->
-    <!--subproject>scraper</subproject>
-    <subproject>scraper-ng</subproject-->
+    <!--subproject>scraper-ng</subproject-->
   </subprojects>
 
 </project>
\ No newline at end of file
diff --git a/plc4j/tools/scraper/pom.xml b/plc4j/tools/scraper/pom.xml
index db3ac223ec..4a00a5a9f1 100644
--- a/plc4j/tools/scraper/pom.xml
+++ b/plc4j/tools/scraper/pom.xml
@@ -100,6 +100,12 @@
       <version>0.14.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-spi-drivers</artifactId>
+      <version>0.14.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
 
     <!-- Test dependencies-->
     <dependency>
diff --git 
a/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperImpl.java
 
b/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperImpl.java
index d4428247e1..947e1240c7 100644
--- 
a/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperImpl.java
+++ 
b/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperImpl.java
@@ -24,6 +24,7 @@ import org.apache.commons.lang3.Validate;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
+import org.apache.plc4x.java.DefaultPlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnectionManager;
 import org.apache.plc4x.java.scraper.config.ScraperConfiguration;
 import org.apache.plc4x.java.scraper.exception.ScraperException;
@@ -97,7 +98,9 @@ public class ScraperImpl implements Scraper {
      * (in the background) the idle connection is created and the 
getConnection call returns fast.
      */
     private static CachedPlcConnectionManager 
createCachedPlcConnectionManager() {
-        return CachedPlcConnectionManager.getBuilder().build();
+        return CachedPlcConnectionManager.getBuilder()
+            .withConnectionManager(new DefaultPlcDriverManager())
+            .build();
     }
 
     @Override
diff --git 
a/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
 
b/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
index f394da11b5..2e319ac650 100644
--- 
a/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
+++ 
b/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
@@ -23,6 +23,7 @@ import 
org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
 import org.apache.commons.lang3.Validate;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
+import org.apache.plc4x.java.DefaultPlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.PlcConnectionManager;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
@@ -174,7 +175,9 @@ public class TriggeredScraperImpl implements Scraper, 
TriggeredScraperMBean {
      * (in the background) the idle connection is created and the 
getConnection call returns fast.
      */
     private static CachedPlcConnectionManager 
createCachedPlcConnectionManager() {
-        return CachedPlcConnectionManager.getBuilder().build();
+        return CachedPlcConnectionManager.getBuilder()
+            .withConnectionManager(new DefaultPlcDriverManager())
+            .build();
     }
 
     /**
diff --git 
a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
 
b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
index c0b2289c68..06905aa3a0 100644
--- 
a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
+++ 
b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
@@ -25,7 +25,7 @@ import org.apache.plc4x.java.api.types.PlcResponseCode;
 import org.apache.plc4x.java.spi.values.PlcSTRING;
 import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
-import org.apache.plc4x.java.spi.messages.utils.DefaultPlcResponseItem;
+import org.apache.plc4x.java.spi.drivers.messages.items.DefaultPlcResponseItem;
 import org.assertj.core.api.WithAssertions;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
diff --git 
a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
 
b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
index 3c4ccafa4c..06fd2c226c 100644
--- 
a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
+++ 
b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
@@ -25,7 +25,10 @@ import org.apache.plc4x.java.api.types.PlcResponseCode;
 import org.apache.plc4x.java.spi.values.PlcDINT;
 import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
-import org.apache.plc4x.java.spi.messages.utils.DefaultPlcResponseItem;
+import org.apache.plc4x.java.scraper.config.ScraperConfiguration;
+import org.apache.plc4x.java.scraper.config.ScraperConfigurationClassicImpl;
+import org.apache.plc4x.java.scraper.exception.ScraperException;
+import org.apache.plc4x.java.spi.drivers.messages.items.DefaultPlcResponseItem;
 import org.apache.plc4x.java.utils.cache.CachedPlcConnectionManager;
 import org.assertj.core.api.WithAssertions;
 import org.junit.jupiter.api.Disabled;
@@ -36,6 +39,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import org.mockito.junit.jupiter.MockitoSettings;
 import org.mockito.quality.Strictness;
 
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -77,6 +81,13 @@ class ScraperTest implements WithAssertions {
         Thread.sleep(30_000_000);
     }
 
+    @Test
+    void configConstructor_buildsDefaultConnectionManager() throws 
ScraperException, IOException {
+        ScraperConfiguration config = 
ScraperConfiguration.fromFile("src/test/resources/example.yml", 
ScraperConfigurationClassicImpl.class);
+
+        assertThatCode(() -> new ScraperImpl(config, (j, a, m) -> 
{})).doesNotThrowAnyException();
+    }
+
     @Test
     void scraper_schedulesJob() throws InterruptedException, 
PlcConnectionException {
         DefaultPlcDriverManager driverManager = new DefaultPlcDriverManager();
diff --git 
a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
 
b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
index db7ebfad3b..59dc177086 100644
--- 
a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
+++ 
b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
@@ -27,9 +27,10 @@ import 
org.apache.plc4x.java.scraper.config.ScraperConfigurationClassicImpl;
 import org.apache.plc4x.java.scraper.exception.ScraperException;
 import 
org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollector;
 import 
org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollectorImpl;
-import org.apache.plc4x.java.spi.messages.utils.DefaultPlcResponseItem;
+import org.apache.plc4x.java.spi.drivers.messages.items.DefaultPlcResponseItem;
 import org.apache.plc4x.java.spi.values.PlcBOOL;
 import org.apache.plc4x.java.spi.values.PlcLINT;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
@@ -62,6 +63,14 @@ class TriggeredScraperImplTest {
         mock2Connection.setDevice(mockDevice2);
     }
 
+    @Test
+    void configConstructor_buildsDefaultConnectionManager() throws 
ScraperException, IOException {
+        ScraperConfiguration configuration = 
ScraperConfiguration.fromFile("src/test/resources/mock-scraper-config.yml", 
ScraperConfigurationClassicImpl.class);
+        TriggerCollector triggerCollector = new 
TriggerCollectorImpl(driverManager);
+
+        Assertions.assertDoesNotThrow(() -> new 
TriggeredScraperImpl(configuration, (j, a, m) -> {}, triggerCollector));
+    }
+
     /**
      * Test is added because we assume some strange behavior.
      */

Reply via email to