You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2025/05/21 16:47:24 UTC
(plc4x-extras) branch develop updated: feat(nifi): NiFi 1 and 2 compatibility (#336)
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x-extras.git
The following commit(s) were added to refs/heads/develop by this push:
new ef1b81b feat(nifi): NiFi 1 and 2 compatibility (#336)
ef1b81b is described below
commit ef1b81bc30c8f63ffb6629a2b047530b48bfa83d
Author: Unai LerĂa Fortea <un...@zylk.net>
AuthorDate: Wed May 21 18:47:19 2025 +0200
feat(nifi): NiFi 1 and 2 compatibility (#336)
Added a second repo to allow building a NiFi 1 and NiFi 2 compatible version of the integration module at the same time.
---
plc4j/integrations/apache-nifi/.gitignore | 1 +
.../{ => nifi-1}/nifi-plc4x-nar/bin/.gitignore | 0
.../{ => nifi-1}/nifi-plc4x-nar/pom.xml | 36 ++++--
.../{ => nifi-1}/nifi-plc4x-processors/pom.xml | 43 +++----
.../org/apache/plc4x/nifi/BasePlc4xProcessor.java | 0
.../plc4x/nifi/Plc4xListenRecordProcessor.java | 0
.../org/apache/plc4x/nifi/Plc4xSinkProcessor.java | 0
.../plc4x/nifi/Plc4xSinkRecordProcessor.java | 0
.../apache/plc4x/nifi/Plc4xSourceProcessor.java | 0
.../plc4x/nifi/Plc4xSourceRecordProcessor.java | 0
.../nifi/address/AddressesAccessStrategy.java | 0
.../plc4x/nifi/address/AddressesAccessUtils.java | 0
.../plc4x/nifi/address/BaseAccessStrategy.java | 0
.../address/DynamicPropertyAccessStrategy.java | 0
.../nifi/address/FilePropertyAccessStrategy.java | 0
.../nifi/address/TextPropertyAccessStrategy.java | 0
.../nifi/record/Plc4xReadResponseRecordSet.java | 0
.../org/apache/plc4x/nifi/record/Plc4xWriter.java | 0
.../plc4x/nifi/record/RecordPlc4xWriter.java | 0
.../org/apache/plc4x/nifi/record/SchemaCache.java | 0
.../nifi/subscription/Plc4xListenerDispatcher.java | 0
.../nifi/subscription/Plc4xSubscriptionType.java | 0
.../org/apache/plc4x/nifi/util/Plc4xCommon.java | 0
.../services/org.apache.nifi.processor.Processor | 0
.../plc4x/nifi/Plc4xListenRecordProcessorTest.java | 0
.../java/org/apache/plc4x/nifi/Plc4xNifiTest.java | 0
.../apache/plc4x/nifi/Plc4xSinkProcessorTest.java | 0
.../plc4x/nifi/Plc4xSinkRecordProcessorTest.java | 0
.../plc4x/nifi/Plc4xSourceProcessorTest.java | 6 +-
.../plc4x/nifi/Plc4xSourceRecordProcessorTest.java | 0
.../plc4x/nifi/address/AccessStrategyTest.java | 0
.../apache/plc4x/nifi/record/SchemaCacheTest.java | 0
.../apache/plc4x/nifi/util/Plc4xCommonTest.java | 0
.../src/test/resources/logback-test.xml | 0
plc4j/integrations/apache-nifi/nifi-1/pom.xml | 128 +++++++++++++++++++
.../nifi-2-plc4x-nar}/bin/.gitignore | 0
.../nifi-2-plc4x-nar}/pom.xml | 37 ++++--
.../nifi-2-plc4x-processors}/pom.xml | 45 ++++---
.../org/apache/plc4x/nifi/BasePlc4xProcessor.java | 4 +-
.../plc4x/nifi/Plc4xListenRecordProcessor.java | 5 +-
.../org/apache/plc4x/nifi/Plc4xSinkProcessor.java | 0
.../plc4x/nifi/Plc4xSinkRecordProcessor.java | 0
.../apache/plc4x/nifi/Plc4xSourceProcessor.java | 0
.../plc4x/nifi/Plc4xSourceRecordProcessor.java | 0
.../nifi/address/AddressesAccessStrategy.java | 0
.../plc4x/nifi/address/AddressesAccessUtils.java | 0
.../plc4x/nifi/address/BaseAccessStrategy.java | 2 +-
.../address/DynamicPropertyAccessStrategy.java | 0
.../nifi/address/FilePropertyAccessStrategy.java | 0
.../nifi/address/TextPropertyAccessStrategy.java | 0
.../nifi/record/Plc4xReadResponseRecordSet.java | 0
.../org/apache/plc4x/nifi/record/Plc4xWriter.java | 0
.../plc4x/nifi/record/RecordPlc4xWriter.java | 0
.../org/apache/plc4x/nifi/record/SchemaCache.java | 0
.../nifi/subscription/Plc4xListenerDispatcher.java | 0
.../nifi/subscription/Plc4xSubscriptionType.java | 0
.../org/apache/plc4x/nifi/util/Plc4xCommon.java | 0
.../services/org.apache.nifi.processor.Processor | 0
.../plc4x/nifi/Plc4xListenRecordProcessorTest.java | 0
.../java/org/apache/plc4x/nifi/Plc4xNifiTest.java | 0
.../apache/plc4x/nifi/Plc4xSinkProcessorTest.java | 0
.../plc4x/nifi/Plc4xSinkRecordProcessorTest.java | 3 +
.../plc4x/nifi/Plc4xSourceProcessorTest.java | 19 ++-
.../plc4x/nifi/Plc4xSourceRecordProcessorTest.java | 3 +
.../plc4x/nifi/address/AccessStrategyTest.java | 24 ++--
.../apache/plc4x/nifi/record/SchemaCacheTest.java | 0
.../apache/plc4x/nifi/util/Plc4xCommonTest.java | 3 +-
.../src/test/resources/logback-test.xml | 0
.../integrations/apache-nifi/{ => nifi-2}/pom.xml | 135 ++++++++++-----------
plc4j/integrations/apache-nifi/pom.xml | 133 +++-----------------
70 files changed, 347 insertions(+), 280 deletions(-)
diff --git a/plc4j/integrations/apache-nifi/.gitignore b/plc4j/integrations/apache-nifi/.gitignore
new file mode 100644
index 0000000..8652d88
--- /dev/null
+++ b/plc4j/integrations/apache-nifi/.gitignore
@@ -0,0 +1 @@
+**/target*/*
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/bin/.gitignore
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/bin/.gitignore
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/pom.xml
similarity index 78%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/pom.xml
index baf43bd..7d2c50a 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/pom.xml
@@ -22,37 +22,36 @@
<parent>
<groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-apache-nifi</artifactId>
+ <artifactId>plc4j-apache-nifi-1</artifactId>
<version>0.13.0-SNAPSHOT</version>
</parent>
<artifactId>plc4j-nifi-plc4x-nar</artifactId>
<packaging>nar</packaging>
- <name>PLC4J: Integrations: Apache Nifi: NAR</name>
+ <name>PLC4J: Integrations: Apache Nifi 1: NAR</name>
- <properties>
- <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
+ <properties>
<maven.javadoc.skip>true</maven.javadoc.skip>
<source.skip>true</source.skip>
</properties>
<dependencies>
- <dependency>
- <groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-nifi-plc4x-processors</artifactId>
- <version>0.13.0-SNAPSHOT</version>
- </dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-standard-services-api-nar</artifactId>
<version>${nifi.version}</version>
<type>nar</type>
- <scope>provided</scope>
</dependency>
<!-- PLC4X -->
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-nifi-plc4x-processors</artifactId>
+ <version>0.13.0-SNAPSHOT</version>
+ </dependency>
+
<dependency>
<groupId>org.apache.plc4x</groupId>
<artifactId>plc4j-api</artifactId>
@@ -68,4 +67,21 @@
</dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <!-- Add the ability to create nar packages -->
+ <plugin>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-nar-maven-plugin</artifactId>
+ </plugin>
+ <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>buildnumber-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+
</project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/pom.xml
similarity index 93%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/pom.xml
index 1b35644..6b4806c 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/pom.xml
@@ -23,13 +23,13 @@
<parent>
<groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-apache-nifi</artifactId>
+ <artifactId>plc4j-apache-nifi-1</artifactId>
<version>0.13.0-SNAPSHOT</version>
</parent>
<artifactId>plc4j-nifi-plc4x-processors</artifactId>
- <name>PLC4J: Integrations: Apache Nifi: Processors</name>
+ <name>PLC4J: Integrations: Apache Nifi 1: Processors</name>
<properties>
<project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
@@ -51,26 +51,40 @@
<artifactId>plc4j-spi</artifactId>
<version>0.13.0-SNAPSHOT</version>
</dependency>
+
+ <!-- NiFi -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
- <artifactId>nifi-record</artifactId>
+ <artifactId>nifi-utils</artifactId>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
- <artifactId>nifi-record-serialization-service-api</artifactId>
+ <artifactId>nifi-record</artifactId>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
- <artifactId>nifi-utils</artifactId>
+ <artifactId>nifi-record-serialization-service-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-json-utils</artifactId>
</dependency>
+
+ <!-- Read tags from file -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+
+ <!-- Testing -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-record-serialization-services</artifactId>
@@ -82,14 +96,7 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
+
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-schema-registry-service-api</artifactId>
@@ -105,10 +112,6 @@
<artifactId>nifi-mock-record-utils</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- </dependency>
<!-- This one is for test purpouses only, drivers are included in the nar -->
<dependency>
@@ -176,11 +179,5 @@
<version>5.2.0</version>
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-standard-nar</artifactId>
- <type>nar</type>
- </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
similarity index 94%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
index 6505503..0a3f672 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
@@ -18,6 +18,9 @@
*/
package org.apache.plc4x.nifi;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
import org.apache.nifi.util.TestRunner;
import org.apache.nifi.util.TestRunners;
import org.apache.plc4x.nifi.address.AddressesAccessUtils;
@@ -37,12 +40,13 @@ public class Plc4xSourceProcessorTest extends Plc4xNifiTest {
private static final int NUMBER_OF_CALLS = 5;
@BeforeEach
- public void init() {
+ public void init() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
testRunner = TestRunners.newTestRunner(Plc4xSourceProcessor.class);
testRunner.setIncomingConnection(false);
testRunner.setValidateExpressionUsage(true);
testRunner.setVariable("url", "simulated://127.0.0.1");
+
testRunner.setProperty(Plc4xSourceProcessor.PLC_CONNECTION_STRING, "${url}");
testRunner.setProperty(Plc4xSourceProcessor.PLC_FUTURE_TIMEOUT_MILISECONDS, "1000");
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/resources/logback-test.xml
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/resources/logback-test.xml
diff --git a/plc4j/integrations/apache-nifi/nifi-1/pom.xml b/plc4j/integrations/apache-nifi/nifi-1/pom.xml
new file mode 100644
index 0000000..e216b8a
--- /dev/null
+++ b/plc4j/integrations/apache-nifi/nifi-1/pom.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-apache-nifi</artifactId>
+ <version>0.13.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>plc4j-apache-nifi-1</artifactId>
+ <packaging>pom</packaging>
+
+ <name>PLC4J: Integrations: Apache Nifi 1</name>
+ <description>Integration module for integrating PLC4X into Apache Nifi 1.</description>
+
+
+ <properties>
+ <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
+
+ <nifi.version>1.28.1</nifi.version>
+ <nifi.nar-plugin.version>1.5.1</nifi.nar-plugin.version>
+ </properties>
+
+ <modules>
+ <module>nifi-plc4x-processors</module>
+ <module>nifi-plc4x-nar</module>
+ </modules>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <!-- Add the ability to create nar packages -->
+ <plugin>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-nar-maven-plugin</artifactId>
+ <version>${nifi.nar-plugin.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>buildnumber-maven-plugin</artifactId>
+ <inherited>true</inherited>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ <shortRevisionLength>7</shortRevisionLength>
+ <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
+ <revisionOnScmFailure />
+ <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
+ <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.junit</groupId>
+ <artifactId>junit-bom</artifactId>
+ <version>5.12.1</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi</artifactId>
+ <version>${nifi.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-utils</artifactId>
+ <version>${nifi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-json-utils</artifactId>
+ <version>${nifi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-record-serialization-services</artifactId>
+ <version>${nifi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-nar-bundles</artifactId>
+ <version>${nifi.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+</project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/bin/.gitignore
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/bin/.gitignore
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/pom.xml
similarity index 74%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/pom.xml
index baf43bd..b97f1b7 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/pom.xml
@@ -22,37 +22,36 @@
<parent>
<groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-apache-nifi</artifactId>
+ <artifactId>plc4j-apache-nifi-2</artifactId>
<version>0.13.0-SNAPSHOT</version>
</parent>
- <artifactId>plc4j-nifi-plc4x-nar</artifactId>
+ <artifactId>plc4j-nifi-2-plc4x-nar</artifactId>
<packaging>nar</packaging>
- <name>PLC4J: Integrations: Apache Nifi: NAR</name>
+ <name>PLC4J: Integrations: Apache Nifi 2: NAR</name>
- <properties>
- <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
+ <properties>
<maven.javadoc.skip>true</maven.javadoc.skip>
<source.skip>true</source.skip>
</properties>
<dependencies>
- <dependency>
- <groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-nifi-plc4x-processors</artifactId>
- <version>0.13.0-SNAPSHOT</version>
- </dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-standard-services-api-nar</artifactId>
<version>${nifi.version}</version>
<type>nar</type>
- <scope>provided</scope>
</dependency>
<!-- PLC4X -->
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-nifi-2-plc4x-processors</artifactId>
+ <version>0.13.0-SNAPSHOT</version>
+ </dependency>
+
<dependency>
<groupId>org.apache.plc4x</groupId>
<artifactId>plc4j-api</artifactId>
@@ -68,4 +67,20 @@
</dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <!-- Add the ability to create nar packages -->
+ <plugin>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-nar-maven-plugin</artifactId>
+ </plugin>
+ <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>buildnumber-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/pom.xml
similarity index 92%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/pom.xml
index 1b35644..b008923 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/pom.xml
@@ -23,13 +23,13 @@
<parent>
<groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-apache-nifi</artifactId>
+ <artifactId>plc4j-apache-nifi-2</artifactId>
<version>0.13.0-SNAPSHOT</version>
</parent>
- <artifactId>plc4j-nifi-plc4x-processors</artifactId>
+ <artifactId>plc4j-nifi-2-plc4x-processors</artifactId>
- <name>PLC4J: Integrations: Apache Nifi: Processors</name>
+ <name>PLC4J: Integrations: Apache Nifi 2: Processors</name>
<properties>
<project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
@@ -51,9 +51,15 @@
<artifactId>plc4j-spi</artifactId>
<version>0.13.0-SNAPSHOT</version>
</dependency>
+
+ <!-- NiFi -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-utils</artifactId>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
@@ -65,12 +71,20 @@
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
- <artifactId>nifi-utils</artifactId>
+ <artifactId>nifi-json-utils</artifactId>
</dependency>
+
+ <!-- Read tags from file -->
<dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-json-utils</artifactId>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
</dependency>
+
+ <!-- Testing -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-record-serialization-services</artifactId>
@@ -82,14 +96,7 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
+
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-schema-registry-service-api</artifactId>
@@ -105,10 +112,6 @@
<artifactId>nifi-mock-record-utils</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- </dependency>
<!-- This one is for test purpouses only, drivers are included in the nar -->
<dependency>
@@ -176,11 +179,5 @@
<version>5.2.0</version>
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-standard-nar</artifactId>
- <type>nar</type>
- </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
index 05d7cbb..7d3dac3 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
@@ -101,7 +101,7 @@ public abstract class BasePlc4xProcessor extends AbstractProcessor {
.description("Maximum number of entries in the cache. Can improve performance when addresses change dynamically.")
.defaultValue("1")
.required(true)
- .expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
+ .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
.addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
.build();
@@ -120,7 +120,7 @@ public abstract class BasePlc4xProcessor extends AbstractProcessor {
.displayName("Timestamp Field Name")
.description("Name of the field that will display the timestamp of the operation.")
.required(true)
- .expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
+ .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
.addValidator(new Plc4xTimestampFieldValidator())
.defaultValue("ts")
.build();
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
index 8b30bce..5da5e81 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
@@ -135,7 +135,10 @@ public class Plc4xListenRecordProcessor extends BasePlc4xProcessor {
public void onScheduled(final ProcessContext context) {
super.onScheduled(context);
subscriptionType = Plc4xSubscriptionType.valueOf(context.getProperty(PLC_SUBSCRIPTION_TYPE).getValue());
- cyclingPollingInterval = context.getProperty(PLC_SUBSCRIPTION_CYCLIC_POLLING_INTERVAL).asLong();
+ if (subscriptionType.equals(Plc4xSubscriptionType.CYCLIC)){
+ // Only access the property if the dependency is fullfilled
+ cyclingPollingInterval = context.getProperty(PLC_SUBSCRIPTION_CYCLIC_POLLING_INTERVAL).asLong();
+ }
createDispatcher(context, events);
}
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
index 8bb2d96..5f3ca7f 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
@@ -55,7 +55,7 @@ public abstract class BaseAccessStrategy implements AddressesAccessStrategy{
public Map<String, String> extractAddresses(final ProcessContext context, final FlowFile flowFile) {
if (!isInitializated) {
getPropertyDescriptors().forEach(prop -> {
- if (context.isExpressionLanguagePresent(prop)){
+ if (context.getProperty(prop).isExpressionLanguagePresent()){
isDynamic = true;
}
});
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
similarity index 94%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
index 4d2a91c..d716685 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
@@ -93,6 +93,9 @@ public class Plc4xSinkRecordProcessorTest extends Plc4xNifiTest {
testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, getDumyAddressesFile().getAbsolutePath());
+ // This is needed as we access the file name property to check if it has EL to mark it for caching
+ // And that triggers a failure even if the property is not used then. EL is evaluated later.
+ testRunner.setValidateExpressionUsage(false);
testProcessor();
}
}
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
similarity index 85%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
index 6505503..148e705 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
@@ -18,15 +18,14 @@
*/
package org.apache.plc4x.nifi;
+import java.lang.reflect.InvocationTargetException;
+
import org.apache.nifi.util.TestRunner;
import org.apache.nifi.util.TestRunners;
import org.apache.plc4x.nifi.address.AddressesAccessUtils;
-import org.apache.plc4x.nifi.address.FilePropertyAccessStrategy;
import org.apache.plc4x.nifi.util.Plc4xCommonTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
-import org.mockito.Mockito;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -37,12 +36,13 @@ public class Plc4xSourceProcessorTest extends Plc4xNifiTest {
private static final int NUMBER_OF_CALLS = 5;
@BeforeEach
- public void init() {
+ public void init() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
testRunner = TestRunners.newTestRunner(Plc4xSourceProcessor.class);
testRunner.setIncomingConnection(false);
testRunner.setValidateExpressionUsage(true);
- testRunner.setVariable("url", "simulated://127.0.0.1");
+ testRunner.setEnvironmentVariableValue("url", "simulated://127.0.0.1");
+
testRunner.setProperty(Plc4xSourceProcessor.PLC_CONNECTION_STRING, "${url}");
testRunner.setProperty(Plc4xSourceProcessor.PLC_FUTURE_TIMEOUT_MILISECONDS, "1000");
@@ -80,11 +80,10 @@ public class Plc4xSourceProcessorTest extends Plc4xNifiTest {
testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, getDumyAddressesFile().getAbsolutePath());
- try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
- staticMock.when(() -> FilePropertyAccessStrategy.extractAddressesFromFile("file"))
- .thenReturn(Plc4xCommonTest.getAddressMap());
+ // This is needed as we access the file name property to check if it has EL to mark it for caching
+ // And that triggers a failure even if the property is not used then. EL is evaluated later.
+ testRunner.setValidateExpressionUsage(false);
- testProcessor();
- }
+ testProcessor();
}
}
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
similarity index 94%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
index 0f474bd..784dbfc 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
@@ -87,6 +87,9 @@ public class Plc4xSourceRecordProcessorTest extends Plc4xNifiTest {
testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, getDumyAddressesFile().getAbsolutePath());
+ // This is needed as we access the file name property to check if it has EL to mark it for caching
+ // And that triggers a failure even if the property is not used then. EL is evaluated later.
+ testRunner.setValidateExpressionUsage(false);
testProcessor();
}
}
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
similarity index 90%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
index 4f1d032..3941e04 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
@@ -17,12 +17,14 @@
package org.apache.plc4x.nifi.address;
import static org.junit.jupiter.api.Assertions.assertTrue;
+
import java.io.IOException;
import java.util.Map;
import org.apache.nifi.flowfile.FlowFile;
import org.apache.nifi.util.TestRunner;
import org.apache.nifi.util.TestRunners;
+import org.apache.plc4x.nifi.Plc4xNifiTest;
import org.apache.plc4x.nifi.Plc4xSourceProcessor;
import org.apache.plc4x.nifi.util.Plc4xCommonTest;
import org.junit.jupiter.api.Test;
@@ -33,7 +35,7 @@ import org.mockito.Mockito;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-public class AccessStrategyTest {
+public class AccessStrategyTest extends Plc4xNifiTest {
@Mock
FilePropertyAccessStrategy testFileObject = new FilePropertyAccessStrategy();
@@ -91,6 +93,8 @@ public class AccessStrategyTest {
assert testObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_TEXT);
assert testObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY);
+
+ testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_TEXT);
testRunner.setProperty(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY, new ObjectMapper().writeValueAsString(Plc4xCommonTest.getAddressMap()).toString());
FlowFile flowFile = testRunner.enqueue("");
@@ -113,6 +117,9 @@ public class AccessStrategyTest {
assert testObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_TEXT);
assert testObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY);
+
+ testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_TEXT);
+
Plc4xCommonTest.getAddressMap().forEach((k,v) -> testRunner.setProperty(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY.getName(), "no an correct address"));
testRunner.assertNotValid();
@@ -134,6 +141,8 @@ public class AccessStrategyTest {
assert testObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_TEXT);
assert testObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY);
+ testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_TEXT);
+
Plc4xCommonTest.getAddressMap().forEach((k,v) -> testRunner.setProperty(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY.getName(), "${attribute}"));
testRunner.assertValid();
@@ -149,6 +158,7 @@ public class AccessStrategyTest {
assert testFileObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_FILE_PROPERTY);
+ testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, "file");
try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
@@ -173,6 +183,8 @@ public class AccessStrategyTest {
assert testFileObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_FILE);
assert testFileObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_FILE_PROPERTY);
+
+ testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, "file");
try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
@@ -194,13 +206,11 @@ public class AccessStrategyTest {
assert testFileObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_FILE);
assert testFileObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_FILE_PROPERTY);
- testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, "file");
+
+ testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
+ testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, Plc4xNifiTest.getDumyAddressesFile().getAbsolutePath());
- try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
- staticMock.when(() -> FilePropertyAccessStrategy.extractAddressesFromFile("file"))
- .thenReturn(Map.of("EL in use", "${attribute}"));
- testRunner.assertValid();
- }
+ testRunner.assertValid();
}
}
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
index 431fe79..e7eec21 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
@@ -27,6 +27,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.nifi.json.JsonParserFactory;
import org.apache.nifi.json.JsonTreeRowRecordReader;
import org.apache.nifi.serialization.MalformedRecordException;
import org.apache.nifi.serialization.SimpleRecordSchema;
@@ -158,7 +159,7 @@ public class Plc4xCommonTest {
flowfiles.forEach(t -> {
try (InputStream stream = new ByteArrayInputStream(t.getContent().getBytes(StandardCharsets.UTF_8))) {
- try (JsonTreeRowRecordReader reader = new JsonTreeRowRecordReader(stream, logger, schema, null, null, null)) {
+ try (JsonTreeRowRecordReader reader = new JsonTreeRowRecordReader(stream, logger, schema, null, null, null, null, null, null, null, new JsonParserFactory())) {
Record record = reader.nextRecord();
while (record!=null) {
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/resources/logback-test.xml
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/resources/logback-test.xml
diff --git a/plc4j/integrations/apache-nifi/pom.xml b/plc4j/integrations/apache-nifi/nifi-2/pom.xml
similarity index 52%
copy from plc4j/integrations/apache-nifi/pom.xml
copy to plc4j/integrations/apache-nifi/nifi-2/pom.xml
index 6cf2597..3c81a8c 100644
--- a/plc4j/integrations/apache-nifi/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-2/pom.xml
@@ -23,60 +23,69 @@
<parent>
<groupId>org.apache.plc4x</groupId>
- <artifactId>plc4j-integrations</artifactId>
+ <artifactId>plc4j-apache-nifi</artifactId>
<version>0.13.0-SNAPSHOT</version>
</parent>
- <artifactId>plc4j-apache-nifi</artifactId>
+ <artifactId>plc4j-apache-nifi-2</artifactId>
<packaging>pom</packaging>
- <name>PLC4J: Integrations: Apache Nifi</name>
- <description>Integration module for integrating PLC4X into Apache Nifi.</description>
+ <name>PLC4J: Integrations: Apache Nifi 2</name>
+ <description>Integration module for integrating PLC4X into Apache Nifi 2.</description>
+
<properties>
<project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
- <nifi.version>1.28.1</nifi.version>
- <avro.version>1.12.0</avro.version>
+
+ <java.version>21</java.version>
+ <maven.compiler.release>21</maven.compiler.release>
+ <maven.compiler.source>21</maven.compiler.source>
+ <maven.compiler.target>21</maven.compiler.target>
+ <nifi.version>2.4.0</nifi.version>
+ <nifi.nar-plugin.version>2.1.0</nifi.nar-plugin.version>
</properties>
<modules>
- <module>nifi-plc4x-processors</module>
- <module>nifi-plc4x-nar</module>
+ <module>nifi-2-plc4x-processors</module>
+ <module>nifi-2-plc4x-nar</module>
</modules>
+
<build>
- <plugins>
- <!-- Add the ability to create nar packages -->
- <plugin>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-nar-maven-plugin</artifactId>
- <version>1.5.1</version>
- <extensions>true</extensions>
- </plugin>
- <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>buildnumber-maven-plugin</artifactId>
- <inherited>true</inherited>
- <executions>
- <execution>
- <phase>validate</phase>
- <goals>
- <goal>create</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <doCheck>false</doCheck>
- <doUpdate>false</doUpdate>
- <shortRevisionLength>7</shortRevisionLength>
- <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
- <revisionOnScmFailure/>
- <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
- <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
- </configuration>
- </plugin>
- </plugins>
+ <pluginManagement>
+ <plugins>
+ <!-- Add the ability to create nar packages -->
+ <plugin>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-nar-maven-plugin</artifactId>
+ <version>${nifi.nar-plugin.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>buildnumber-maven-plugin</artifactId>
+ <inherited>true</inherited>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ <shortRevisionLength>7</shortRevisionLength>
+ <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
+ <revisionOnScmFailure />
+ <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
+ <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
<dependencyManagement>
@@ -84,15 +93,10 @@
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
- <version>5.12.2</version>
+ <version>5.12.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
- <dependency>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro</artifactId>
- <version>${avro.version}</version>
- </dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi</artifactId>
@@ -105,11 +109,6 @@
<artifactId>nifi-utils</artifactId>
<version>${nifi.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-avro-record-utils</artifactId>
- <version>${nifi.version}</version>
- </dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-json-utils</artifactId>
@@ -122,37 +121,31 @@
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
- <artifactId>nifi-standard-nar</artifactId>
+ <artifactId>nifi-record</artifactId>
<version>${nifi.version}</version>
- <type>nar</type>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
- <artifactId>nifi-nar-bundles</artifactId>
+ <artifactId>nifi-record-serialization-service-api</artifactId>
<version>${nifi.version}</version>
- <type>pom</type>
- <scope>import</scope>
</dependency>
<dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>1.6.16</version>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-schema-registry-service-api</artifactId>
+ <version>${nifi.version}</version>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>4.0.5</version>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-mock</artifactId>
+ <version>${nifi.version}</version>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- <version>4.0.2</version>
- <exclusions>
- <exclusion>
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
- </exclusion>
- </exclusions>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-mock-record-utils</artifactId>
+ <version>${nifi.version}</version>
+ <scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
diff --git a/plc4j/integrations/apache-nifi/pom.xml b/plc4j/integrations/apache-nifi/pom.xml
index 6cf2597..71949ef 100644
--- a/plc4j/integrations/apache-nifi/pom.xml
+++ b/plc4j/integrations/apache-nifi/pom.xml
@@ -33,128 +33,25 @@
<name>PLC4J: Integrations: Apache Nifi</name>
<description>Integration module for integrating PLC4X into Apache Nifi.</description>
+
<properties>
<project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
- <nifi.version>1.28.1</nifi.version>
- <avro.version>1.12.0</avro.version>
</properties>
<modules>
- <module>nifi-plc4x-processors</module>
- <module>nifi-plc4x-nar</module>
+ <module>nifi-1</module>
</modules>
- <build>
- <plugins>
- <!-- Add the ability to create nar packages -->
- <plugin>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-nar-maven-plugin</artifactId>
- <version>1.5.1</version>
- <extensions>true</extensions>
- </plugin>
- <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>buildnumber-maven-plugin</artifactId>
- <inherited>true</inherited>
- <executions>
- <execution>
- <phase>validate</phase>
- <goals>
- <goal>create</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <doCheck>false</doCheck>
- <doUpdate>false</doUpdate>
- <shortRevisionLength>7</shortRevisionLength>
- <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
- <revisionOnScmFailure/>
- <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
- <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.junit</groupId>
- <artifactId>junit-bom</artifactId>
- <version>5.12.2</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro</artifactId>
- <version>${avro.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi</artifactId>
- <version>${nifi.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-utils</artifactId>
- <version>${nifi.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-avro-record-utils</artifactId>
- <version>${nifi.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-json-utils</artifactId>
- <version>${nifi.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-record-serialization-services</artifactId>
- <version>${nifi.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-standard-nar</artifactId>
- <version>${nifi.version}</version>
- <type>nar</type>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-nar-bundles</artifactId>
- <version>${nifi.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>1.6.16</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>4.0.5</version>
- </dependency>
- <dependency>
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- <version>4.0.2</version>
- <exclusions>
- <exclusion>
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
-</project>
\ No newline at end of file
+ <profiles>
+ <profile>
+ <id>.above-or-equal-java-21</id>
+ <activation>
+ <jdk>[21,)</jdk>
+ </activation>
+ <modules>
+ <module>nifi-2</module>
+ </modules>
+ </profile>
+ </profiles>
+
+</project>