You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/11/03 13:19:37 UTC

[camel] branch main updated (52604ace161 -> 351645a17c6)

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

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


    from 52604ace161 CAMEL-18148: added support for configuration builders in camel-wal
     new 0c181d0a123 Added the Apache PLC4X Camel Integation Module
     new e5f21733494 Applied some of the suggestions by the sourceformatter.
     new 90c2a5aa5d4 [CAMEL-18655] Integrate the Apache PLC4X Camel Integration module into the Apache Camel Project
     new c9944713a46 Updated the package name
     new b3170fed1f4 Replaced some of the TODOs with descriptions
     new 8f44bfe9480 Added the missing descriptions to parameters
     new 655f2bc2887 Added camel-plc4x to kit
     new 12c8936e4b6 Camel-plc4x: regen after adding to the kit
     new 443faa2fb0b Added correct docs name for docs file in Camel-plc4x
     new b8340c725fd Camel-Plc4x: added docs to nav and regen
     new 0d1e5072aa8 Camel-Plc4x: Added labels to endpoint configuration where it makes sense
     new 38e99ad8d27 Camel-Plc4x: Better logging configuration for testing
     new 1cdadffcacb Camel-Plc4x: Regen catalog json
     new f4a709ec69c Camel-Plc4x: Moving plc4x version property placeholder in parent pom
     new 351645a17c6 Camel-Plc4x: Use javax.activation version property placeholder coming from Parent POM

The 15 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 bom/camel-bom/pom.xml                              |   5 +
 catalog/camel-allcomponents/pom.xml                |   4 +
 .../org/apache/camel/catalog/components.properties |   1 +
 .../org/apache/camel/catalog/components/plc4x.json |  39 ++
 components/camel-plc4x/pom.xml                     | 171 +++++++
 .../component/plc4x/Plc4XComponentConfigurer.java  |  61 +++
 .../component/plc4x/Plc4XEndpointConfigurer.java   |  84 ++++
 .../component/plc4x/Plc4XEndpointUriFactory.java   |  75 +++
 .../services/org/apache/camel/component.properties |   7 +
 .../services/org/apache/camel/component/plc4x      |   2 +
 .../org/apache/camel/configurer/plc4x-component    |   2 +
 .../org/apache/camel/configurer/plc4x-endpoint     |   2 +
 .../org/apache/camel/urifactory/plc4x-endpoint     |   2 +
 .../org/apache/camel/component/plc4x/plc4x.json    |  39 ++
 components/camel-plc4x/src/main/docs/PLC4X.adoc    |  64 +++
 .../camel-plc4x/src/main/docs/plc4x-component.adoc |  64 +++
 .../apache/camel/component/plc4x/Constants.java    |  30 ++
 .../camel/component/plc4x/Plc4XComponent.java      |  75 +++
 .../camel/component/plc4x/Plc4XConsumer.java       | 157 ++++++
 .../camel/component/plc4x/Plc4XEndpoint.java       | 179 +++++++
 .../camel/component/plc4x/Plc4XProducer.java       | 109 ++++
 .../org/apache/camel/component/plc4x/TagData.java  | 169 +++++++
 .../services/org/apache/camel/component/plc4x      |  17 +
 .../camel/component/plc4x/ConstantsTest.java       |  40 ++
 .../apache/camel/component/plc4x/ManualTest.java   |  69 +++
 .../apache/camel/component/plc4x/MockDriver.java   | 106 ++++
 .../camel/component/plc4x/Plc4XComponentTest.java  |  63 +++
 .../camel/component/plc4x/Plc4XConsumerTest.java   |  32 ++
 .../camel/component/plc4x/Plc4XEndpointTest.java   |  57 +++
 .../camel/component/plc4x/Plc4XProducerTest.java   | 108 ++++
 .../services/org.apache.plc4x.java.api.PlcDriver   |  17 +
 .../src/test/resources/log4j2.properties           |  27 +
 .../src/test/resources/logback-test.xml            |  36 ++
 .../src/test/resources/data/sfny-j48.model         | Bin 7824 -> 7824 bytes
 components/pom.xml                                 |   1 +
 .../org/apache/camel/main/components.properties    |   1 +
 .../modules/ROOT/examples/json/plc4x.json          |   1 +
 docs/components/modules/ROOT/nav.adoc              |   1 +
 .../modules/ROOT/pages/plc4x-component.adoc        |   1 +
 docs/components/modules/others/nav.adoc            |   1 +
 docs/components/modules/others/pages/PLC4X.adoc    |   1 +
 .../component/ComponentsBuilderFactory.java        |  13 +
 .../dsl/Plc4xComponentBuilderFactory.java          | 141 ++++++
 .../src/generated/resources/metadata.json          |  22 +
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 +
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 +
 .../builder/endpoint/StaticEndpointBuilders.java   |  43 ++
 .../endpoint/dsl/Plc4XEndpointBuilderFactory.java  | 552 +++++++++++++++++++++
 .../camel-component-known-dependencies.properties  |   1 +
 parent/pom.xml                                     |   6 +
 50 files changed, 2700 insertions(+)
 create mode 100644 catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json
 create mode 100644 components/camel-plc4x/pom.xml
 create mode 100644 components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XComponentConfigurer.java
 create mode 100644 components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointConfigurer.java
 create mode 100644 components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointUriFactory.java
 create mode 100644 components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component.properties
 create mode 100644 components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x
 create mode 100644 components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component
 create mode 100644 components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint
 create mode 100644 components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint
 create mode 100644 components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
 create mode 100644 components/camel-plc4x/src/main/docs/PLC4X.adoc
 create mode 100644 components/camel-plc4x/src/main/docs/plc4x-component.adoc
 create mode 100644 components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Constants.java
 create mode 100644 components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XComponent.java
 create mode 100644 components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java
 create mode 100644 components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
 create mode 100644 components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XProducer.java
 create mode 100644 components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/TagData.java
 create mode 100644 components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
 create mode 100644 components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ConstantsTest.java
 create mode 100644 components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ManualTest.java
 create mode 100644 components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/MockDriver.java
 create mode 100644 components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XComponentTest.java
 create mode 100644 components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XConsumerTest.java
 create mode 100644 components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XEndpointTest.java
 create mode 100644 components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XProducerTest.java
 create mode 100644 components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
 create mode 100644 components/camel-plc4x/src/test/resources/log4j2.properties
 create mode 100644 components/camel-plc4x/src/test/resources/logback-test.xml
 create mode 120000 docs/components/modules/ROOT/examples/json/plc4x.json
 create mode 120000 docs/components/modules/ROOT/pages/plc4x-component.adoc
 create mode 120000 docs/components/modules/others/pages/PLC4X.adoc
 create mode 100644 dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Plc4xComponentBuilderFactory.java
 create mode 100644 dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Plc4XEndpointBuilderFactory.java


[camel] 10/15: Camel-Plc4x: added docs to nav and regen

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b8340c725fd8c52412f32858a218129aa1bf79e7
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 14:08:54 2022 +0100

    Camel-Plc4x: added docs to nav and regen
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 docs/components/modules/ROOT/nav.adoc                   | 1 +
 docs/components/modules/ROOT/pages/plc4x-component.adoc | 1 +
 2 files changed, 2 insertions(+)

diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 9f706e96839..96ac179e184 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -259,6 +259,7 @@
 ** xref:paho-mqtt5-component.adoc[Paho MQTT 5]
 ** xref:pdf-component.adoc[PDF]
 ** xref:platform-http-component.adoc[Platform HTTP]
+** xref:plc4x-component.adoc[PLC4X]
 ** xref:pgevent-component.adoc[PostgresSQL Event]
 ** xref:pg-replication-slot-component.adoc[PostgresSQL Replication Slot]
 ** xref:lpr-component.adoc[Printer]
diff --git a/docs/components/modules/ROOT/pages/plc4x-component.adoc b/docs/components/modules/ROOT/pages/plc4x-component.adoc
new file mode 120000
index 00000000000..e298b146958
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/plc4x-component.adoc
@@ -0,0 +1 @@
+../../../../../components/camel-plc4x/src/main/docs/plc4x-component.adoc
\ No newline at end of file


[camel] 03/15: [CAMEL-18655] Integrate the Apache PLC4X Camel Integration module into the Apache Camel Project

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 90c2a5aa5d4848181659831489ecdaf148e1628c
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Oct 27 15:56:19 2022 +0200

    [CAMEL-18655] Integrate the Apache PLC4X Camel Integration module into the Apache Camel Project
---
 catalog/camel-allcomponents/pom.xml                |  4 ++
 components/camel-plc4x/pom.xml                     | 45 +++++-------
 .../plc4x/camel/Plc4XComponentConfigurer.java      | 61 ++++++++++++++++
 .../plc4x/camel/Plc4XEndpointConfigurer.java       | 84 ++++++++++++++++++++++
 .../plc4x/camel/Plc4XEndpointUriFactory.java       | 75 +++++++++++++++++++
 .../services/org/apache/camel/component.properties |  7 ++
 .../services/org/apache/camel/component/plc4x      |  2 +
 .../org/apache/camel/configurer/plc4x-component    |  2 +
 .../org/apache/camel/configurer/plc4x-endpoint     |  2 +
 .../org/apache/camel/urifactory/plc4x-endpoint     |  2 +
 .../resources/org/apache/plc4x/camel/plc4x.json    | 39 ++++++++++
 .../java/org/apache/plc4x/camel/Constants.java     |  3 +-
 .../org/apache/plc4x/camel/Plc4XComponent.java     |  9 ++-
 .../java/org/apache/plc4x/camel/Plc4XConsumer.java | 54 +++++++-------
 .../java/org/apache/plc4x/camel/Plc4XEndpoint.java | 24 ++++---
 .../java/org/apache/plc4x/camel/Plc4XProducer.java | 10 +--
 .../main/java/org/apache/plc4x/camel/TagData.java  | 60 ++++++++--------
 .../java/org/apache/plc4x/camel/ConstantsTest.java |  6 +-
 .../java/org/apache/plc4x/camel/ManualTest.java    | 12 ++--
 .../java/org/apache/plc4x/camel/MockDriver.java    | 21 +++---
 .../org/apache/plc4x/camel/Plc4XComponentTest.java | 30 ++++----
 .../org/apache/plc4x/camel/Plc4XConsumerTest.java  |  3 +-
 .../org/apache/plc4x/camel/Plc4XEndpointTest.java  |  4 +-
 .../org/apache/plc4x/camel/Plc4XProducerTest.java  | 26 +++----
 parent/pom.xml                                     |  5 ++
 25 files changed, 432 insertions(+), 158 deletions(-)

diff --git a/catalog/camel-allcomponents/pom.xml b/catalog/camel-allcomponents/pom.xml
index ea51eac430e..1dfce784027 100644
--- a/catalog/camel-allcomponents/pom.xml
+++ b/catalog/camel-allcomponents/pom.xml
@@ -1093,6 +1093,10 @@
 			<groupId>org.apache.camel</groupId>
 			<artifactId>camel-platform-http</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.camel</groupId>
+			<artifactId>camel-plc4x</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>org.apache.camel</groupId>
 			<artifactId>camel-printer</artifactId>
diff --git a/components/camel-plc4x/pom.xml b/components/camel-plc4x/pom.xml
index 1c72eeb3ec6..f315457fce5 100644
--- a/components/camel-plc4x/pom.xml
+++ b/components/camel-plc4x/pom.xml
@@ -36,39 +36,18 @@
     </properties>
 
     <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-model</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-mock</artifactId>
-        </dependency>
+
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-util</artifactId>
-        </dependency>
 
         <!-- PLC4J dependencies -->
-
         <dependency>
             <groupId>org.apache.plc4x</groupId>
             <artifactId>plc4j-api</artifactId>
             <version>${plc4x.version}</version>
         </dependency>
-
         <dependency>
             <groupId>org.apache.plc4x</groupId>
             <artifactId>plc4j-connection-pool</artifactId>
@@ -159,12 +138,26 @@
         </dependency>
 
         <!-- Testing -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-main</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-test-junit5</artifactId>
             <scope>test</scope>
         </dependency>
-
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <!-- avoids java.lang.NoClassDefFoundError: javax/activation/DataHandler in Plc4XProducerTest on Java 11-->
             <groupId>javax.activation</groupId>
@@ -172,12 +165,6 @@
             <version>1.2.0</version>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-main</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
 </project>
diff --git a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XComponentConfigurer.java b/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XComponentConfigurer.java
new file mode 100644
index 00000000000..bf53b4c2175
--- /dev/null
+++ b/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XComponentConfigurer.java
@@ -0,0 +1,61 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.plc4x.camel;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class Plc4XComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        Plc4XComponent target = (Plc4XComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        Plc4XComponent target = (Plc4XComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointConfigurer.java b/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointConfigurer.java
new file mode 100644
index 00000000000..3aa548c7794
--- /dev/null
+++ b/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointConfigurer.java
@@ -0,0 +1,84 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.plc4x.camel;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class Plc4XEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        Plc4XEndpoint target = (Plc4XEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "exceptionhandler":
+        case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true;
+        case "exchangepattern":
+        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "period": target.setPeriod(property(camelContext, int.class, value)); return true;
+        case "tags": target.setTags(property(camelContext, java.util.Map.class, value)); return true;
+        case "trigger": target.setTrigger(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "exceptionhandler":
+        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
+        case "exchangepattern":
+        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "period": return int.class;
+        case "tags": return java.util.Map.class;
+        case "trigger": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        Plc4XEndpoint target = (Plc4XEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "exceptionhandler":
+        case "exceptionHandler": return target.getExceptionHandler();
+        case "exchangepattern":
+        case "exchangePattern": return target.getExchangePattern();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "period": return target.getPeriod();
+        case "tags": return target.getTags();
+        case "trigger": return target.getTrigger();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "tags": return java.lang.Object.class;
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointUriFactory.java b/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointUriFactory.java
new file mode 100644
index 00000000000..bde25646fcb
--- /dev/null
+++ b/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointUriFactory.java
@@ -0,0 +1,75 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.plc4x.camel;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class Plc4XEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":driver";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    private static final Set<String> MULTI_VALUE_PREFIXES;
+    static {
+        Set<String> props = new HashSet<>(8);
+        props.add("bridgeErrorHandler");
+        props.add("driver");
+        props.add("exceptionHandler");
+        props.add("exchangePattern");
+        props.add("lazyStartProducer");
+        props.add("period");
+        props.add("tags");
+        props.add("trigger");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        SECRET_PROPERTY_NAMES = Collections.emptySet();
+        MULTI_VALUE_PREFIXES = Collections.emptySet();
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "plc4x".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "driver", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> multiValuePrefixes() {
+        return MULTI_VALUE_PREFIXES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component.properties
new file mode 100644
index 00000000000..16a5de61e11
--- /dev/null
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+components=plc4x
+groupId=org.apache.camel
+artifactId=camel-plc4x
+version=3.20.0-SNAPSHOT
+projectName=Camel :: PLC4X
+projectDescription=Camel PLC4X support
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x
new file mode 100644
index 00000000000..45feea473ec
--- /dev/null
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.plc4x.camel.Plc4XComponent
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component
new file mode 100644
index 00000000000..28800ed1c91
--- /dev/null
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.plc4x.camel.Plc4XComponentConfigurer
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint
new file mode 100644
index 00000000000..0d6d281c187
--- /dev/null
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.plc4x.camel.Plc4XEndpointConfigurer
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint
new file mode 100644
index 00000000000..de95df92e67
--- /dev/null
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.plc4x.camel.Plc4XEndpointUriFactory
diff --git a/components/camel-plc4x/src/generated/resources/org/apache/plc4x/camel/plc4x.json b/components/camel-plc4x/src/generated/resources/org/apache/plc4x/camel/plc4x.json
new file mode 100644
index 00000000000..f88f66e4f12
--- /dev/null
+++ b/components/camel-plc4x/src/generated/resources/org/apache/plc4x/camel/plc4x.json
@@ -0,0 +1,39 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "plc4x",
+    "title": "PLC4X",
+    "description": "Camel PLC4X support",
+    "deprecated": false,
+    "firstVersion": "3.20.0",
+    "label": "iot",
+    "javaType": "org.apache.plc4x.camel.Plc4XComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-plc4x",
+    "version": "3.20.0-SNAPSHOT",
+    "scheme": "plc4x",
+    "extendsScheme": "",
+    "syntax": "plc4x:driver",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...]
+    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
+    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
+  },
+  "properties": {
+    "driver": { "kind": "path", "displayName": "Driver", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
+    "period": { "kind": "parameter", "displayName": "Period", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
+    "tags": { "kind": "parameter", "displayName": "Tags", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
+    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
+    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...]
+    "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...]
+    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
+  }
+}
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
index a12db73c2da..9120ccde0b4 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
@@ -22,8 +22,9 @@ public final class Constants {
     public static final String FIELD_QUERY_HEADER = "fieldQuery";
     public static final String TRIGGER = "TRIGGER_VAR";
     public static final String PLC_NAME = "PLC";
+
     private Constants() {
-      throw new IllegalStateException("Utility class!");
+        throw new IllegalStateException("Utility class!");
     }
 
 }
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
index f75c0d0d38b..8781e4099f8 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
@@ -16,15 +16,18 @@
  */
 package org.apache.plc4x.camel;
 
+import java.util.Map;
+
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.PropertiesHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Map;
-
+@Component("plc4x")
 public class Plc4XComponent extends DefaultComponent {
+
     private static final Logger LOGGER = LoggerFactory.getLogger(Plc4XComponent.class);
 
     @Override
@@ -69,4 +72,4 @@ public class Plc4XComponent extends DefaultComponent {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
index 431ca62e8f3..74febb09234 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
@@ -16,6 +16,15 @@
  */
 package org.apache.plc4x.camel;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -33,15 +42,6 @@ import org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.T
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
 public class Plc4XConsumer extends DefaultConsumer {
     private static final Logger LOGGER = LoggerFactory.getLogger(Plc4XConsumer.class);
 
@@ -86,25 +86,24 @@ public class Plc4XConsumer extends DefaultConsumer {
             try {
                 builder.addItem(tag.getKey(), (String) tag.getValue());
             } catch (PlcIncompatibleDatatypeException e) {
-                LOGGER.error("For consumer, please use Map<String,String>, currently using {}", tags.getClass().getSimpleName());
+                LOGGER.error("For consumer, please use Map<String,String>, currently using {}",
+                        tags.getClass().getSimpleName());
             }
         }
         PlcReadRequest request = builder.build();
-        future = executorService.schedule(() ->
-                request.execute().thenAccept(response -> {
-                    try {
-                        Exchange exchange = plc4XEndpoint.createExchange();
-                        Map<String, Object> rsp = new HashMap<>();
-                        for (String field : response.getFieldNames()) {
-                            rsp.put(field, response.getObject(field));
-                        }
-                        exchange.getIn().setBody(rsp);
-                        getProcessor().process(exchange);
-                    } catch (Exception e) {
-                        getExceptionHandler().handleException(e);
-                    }
-                })
-            , 500, TimeUnit.MILLISECONDS);
+        future = executorService.schedule(() -> request.execute().thenAccept(response -> {
+            try {
+                Exchange exchange = plc4XEndpoint.createExchange();
+                Map<String, Object> rsp = new HashMap<>();
+                for (String field : response.getFieldNames()) {
+                    rsp.put(field, response.getObject(field));
+                }
+                exchange.getIn().setBody(rsp);
+                getProcessor().process(exchange);
+            } catch (Exception e) {
+                getExceptionHandler().handleException(e);
+            }
+        }), 500, TimeUnit.MILLISECONDS);
     }
 
     private void startTriggered() throws ScraperException {
@@ -141,7 +140,8 @@ public class Plc4XConsumer extends DefaultConsumer {
 
     private ScraperConfigurationTriggeredImpl getScraperConfig(Map<String, String> tagList) {
         String config = "(TRIGGER_VAR," + plc4XEndpoint.getPeriod() + ",(" + plc4XEndpoint.getTrigger() + ")==(true))";
-        List<JobConfigurationImpl> job = Collections.singletonList(new JobConfigurationImpl("PLC4X-Camel", config, 0, Collections.singletonList(Constants.PLC_NAME), tagList));
+        List<JobConfigurationImpl> job = Collections.singletonList(
+                new JobConfigurationImpl("PLC4X-Camel", config, 0, Collections.singletonList(Constants.PLC_NAME), tagList));
         Map<String, String> source = Collections.singletonMap(Constants.PLC_NAME, plc4XEndpoint.getUri());
         return new ScraperConfigurationTriggeredImpl(source, job);
     }
@@ -154,4 +154,4 @@ public class Plc4XConsumer extends DefaultConsumer {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
index 580acfe1ab0..97eed2ad2df 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
@@ -16,38 +16,40 @@
  */
 package org.apache.plc4x.camel;
 
+import java.util.Map;
+import java.util.Objects;
+
+import org.apache.camel.Category;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
 import org.apache.plc4x.java.utils.connectionpool.PooledPlcDriverManager;
 
-import java.util.Map;
-import java.util.Objects;
-
-@UriEndpoint(scheme = "plc4x", title = "PLC4X", syntax = "plc4x:driver", label = "plc4x")
+@UriEndpoint(scheme = "plc4x", firstVersion = "3.20.0", title = "PLC4X",
+             syntax = "plc4x:driver", category = Category.IOT)
 public class Plc4XEndpoint extends DefaultEndpoint {
 
     @UriPath
-    @Metadata(required = true)
+    @Metadata(required = true, description = "TODO: Add a short description here")
     private String driver;
-
     @UriParam
+    @Metadata(description = "TODO: Add a short description here")
     private Map<String, Object> tags;
-
     @UriParam
+    @Metadata(description = "TODO: Add a short description here")
     private String trigger;
-
     @UriParam
+    @Metadata(description = "TODO: Add a short description here")
     private int period;
 
     public int getPeriod() {
@@ -157,8 +159,8 @@ public class Plc4XEndpoint extends DefaultEndpoint {
         }
         Plc4XEndpoint that = (Plc4XEndpoint) o;
         return Objects.equals(getDriver(), that.getDriver()) &&
-            Objects.equals(getTags(), that.getTags()) &&
-            Objects.equals(getPlcDriverManager(), that.getPlcDriverManager());
+                Objects.equals(getTags(), that.getTags()) &&
+                Objects.equals(getPlcDriverManager(), that.getPlcDriverManager());
     }
 
     @Override
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
index af418de5dc1..ea0208ce656 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
@@ -16,6 +16,10 @@
  */
 package org.apache.plc4x.camel;
 
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -28,10 +32,6 @@ import org.apache.plc4x.java.api.messages.PlcWriteResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.atomic.AtomicInteger;
-
 public class Plc4XProducer extends DefaultAsyncProducer {
     private final Logger log = LoggerFactory.getLogger(Plc4XProducer.class);
     private PlcConnection plcConnection;
@@ -59,7 +59,7 @@ public class Plc4XProducer extends DefaultAsyncProducer {
                 String name = entry.getKey();
                 String query = entry.getValue().keySet().iterator().next();
                 Object value = entry.getValue().get(query);
-                builder.addItem(name,query,value);
+                builder.addItem(name, query, value);
             }
         } else {
             throw new PlcInvalidFieldException("The body must contain a Map<String,Map<String,Object>");
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
index 218ebcd7c49..52bca5c8725 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
@@ -16,14 +16,14 @@
  */
 package org.apache.plc4x.camel;
 
-import org.slf4j.LoggerFactory;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.function.Predicate;
 
+import org.slf4j.LoggerFactory;
+
 public class TagData {
     private String tagName;
     private String query;
@@ -65,22 +65,21 @@ public class TagData {
         this.value = value;
     }
 
-
-    private void setType(){
-        if(value!=null && value instanceof String){
-            String val = (String)value;
-            if(canParse.get(Boolean.TYPE).test(val)){
+    private void setType() {
+        if (value != null && value instanceof String) {
+            String val = (String) value;
+            if (canParse.get(Boolean.TYPE).test(val)) {
                 value = Boolean.parseBoolean(val);
             }
-            if(canParse.get(Short.TYPE).test(val)){
+            if (canParse.get(Short.TYPE).test(val)) {
                 value = Short.parseShort(val);
-            } else if(canParse.get(Integer.TYPE).test(val)){
+            } else if (canParse.get(Integer.TYPE).test(val)) {
                 value = Integer.parseInt(val);
-            } else if(canParse.get(Long.TYPE).test(val)){
+            } else if (canParse.get(Long.TYPE).test(val)) {
                 value = Long.parseLong(val);
-            } else if(canParse.get(Double.TYPE).test(val)){
+            } else if (canParse.get(Double.TYPE).test(val)) {
                 value = Double.parseDouble(val);
-            } else if(canParse.get(Float.TYPE).test(val)){
+            } else if (canParse.get(Float.TYPE).test(val)) {
                 value = Float.parseFloat(val);
             }
 
@@ -93,7 +92,7 @@ public class TagData {
             try {
                 Integer.parseInt(s);
                 return true;
-            } catch(Exception e) {
+            } catch (Exception e) {
                 return false;
             }
         });
@@ -101,7 +100,7 @@ public class TagData {
             try {
                 Long.parseLong(s);
                 return true;
-            } catch(Exception e) {
+            } catch (Exception e) {
                 return false;
             }
         });
@@ -109,7 +108,7 @@ public class TagData {
             try {
                 Short.parseShort(s);
                 return true;
-            } catch(Exception e) {
+            } catch (Exception e) {
                 return false;
             }
         });
@@ -117,7 +116,7 @@ public class TagData {
             try {
                 Boolean.parseBoolean(s);
                 return true;
-            } catch(Exception e) {
+            } catch (Exception e) {
                 return false;
             }
         });
@@ -125,7 +124,7 @@ public class TagData {
             try {
                 Double.parseDouble(s);
                 return true;
-            } catch(Exception e) {
+            } catch (Exception e) {
                 return false;
             }
         });
@@ -133,24 +132,25 @@ public class TagData {
             try {
                 Float.parseFloat(s);
                 return true;
-            } catch(Exception e) {
+            } catch (Exception e) {
                 return false;
             }
         });
     };
 
     @Override
-    public  String toString(){
-        return "("+tagName+") : "+value;
+    public String toString() {
+        return "(" + tagName + ") : " + value;
     }
 
     @Override
-    public boolean equals(Object tag){
-        return value!= null?((TagData)tag).getValue().equals(value)
-            && ((TagData)tag).getTagName().equals(tagName)
-            && ((TagData)tag).getQuery().equals(query) :
-             ((TagData)tag).getTagName().equals(tagName)
-            && ((TagData)tag).getQuery().equals(query);
+    public boolean equals(Object tag) {
+        return value != null
+                ? ((TagData) tag).getValue().equals(value)
+                        && ((TagData) tag).getTagName().equals(tagName)
+                        && ((TagData) tag).getQuery().equals(query)
+                : ((TagData) tag).getTagName().equals(tagName)
+                        && ((TagData) tag).getQuery().equals(query);
     }
 
     @Override
@@ -158,11 +158,11 @@ public class TagData {
         return Objects.hash(tagName, query, value, canParse);
     }
 
-    public static Map<String,String> toMap(List<TagData> tags){
-        Map<String,String> map = new HashMap<>();
+    public static Map<String, String> toMap(List<TagData> tags) {
+        Map<String, String> map = new HashMap<>();
         LoggerFactory.getLogger(TagData.class).info("Classloader {} ", Thread.currentThread().getContextClassLoader());
-        for(TagData tag : tags){
-            map.put(tag.getTagName(),tag.getQuery());
+        for (TagData tag : tags) {
+            map.put(tag.getTagName(), tag.getQuery());
         }
         return map;
     }
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
index 4ade527ca22..ca264322c69 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
@@ -16,10 +16,10 @@
  */
 package org.apache.plc4x.camel;
 
-import org.junit.jupiter.api.Test;
-
 import java.lang.reflect.Constructor;
 
+import org.junit.jupiter.api.Test;
+
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class ConstantsTest {
@@ -37,4 +37,4 @@ public class ConstantsTest {
         });
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
index 7c9301b4b37..a73f66061cd 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
@@ -16,12 +16,12 @@
  */
 package org.apache.plc4x.camel;
 
+import java.util.Date;
+
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.main.Main;
 import org.apache.camel.main.MainListenerSupport;
 
-import java.util.Date;
-
 public class ManualTest {
 
     private Main main;
@@ -51,9 +51,9 @@ public class ManualTest {
         @Override
         public void configure() {
             from("plc4x:ads:tcp://10.10.64.40/10.10.64.40.1.1:851/192.168.113.3.1.1:30000?dataType=java.lang.Integer&address=Allgemein_S2.Station")
-                .process(exchange -> System.out.println("Invoked timer at " + new Date()))
-                .bean("foo")
-                .log("Received ${body}");
+                    .process(exchange -> System.out.println("Invoked timer at " + new Date()))
+                    .bean("foo")
+                    .log("Received ${body}");
         }
     }
 
@@ -65,7 +65,5 @@ public class ManualTest {
 
     public static class Events extends MainListenerSupport {
 
-
-
     }
 }
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
index 446f58711e0..9aec7053694 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
@@ -16,7 +16,13 @@
  */
 package org.apache.plc4x.camel;
 
+import java.util.HashMap;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
 import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.PlcDriver;
 import org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
@@ -26,15 +32,9 @@ import org.apache.plc4x.java.api.messages.PlcUnsubscriptionRequest;
 import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionResponse;
 import org.apache.plc4x.java.spi.messages.PlcSubscriber;
-import org.apache.plc4x.java.api.PlcDriver;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.HashMap;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
 import static org.mockito.Mockito.*;
 
 public class MockDriver implements PlcDriver {
@@ -61,8 +61,10 @@ public class MockDriver implements PlcDriver {
         when(plcConnectionMock.getMetadata().canWrite()).thenReturn(true);
         when(plcConnectionMock.readRequestBuilder()).thenReturn(mock(PlcReadRequest.Builder.class, RETURNS_DEEP_STUBS));
         when(plcConnectionMock.writeRequestBuilder()).thenReturn(mock(PlcWriteRequest.Builder.class, RETURNS_DEEP_STUBS));
-        when(plcConnectionMock.subscriptionRequestBuilder()).thenReturn(mock(PlcSubscriptionRequest.Builder.class, RETURNS_DEEP_STUBS));
-        when(plcConnectionMock.unsubscriptionRequestBuilder()).thenReturn(mock(PlcUnsubscriptionRequest.Builder.class, RETURNS_DEEP_STUBS));
+        when(plcConnectionMock.subscriptionRequestBuilder())
+                .thenReturn(mock(PlcSubscriptionRequest.Builder.class, RETURNS_DEEP_STUBS));
+        when(plcConnectionMock.unsubscriptionRequestBuilder())
+                .thenReturn(mock(PlcUnsubscriptionRequest.Builder.class, RETURNS_DEEP_STUBS));
 
         // Mock a typical subscriber.
         PlcSubscriber plcSubscriber = mock(PlcSubscriber.class, RETURNS_DEEP_STUBS);
@@ -89,7 +91,8 @@ public class MockDriver implements PlcDriver {
                         mock(PlcSubscriptionHandle.class, RETURNS_DEEP_STUBS), PlcResponseCode.OK);
                 }).collect(Collectors.toList());
             PlcSubscriptionResponse response = new PlcSubscriptionResponse(subscriptionRequest, responseItems);*/
-            PlcSubscriptionResponse response = new DefaultPlcSubscriptionResponse(mock(PlcSubscriptionRequest.class), new HashMap<>());
+            PlcSubscriptionResponse response
+                    = new DefaultPlcSubscriptionResponse(mock(PlcSubscriptionRequest.class), new HashMap<>());
             return CompletableFuture.completedFuture(response);
         });
         return plcConnectionMock;
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
index 62d9e90ceb1..53cdf51ae9d 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
@@ -16,16 +16,14 @@
  */
 package org.apache.plc4x.camel;
 
-import org.apache.camel.Expression;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
-import org.apache.plc4x.java.api.model.PlcField;
 import org.junit.jupiter.api.Test;
 
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
 public class Plc4XComponentTest extends CamelTestSupport {
 
     @Test
@@ -37,29 +35,29 @@ public class Plc4XComponentTest extends CamelTestSupport {
         template.asyncSendBody("direct:plc4x", Collections.singletonList("irrelevant"));
         template.asyncSendBody("direct:plc4x2", Collections.singletonList("irrelevant"));
 
-        assertMockEndpointsSatisfied(2, TimeUnit.SECONDS);
+        MockEndpoint.assertIsSatisfied(context, 2, TimeUnit.SECONDS);
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-               Map<String,Object> tags = new HashMap<>();
-               tags.put("Test1","%TestQuery");
+                Map<String, Object> tags = new HashMap<>();
+                tags.put("Test1", "%TestQuery");
                 Plc4XEndpoint producer = getContext().getEndpoint("plc4x:mock:10.10.10.1/1/1", Plc4XEndpoint.class);
                 producer.setTags(tags);
                 from("direct:plc4x")
-                    .setBody(constant(Collections.singletonMap("test",Collections.singletonMap("testAddress",false))))
-                    .to("plc4x:mock:10.10.10.1/1/1")
-                    .to("mock:result");
+                        .setBody(constant(Collections.singletonMap("test", Collections.singletonMap("testAddress", false))))
+                        .to("plc4x:mock:10.10.10.1/1/1")
+                        .to("mock:result");
                 from("direct:plc4x2")
-                    .setBody(constant(Collections.singletonMap("test2",Collections.singletonMap("testAddress2",0x05))))
-                    .to("plc4x:mock:10.10.10.1/1/1")
-                    .to("mock:result");
+                        .setBody(constant(Collections.singletonMap("test2", Collections.singletonMap("testAddress2", 0x05))))
+                        .to("plc4x:mock:10.10.10.1/1/1")
+                        .to("mock:result");
                 from(producer)
-                    .log("Got ${body}");
+                        .log("Got ${body}");
             }
         };
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
index e8aa5d633b1..742d5dbbd46 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
@@ -21,7 +21,6 @@ import org.junit.jupiter.api.Test;
 // TODO: implement me
 public class Plc4XConsumerTest {
 
-
     @Test
     public void doStart() {
     }
@@ -30,4 +29,4 @@ public class Plc4XConsumerTest {
     public void doStop() {
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
index ca6ea8408c5..c8113b5fc9c 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
@@ -22,9 +22,9 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNull.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.*;
 
 public class Plc4XEndpointTest {
@@ -54,4 +54,4 @@ public class Plc4XEndpointTest {
         assertThat(sut.isSingleton(), is(true));
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
index d9b840f2ff8..b2083cbefa2 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
@@ -16,6 +16,12 @@
  */
 package org.apache.plc4x.camel;
 
+import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.plc4x.java.api.PlcConnection;
@@ -23,12 +29,6 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Field;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
 import static org.mockito.Mockito.*;
 
 public class Plc4XProducerTest {
@@ -46,17 +46,17 @@ public class Plc4XProducerTest {
         when(mockConnection.getMetadata().canRead()).thenReturn(true);
         when(mockConnection.getMetadata().canWrite()).thenReturn(true);
         when(mockConnection.writeRequestBuilder())
-            .thenReturn(mock(PlcWriteRequest.Builder.class, RETURNS_DEEP_STUBS));
+                .thenReturn(mock(PlcWriteRequest.Builder.class, RETURNS_DEEP_STUBS));
 
         when(endpointMock.getConnection()).thenReturn(mockConnection);
         sut = new Plc4XProducer(endpointMock);
         testExchange = mock(Exchange.class, RETURNS_DEEP_STUBS);
-        Map<String, Map<String,Object>> tags = new HashMap();
-        tags.put("test1", Collections.singletonMap("testAddress1",0));
-        tags.put("test1", Collections.singletonMap("testAddress2",true));
-        tags.put("test1", Collections.singletonMap("testAddress3","TestString"));
+        Map<String, Map<String, Object>> tags = new HashMap();
+        tags.put("test1", Collections.singletonMap("testAddress1", 0));
+        tags.put("test1", Collections.singletonMap("testAddress2", true));
+        tags.put("test1", Collections.singletonMap("testAddress3", "TestString"));
         when(testExchange.getIn().getBody())
-            .thenReturn(tags);
+                .thenReturn(tags);
     }
 
     @Test
@@ -105,4 +105,4 @@ public class Plc4XProducerTest {
         sut.doStop();
     }
 
-}
\ No newline at end of file
+}
diff --git a/parent/pom.xml b/parent/pom.xml
index 9041187455b..9cc9458a912 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -2194,6 +2194,11 @@
 				<artifactId>camel-platform-http</artifactId>
 				<version>${project.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>org.apache.camel</groupId>
+				<artifactId>camel-plc4x</artifactId>
+				<version>${project.version}</version>
+			</dependency>
 			<dependency>
 				<groupId>org.apache.camel</groupId>
 				<artifactId>camel-printer</artifactId>


[camel] 08/15: Camel-plc4x: regen after adding to the kit

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 12c8936e4b6f138a5db9f0cecdf7a6f3e9d9a489
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 13:50:17 2022 +0100

    Camel-plc4x: regen after adding to the kit
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 bom/camel-bom/pom.xml                              |  10 +-
 .../org/apache/camel/catalog/components.properties |   1 +
 .../org/apache/camel/catalog/components/plc4x.json |  39 ++
 .../org/apache/camel/main/components.properties    |   1 +
 .../modules/ROOT/examples/json/plc4x.json          |   1 +
 docs/components/modules/others/nav.adoc            |   1 +
 docs/components/modules/others/pages/PLC4X.adoc    |   1 +
 .../component/ComponentsBuilderFactory.java        |  13 +
 .../dsl/Plc4xComponentBuilderFactory.java          | 141 ++++++
 .../src/generated/resources/metadata.json          |  22 +
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 +
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 +
 .../builder/endpoint/StaticEndpointBuilders.java   |  43 ++
 .../endpoint/dsl/Plc4XEndpointBuilderFactory.java  | 552 +++++++++++++++++++++
 .../camel-component-known-dependencies.properties  |   1 +
 15 files changed, 823 insertions(+), 5 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 918e1659109..a52a6d6f3bd 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1619,11 +1619,6 @@
         <artifactId>camel-pdf</artifactId>
         <version>${project.version}</version>
       </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>camel-plc4x</artifactId>
-        <version>${project.version}</version>
-      </dependency>      
       <dependency>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-pg-replication-slot</artifactId>
@@ -1644,6 +1639,11 @@
         <artifactId>camel-platform-http-vertx</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-plc4x</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-printer</artifactId>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index f5d64b27810..51bf87030ec 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -253,6 +253,7 @@ pdf
 pg-replication-slot
 pgevent
 platform-http
+plc4x
 pop3
 pop3s
 pubnub
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json
new file mode 100644
index 00000000000..d9a0becce30
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json
@@ -0,0 +1,39 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "plc4x",
+    "title": "PLC4X",
+    "description": "Camel PLC4X support",
+    "deprecated": false,
+    "firstVersion": "3.20.0",
+    "label": "iot",
+    "javaType": "org.apache.camel.component.plc4x.Plc4XComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-plc4x",
+    "version": "3.20.0-SNAPSHOT",
+    "scheme": "plc4x",
+    "extendsScheme": "",
+    "syntax": "plc4x:driver",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...]
+    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
+    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
+  },
+  "properties": {
+    "driver": { "kind": "path", "displayName": "Driver", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "PLC4X connection string for the connection to the target" },
+    "period": { "kind": "parameter", "displayName": "Period", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Interval on which the Trigger should be checked" },
+    "tags": { "kind": "parameter", "displayName": "Tags", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The tags to read as Map containing the tag name associated to its query" },
+    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Query to a trigger. On a rising edge of the trigger, the tags will be read once" },
+    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...]
+    "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...]
+    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
+  }
+}
diff --git a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index f5d64b27810..51bf87030ec 100644
--- a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++ b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -253,6 +253,7 @@ pdf
 pg-replication-slot
 pgevent
 platform-http
+plc4x
 pop3
 pop3s
 pubnub
diff --git a/docs/components/modules/ROOT/examples/json/plc4x.json b/docs/components/modules/ROOT/examples/json/plc4x.json
new file mode 120000
index 00000000000..332a0294023
--- /dev/null
+++ b/docs/components/modules/ROOT/examples/json/plc4x.json
@@ -0,0 +1 @@
+../../../../../../components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
\ No newline at end of file
diff --git a/docs/components/modules/others/nav.adoc b/docs/components/modules/others/nav.adoc
index 7563eaa6f6a..a059ecbc11f 100644
--- a/docs/components/modules/others/nav.adoc
+++ b/docs/components/modules/others/nav.adoc
@@ -5,6 +5,7 @@
 ** xref:attachments.adoc[Attachments]
 ** xref:aws-xray.adoc[AWS XRay]
 ** xref:caffeine-lrucache.adoc[Caffeine Lrucache]
+** xref:PLC4X.adoc[Camel-PLC4X Component]
 ** xref:cdi.adoc[CDI]
 ** xref:cdi-jta.adoc[CDI JTA]
 ** xref:cdi-main.adoc[CDI Main]
diff --git a/docs/components/modules/others/pages/PLC4X.adoc b/docs/components/modules/others/pages/PLC4X.adoc
new file mode 120000
index 00000000000..155f309919a
--- /dev/null
+++ b/docs/components/modules/others/pages/PLC4X.adoc
@@ -0,0 +1 @@
+../../../../../components/camel-plc4x/src/main/docs/PLC4X.adoc
\ No newline at end of file
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index 5151ddc23e5..2944f2458c6 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -3435,6 +3435,19 @@ public interface ComponentsBuilderFactory {
     static org.apache.camel.builder.component.dsl.PlatformHttpComponentBuilderFactory.PlatformHttpComponentBuilder platformHttp() {
         return org.apache.camel.builder.component.dsl.PlatformHttpComponentBuilderFactory.platformHttp();
     }
+    /**
+     * PLC4X (camel-plc4x)
+     * Camel PLC4X support
+     * 
+     * Category: iot
+     * Since: 3.20
+     * Maven coordinates: org.apache.camel:camel-plc4x
+     * 
+     * @return the dsl builder
+     */
+    static org.apache.camel.builder.component.dsl.Plc4xComponentBuilderFactory.Plc4xComponentBuilder plc4x() {
+        return org.apache.camel.builder.component.dsl.Plc4xComponentBuilderFactory.plc4x();
+    }
     /**
      * POP3 (camel-mail)
      * Send and receive emails using imap, pop3 and smtp protocols.
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Plc4xComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Plc4xComponentBuilderFactory.java
new file mode 100644
index 00000000000..303bc2e38f3
--- /dev/null
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Plc4xComponentBuilderFactory.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ *      http://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.
+ */
+package org.apache.camel.builder.component.dsl;
+
+import javax.annotation.Generated;
+import org.apache.camel.Component;
+import org.apache.camel.builder.component.AbstractComponentBuilder;
+import org.apache.camel.builder.component.ComponentBuilder;
+import org.apache.camel.component.plc4x.Plc4XComponent;
+
+/**
+ * Camel PLC4X support
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
+public interface Plc4xComponentBuilderFactory {
+
+    /**
+     * PLC4X (camel-plc4x)
+     * Camel PLC4X support
+     * 
+     * Category: iot
+     * Since: 3.20
+     * Maven coordinates: org.apache.camel:camel-plc4x
+     * 
+     * @return the dsl builder
+     */
+    static Plc4xComponentBuilder plc4x() {
+        return new Plc4xComponentBuilderImpl();
+    }
+
+    /**
+     * Builder for the PLC4X component.
+     */
+    interface Plc4xComponentBuilder extends ComponentBuilder<Plc4XComponent> {
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions occurred while the consumer is trying to
+         * pickup incoming messages, or the likes, will now be processed as a
+         * message and handled by the routing Error Handler. By default the
+         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
+         * with exceptions, that will be logged at WARN or ERROR level and
+         * ignored.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default Plc4xComponentBuilder bridgeErrorHandler(
+                boolean bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default Plc4xComponentBuilder lazyStartProducer(
+                boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether autowiring is enabled. This is used for automatic autowiring
+         * options (the option must be marked as autowired) by looking up in the
+         * registry to find if there is a single instance of matching type,
+         * which then gets configured on the component. This can be used for
+         * automatic configuring JDBC data sources, JMS connection factories,
+         * AWS Clients, etc.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: advanced
+         * 
+         * @param autowiredEnabled the value to set
+         * @return the dsl builder
+         */
+        default Plc4xComponentBuilder autowiredEnabled(boolean autowiredEnabled) {
+            doSetProperty("autowiredEnabled", autowiredEnabled);
+            return this;
+        }
+    }
+
+    class Plc4xComponentBuilderImpl
+            extends
+                AbstractComponentBuilder<Plc4XComponent>
+            implements
+                Plc4xComponentBuilder {
+        @Override
+        protected Plc4XComponent buildConcreteComponent() {
+            return new Plc4XComponent();
+        }
+        @Override
+        protected boolean setPropertyOnComponent(
+                Component component,
+                String name,
+                Object value) {
+            switch (name) {
+            case "bridgeErrorHandler": ((Plc4XComponent) component).setBridgeErrorHandler((boolean) value); return true;
+            case "lazyStartProducer": ((Plc4XComponent) component).setLazyStartProducer((boolean) value); return true;
+            case "autowiredEnabled": ((Plc4XComponent) component).setAutowiredEnabled((boolean) value); return true;
+            default: return false;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/dsl/camel-componentdsl/src/generated/resources/metadata.json b/dsl/camel-componentdsl/src/generated/resources/metadata.json
index 80051536135..a6a96c43d34 100644
--- a/dsl/camel-componentdsl/src/generated/resources/metadata.json
+++ b/dsl/camel-componentdsl/src/generated/resources/metadata.json
@@ -5648,6 +5648,28 @@
     "producerOnly": false,
     "lenientProperties": false
   },
+  "Plc4xComponentBuilderFactory": {
+    "kind": "component",
+    "name": "plc4x",
+    "title": "PLC4X",
+    "description": "Camel PLC4X support",
+    "deprecated": false,
+    "firstVersion": "3.20.0",
+    "label": "iot",
+    "javaType": "org.apache.camel.component.plc4x.Plc4XComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-plc4x",
+    "version": "3.20.0-SNAPSHOT",
+    "scheme": "plc4x",
+    "extendsScheme": "",
+    "syntax": "plc4x:driver",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
   "Pop3ComponentBuilderFactory": {
     "kind": "component",
     "name": "pop3",
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 0f3b0ede90c..f79c0c225df 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -267,6 +267,7 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.PgEventEndpointBuilderFactory.PgEventBuilders,
             org.apache.camel.builder.endpoint.dsl.PgReplicationSlotEndpointBuilderFactory.PgReplicationSlotBuilders,
             org.apache.camel.builder.endpoint.dsl.PlatformHttpEndpointBuilderFactory.PlatformHttpBuilders,
+            org.apache.camel.builder.endpoint.dsl.Plc4XEndpointBuilderFactory.Plc4XBuilders,
             org.apache.camel.builder.endpoint.dsl.PrinterEndpointBuilderFactory.PrinterBuilders,
             org.apache.camel.builder.endpoint.dsl.PubNubEndpointBuilderFactory.PubNubBuilders,
             org.apache.camel.builder.endpoint.dsl.PulsarEndpointBuilderFactory.PulsarBuilders,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index 94e18d2a232..9b1b441f062 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -264,6 +264,7 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.PgEventEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.PgReplicationSlotEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.PlatformHttpEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.Plc4XEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.PrinterEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.PubNubEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.PulsarEndpointBuilderFactory,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index e7fc788d3ed..26d1d699a7a 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -11924,6 +11924,49 @@ public class StaticEndpointBuilders {
             String path) {
         return org.apache.camel.builder.endpoint.dsl.PlatformHttpEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * PLC4X (camel-plc4x)
+     * Camel PLC4X support
+     * 
+     * Category: iot
+     * Since: 3.20
+     * Maven coordinates: org.apache.camel:camel-plc4x
+     * 
+     * Syntax: <code>plc4x:driver</code>
+     * 
+     * Path parameter: driver (required)
+     * PLC4X connection string for the connection to the target
+     * 
+     * @param path driver
+     * @return the dsl builder
+     */
+    public static org.apache.camel.builder.endpoint.dsl.Plc4XEndpointBuilderFactory.Plc4XEndpointBuilder plc4x(
+            String path) {
+        return org.apache.camel.builder.endpoint.dsl.Plc4XEndpointBuilderFactory.endpointBuilder("plc4x", path);
+    }
+    /**
+     * PLC4X (camel-plc4x)
+     * Camel PLC4X support
+     * 
+     * Category: iot
+     * Since: 3.20
+     * Maven coordinates: org.apache.camel:camel-plc4x
+     * 
+     * Syntax: <code>plc4x:driver</code>
+     * 
+     * Path parameter: driver (required)
+     * PLC4X connection string for the connection to the target
+     * 
+     * @param componentName to use a custom component name for the endpoint
+     * instead of the default name
+     * @param path driver
+     * @return the dsl builder
+     */
+    public static org.apache.camel.builder.endpoint.dsl.Plc4XEndpointBuilderFactory.Plc4XEndpointBuilder plc4x(
+            String componentName,
+            String path) {
+        return org.apache.camel.builder.endpoint.dsl.Plc4XEndpointBuilderFactory.endpointBuilder(componentName, path);
+    }
     /**
      * PubNub (camel-pubnub)
      * Send and receive messages to/from PubNub data stream network for
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Plc4XEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Plc4XEndpointBuilderFactory.java
new file mode 100644
index 00000000000..5b5111f7a0d
--- /dev/null
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Plc4XEndpointBuilderFactory.java
@@ -0,0 +1,552 @@
+/*
+ * 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
+ *
+ *      http://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.
+ */
+package org.apache.camel.builder.endpoint.dsl;
+
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.stream.*;
+import javax.annotation.Generated;
+import org.apache.camel.builder.EndpointConsumerBuilder;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
+
+/**
+ * Camel PLC4X support
+ * 
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface Plc4XEndpointBuilderFactory {
+
+
+    /**
+     * Builder for endpoint consumers for the PLC4X component.
+     */
+    public interface Plc4XEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        default AdvancedPlc4XEndpointConsumerBuilder advanced() {
+            return (AdvancedPlc4XEndpointConsumerBuilder) this;
+        }
+        /**
+         * (Consumer) Interval on which the Trigger should be checked.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param period the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointConsumerBuilder period(int period) {
+            doSetProperty("period", period);
+            return this;
+        }
+        /**
+         * (Consumer) Interval on which the Trigger should be checked.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param period the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointConsumerBuilder period(String period) {
+            doSetProperty("period", period);
+            return this;
+        }
+        /**
+         * The tags to read as Map containing the tag name associated to its
+         * query.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param tags the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointConsumerBuilder tags(
+                Map<java.lang.String, java.lang.Object> tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * The tags to read as Map containing the tag name associated to its
+         * query.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param tags the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointConsumerBuilder tags(String tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * (Consumer) Query to a trigger. On a rising edge of the trigger, the
+         * tags will be read once.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param trigger the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointConsumerBuilder trigger(String trigger) {
+            doSetProperty("trigger", trigger);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint consumers for the PLC4X component.
+     */
+    public interface AdvancedPlc4XEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        default Plc4XEndpointConsumerBuilder basic() {
+            return (Plc4XEndpointConsumerBuilder) this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions occurred while the consumer is trying to
+         * pickup incoming messages, or the likes, will now be processed as a
+         * message and handled by the routing Error Handler. By default the
+         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
+         * with exceptions, that will be logged at WARN or ERROR level and
+         * ignored.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer (advanced)
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointConsumerBuilder bridgeErrorHandler(
+                boolean bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions occurred while the consumer is trying to
+         * pickup incoming messages, or the likes, will now be processed as a
+         * message and handled by the routing Error Handler. By default the
+         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
+         * with exceptions, that will be logged at WARN or ERROR level and
+         * ignored.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer (advanced)
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointConsumerBuilder bridgeErrorHandler(
+                String bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * To let the consumer use a custom ExceptionHandler. Notice if the
+         * option bridgeErrorHandler is enabled then this option is not in use.
+         * By default the consumer will deal with exceptions, that will be
+         * logged at WARN or ERROR level and ignored.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointConsumerBuilder exceptionHandler(
+                org.apache.camel.spi.ExceptionHandler exceptionHandler) {
+            doSetProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * To let the consumer use a custom ExceptionHandler. Notice if the
+         * option bridgeErrorHandler is enabled then this option is not in use.
+         * By default the consumer will deal with exceptions, that will be
+         * logged at WARN or ERROR level and ignored.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointConsumerBuilder exceptionHandler(
+                String exceptionHandler) {
+            doSetProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointConsumerBuilder exchangePattern(
+                org.apache.camel.ExchangePattern exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointConsumerBuilder exchangePattern(
+                String exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint producers for the PLC4X component.
+     */
+    public interface Plc4XEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        default AdvancedPlc4XEndpointProducerBuilder advanced() {
+            return (AdvancedPlc4XEndpointProducerBuilder) this;
+        }
+        /**
+         * (Consumer) Interval on which the Trigger should be checked.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param period the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointProducerBuilder period(int period) {
+            doSetProperty("period", period);
+            return this;
+        }
+        /**
+         * (Consumer) Interval on which the Trigger should be checked.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param period the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointProducerBuilder period(String period) {
+            doSetProperty("period", period);
+            return this;
+        }
+        /**
+         * The tags to read as Map containing the tag name associated to its
+         * query.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param tags the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointProducerBuilder tags(
+                Map<java.lang.String, java.lang.Object> tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * The tags to read as Map containing the tag name associated to its
+         * query.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param tags the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointProducerBuilder tags(String tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * (Consumer) Query to a trigger. On a rising edge of the trigger, the
+         * tags will be read once.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param trigger the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointProducerBuilder trigger(String trigger) {
+            doSetProperty("trigger", trigger);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint producers for the PLC4X component.
+     */
+    public interface AdvancedPlc4XEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        default Plc4XEndpointProducerBuilder basic() {
+            return (Plc4XEndpointProducerBuilder) this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer (advanced)
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointProducerBuilder lazyStartProducer(
+                boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer (advanced)
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default AdvancedPlc4XEndpointProducerBuilder lazyStartProducer(
+                String lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint for the PLC4X component.
+     */
+    public interface Plc4XEndpointBuilder
+            extends
+                Plc4XEndpointConsumerBuilder,
+                Plc4XEndpointProducerBuilder {
+        default AdvancedPlc4XEndpointBuilder advanced() {
+            return (AdvancedPlc4XEndpointBuilder) this;
+        }
+        /**
+         * (Consumer) Interval on which the Trigger should be checked.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param period the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointBuilder period(int period) {
+            doSetProperty("period", period);
+            return this;
+        }
+        /**
+         * (Consumer) Interval on which the Trigger should be checked.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param period the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointBuilder period(String period) {
+            doSetProperty("period", period);
+            return this;
+        }
+        /**
+         * The tags to read as Map containing the tag name associated to its
+         * query.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param tags the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointBuilder tags(
+                Map<java.lang.String, java.lang.Object> tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * The tags to read as Map containing the tag name associated to its
+         * query.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param tags the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointBuilder tags(String tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * (Consumer) Query to a trigger. On a rising edge of the trigger, the
+         * tags will be read once.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param trigger the value to set
+         * @return the dsl builder
+         */
+        default Plc4XEndpointBuilder trigger(String trigger) {
+            doSetProperty("trigger", trigger);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint for the PLC4X component.
+     */
+    public interface AdvancedPlc4XEndpointBuilder
+            extends
+                AdvancedPlc4XEndpointConsumerBuilder,
+                AdvancedPlc4XEndpointProducerBuilder {
+        default Plc4XEndpointBuilder basic() {
+            return (Plc4XEndpointBuilder) this;
+        }
+    }
+
+    public interface Plc4XBuilders {
+        /**
+         * PLC4X (camel-plc4x)
+         * Camel PLC4X support
+         * 
+         * Category: iot
+         * Since: 3.20
+         * Maven coordinates: org.apache.camel:camel-plc4x
+         * 
+         * Syntax: <code>plc4x:driver</code>
+         * 
+         * Path parameter: driver (required)
+         * PLC4X connection string for the connection to the target
+         * 
+         * @param path driver
+         * @return the dsl builder
+         */
+        default Plc4XEndpointBuilder plc4x(String path) {
+            return Plc4XEndpointBuilderFactory.endpointBuilder("plc4x", path);
+        }
+        /**
+         * PLC4X (camel-plc4x)
+         * Camel PLC4X support
+         * 
+         * Category: iot
+         * Since: 3.20
+         * Maven coordinates: org.apache.camel:camel-plc4x
+         * 
+         * Syntax: <code>plc4x:driver</code>
+         * 
+         * Path parameter: driver (required)
+         * PLC4X connection string for the connection to the target
+         * 
+         * @param componentName to use a custom component name for the endpoint
+         * instead of the default name
+         * @param path driver
+         * @return the dsl builder
+         */
+        default Plc4XEndpointBuilder plc4x(String componentName, String path) {
+            return Plc4XEndpointBuilderFactory.endpointBuilder(componentName, path);
+        }
+    }
+    static Plc4XEndpointBuilder endpointBuilder(
+            String componentName,
+            String path) {
+        class Plc4XEndpointBuilderImpl extends AbstractEndpointBuilder implements Plc4XEndpointBuilder, AdvancedPlc4XEndpointBuilder {
+            public Plc4XEndpointBuilderImpl(String path) {
+                super(componentName, path);
+            }
+        }
+        return new Plc4XEndpointBuilderImpl(path);
+    }
+}
\ No newline at end of file
diff --git a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
index afe84f24863..f64dbe24838 100644
--- a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
+++ b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
@@ -264,6 +264,7 @@ org.apache.camel.component.pdf.PdfComponent=camel:pdf
 org.apache.camel.component.pg.replication.slot.PgReplicationSlotComponent=camel:pg-replication-slot
 org.apache.camel.component.pgevent.PgEventComponent=camel:pgevent
 org.apache.camel.component.platform.http.PlatformHttpComponent=camel:platform-http
+org.apache.camel.component.plc4x.Plc4XComponent=camel:plc4x
 org.apache.camel.component.printer.PrinterComponent=camel:printer
 org.apache.camel.component.pubnub.PubNubComponent=camel:pubnub
 org.apache.camel.component.pulsar.PulsarComponent=camel:pulsar


[camel] 07/15: Added camel-plc4x to kit

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 655f2bc2887cfef48eeebe4cc5c342be312b436b
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 13:27:01 2022 +0100

    Added camel-plc4x to kit
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 bom/camel-bom/pom.xml                                             | 5 +++++
 .../resources/org/apache/camel/component/plc4x/plc4x.json         | 8 ++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 1780b17f367..918e1659109 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1619,6 +1619,11 @@
         <artifactId>camel-pdf</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-plc4x</artifactId>
+        <version>${project.version}</version>
+      </dependency>      
       <dependency>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-pg-replication-slot</artifactId>
diff --git a/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json b/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
index ff047f9bfc3..d9a0becce30 100644
--- a/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
+++ b/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
@@ -27,10 +27,10 @@
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
   },
   "properties": {
-    "driver": { "kind": "path", "displayName": "Driver", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
-    "period": { "kind": "parameter", "displayName": "Period", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
-    "tags": { "kind": "parameter", "displayName": "Tags", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
-    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "TODO: Add a short description here" },
+    "driver": { "kind": "path", "displayName": "Driver", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "PLC4X connection string for the connection to the target" },
+    "period": { "kind": "parameter", "displayName": "Period", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Interval on which the Trigger should be checked" },
+    "tags": { "kind": "parameter", "displayName": "Tags", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The tags to read as Map containing the tag name associated to its query" },
+    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Query to a trigger. On a rising edge of the trigger, the tags will be read once" },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...]
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },


[camel] 09/15: Added correct docs name for docs file in Camel-plc4x

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 443faa2fb0b6870b423a18b4a417b5db54d3e9c1
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 13:56:15 2022 +0100

    Added correct docs name for docs file in Camel-plc4x
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../camel-plc4x/src/main/docs/plc4x-component.adoc | 64 ++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/components/camel-plc4x/src/main/docs/plc4x-component.adoc b/components/camel-plc4x/src/main/docs/plc4x-component.adoc
new file mode 100644
index 00000000000..7d3f9dd6adf
--- /dev/null
+++ b/components/camel-plc4x/src/main/docs/plc4x-component.adoc
@@ -0,0 +1,64 @@
+= PLC4X Component
+:doctitle: PLC4X
+:shortname: plc4x
+:artifactid: camel-plc4x
+:description: Camel PLC4X support
+:since: 3.20
+:supportlevel: Preview
+:component-header: Both producer and consumer are supported
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The Camel Component for PLC4X allows you to create routes using the PLC4X API to read from a PLC device or write to it.
+
+== URI Format
+
+------------------------------
+plc4x://driver[?options]
+------------------------------
+
+The bucket will be created if it don't already exists. +
+ You can append query options to the URI in the following format,
+?options=value&option2=value&...
+
+
+// component-configure options: START
+
+// component-configure options: END
+
+// component options: START
+include::partial$component-configure-options.adoc[]
+include::partial$component-endpoint-options.adoc[]
+// component options: END
+
+// endpoint options: START
+
+// endpoint options: END
+
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
+
+
+== Dependencies
+
+Maven users will need to add the following dependency to their pom.xml.
+
+*pom.xml*
+
+[source,xml]
+---------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-plc4x</artifactId>
+    <version>${camel-version}</version>
+</dependency>
+---------------------------------------
+
+where `$\{camel-version}` must be replaced by the actual version of Camel.
+
+
+
+include::spring-boot:partial$starter.adoc[]


[camel] 05/15: Replaced some of the TODOs with descriptions

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b3170fed1f490c0ee8474a7d80c50119731b0a7c
Author: Christofer Dutz <ch...@rivian.com>
AuthorDate: Thu Oct 27 16:25:22 2022 +0200

    Replaced some of the TODOs with descriptions
---
 .../src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
index e73cdf1a4f2..efd8560ec9c 100644
--- a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
@@ -40,10 +40,10 @@ import org.apache.plc4x.java.utils.connectionpool.PooledPlcDriverManager;
 public class Plc4XEndpoint extends DefaultEndpoint {
 
     @UriPath
-    @Metadata(required = true, description = "TODO: Add a short description here")
+    @Metadata(required = true, description = "PLC4X connection string for the connection to the target")
     private String driver;
     @UriParam
-    @Metadata(description = "TODO: Add a short description here")
+    @Metadata(description = "PLC4X field addresses for the tags being read (Format is dependent on the used driver)")
     private Map<String, Object> tags;
     @UriParam
     @Metadata(description = "TODO: Add a short description here")


[camel] 01/15: Added the Apache PLC4X Camel Integation Module

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0c181d0a123df7c132c7f656fd644c413d2e5926
Author: Christofer Dutz <ch...@rivian.com>
AuthorDate: Wed Oct 26 16:05:47 2022 +0200

    Added the Apache PLC4X Camel Integation Module
---
 components/camel-plc4x/pom.xml                     | 173 ++++++++++++++++++++
 components/camel-plc4x/src/main/docs/PLC4X.adoc    |  64 ++++++++
 .../java/org/apache/plc4x/camel/Constants.java     |  30 ++++
 .../org/apache/plc4x/camel/Plc4XComponent.java     |  75 +++++++++
 .../java/org/apache/plc4x/camel/Plc4XConsumer.java | 157 ++++++++++++++++++
 .../java/org/apache/plc4x/camel/Plc4XEndpoint.java | 178 +++++++++++++++++++++
 .../java/org/apache/plc4x/camel/Plc4XProducer.java | 111 +++++++++++++
 .../main/java/org/apache/plc4x/camel/TagData.java  | 129 +++++++++++++++
 .../services/org/apache/camel/component/plc4x      |  19 +++
 .../java/org/apache/plc4x/camel/ConstantsTest.java |  42 +++++
 .../java/org/apache/plc4x/camel/ManualTest.java    |  73 +++++++++
 .../java/org/apache/plc4x/camel/MockDriver.java    | 101 ++++++++++++
 .../org/apache/plc4x/camel/Plc4XComponentTest.java |  67 ++++++++
 .../org/apache/plc4x/camel/Plc4XConsumerTest.java  |  35 ++++
 .../org/apache/plc4x/camel/Plc4XEndpointTest.java  |  59 +++++++
 .../org/apache/plc4x/camel/Plc4XProducerTest.java  | 111 +++++++++++++
 .../services/org.apache.plc4x.java.api.PlcDriver   |  19 +++
 .../src/test/resources/log4j2.properties           |  24 +++
 .../src/test/resources/logback-test.xml            |  36 +++++
 19 files changed, 1503 insertions(+)

diff --git a/components/camel-plc4x/pom.xml b/components/camel-plc4x/pom.xml
new file mode 100644
index 00000000000..0c86170b193
--- /dev/null
+++ b/components/camel-plc4x/pom.xml
@@ -0,0 +1,173 @@
+<?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
+
+         http://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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>components</artifactId>
+        <version>3.20.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-plc4x</artifactId>
+    <packaging>jar</packaging>
+    <name>Camel :: PLC4X</name>
+    <description>Camel PLC4X support</description>
+
+    <properties>
+        <plc4x.version>0.10.0</plc4x.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-engine</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-model</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-mock</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-util</artifactId>
+        </dependency>
+
+        <!-- PLC4J dependencies -->
+
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-api</artifactId>
+            <version>${plc4x.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-connection-pool</artifactId>
+            <version>${plc4x.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-scraper</artifactId>
+            <version>${plc4x.version}</version>
+        </dependency>
+
+        <!-- Include all drivers -->
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-ab-eth</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-ads</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-canopen</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-eip</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-firmata</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-knxnetip</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-modbus</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-opcua</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-s7</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-driver-simulated</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <!-- Testing -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.plc4x</groupId>
+            <artifactId>plc4j-spi</artifactId>
+            <version>${plc4x.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <!-- avoids java.lang.NoClassDefFoundError: javax/activation/DataHandler in Plc4XProducerTest on Java 11-->
+            <groupId>javax.activation</groupId>
+            <artifactId>javax.activation-api</artifactId>
+            <version>1.2.0</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-main</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/components/camel-plc4x/src/main/docs/PLC4X.adoc b/components/camel-plc4x/src/main/docs/PLC4X.adoc
new file mode 100644
index 00000000000..5e6901d1e48
--- /dev/null
+++ b/components/camel-plc4x/src/main/docs/PLC4X.adoc
@@ -0,0 +1,64 @@
+//
+//  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.
+//
+
+:icons: font
+
+== Camel-PLC4X Component
+The Camel Component for PLC4X allows you to create routes using the PLC4X API to read from a PLC device or write to it.
+
+=== Maven dependency
+To use the Camel component, just add following dependency to your project
+----
+<dependency>
+  <groupId>org.apache.plc4x</groupId>
+  <artifactId>plc4j-apache-camel</artifactId>
+  <version>{current-last-released-version}</version>
+</dependency>
+----
+
+== Endpoint
+[cols="2"]
+|===
+|Name |Value
+
+|*Tags*   | The tags to read as `Map<String,String>` containing the tagname associated to its query
+|*Trigger*|(*Consumer*) Query to a trigger. On a rising edge of the trigger, the tags will be read once
+|*Period* |(*Consumer*) Interval on which the Trigger should be checked
+|*Driver parameters* | Every Parameter unknown to the Component will be passed to the driver
+|===
+=== URI Format
+----
+plc4x:[driver-code]://[IP|host][?parameters]
+----
+Note that sometimes you want to add the `Transport` code after the `Driver` code:
+
+----
+plc4x:[driver-code]:[transport-code]://[IP|host][?parameters]
+----
+== Consumer
+The consumer supports one-time reading or Triggered Reading. (_Schedulded Reading using Period only soon_).To read from
+the PLC, use a  `Map<String,String>` containing the Alias and Queries for the Data you want.
+
+The Body create by the Consumer will be a `Map<String,Object>` containing the Aliases and there associated value
+read from the PLC.
+
+== Producer
+To write data to the PLC, we also use a `Map`. The difference with the Producer is that the `Value` of the Map has also to
+be a Map. Also, this `Map` has to be set into the `Body` of the `Message`
+
+The used `Map` would be a `Map<String,Map<String,Object>` where the `Map<String,Object>` represent the Query and the
+data we want to write to it.
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
new file mode 100644
index 00000000000..805b59b6622
--- /dev/null
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+public class Constants {
+
+    public static final String FIELD_NAME_HEADER = "fieldName";
+    public static final String FIELD_QUERY_HEADER = "fieldQuery";
+    public final static String TRIGGER = "TRIGGER_VAR";
+    public final static String PLC_NAME = "PLC";
+    private Constants() {
+      throw new IllegalStateException("Utility class!");
+    }
+}
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
new file mode 100644
index 00000000000..7d84c4672d3
--- /dev/null
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.util.PropertiesHelper;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+
+public class Plc4XComponent extends DefaultComponent {
+    private static final Logger LOGGER = LoggerFactory.getLogger(Plc4XComponent.class);
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        Plc4XEndpoint endpoint = new Plc4XEndpoint(uri, this);
+        //Tags have a Name, a query and an optional value (for writing)
+        //Reading --> Map<String,String>
+        //Writing --> Map<String,Map.Entry<String,Object>>
+        Map<String, Object> tags = getAndRemoveOrResolveReferenceParameter(parameters, "tags", Map.class);
+        if (tags != null) {
+            endpoint.setTags(tags);
+        }
+        String trigger = getAndRemoveOrResolveReferenceParameter(parameters, "trigger", String.class);
+        if (trigger != null) {
+            endpoint.setTrigger(trigger);
+        }
+        Integer period = getAndRemoveOrResolveReferenceParameter(parameters, "period", Integer.class);
+        if (period != null) {
+            endpoint.setPeriod(period);
+        }
+        setProperties(endpoint, parameters);
+        return endpoint;
+    }
+
+    @Override
+    protected void afterConfiguration(String uri, String remaining, Endpoint endpoint, Map<String, Object> parameters) {
+        Plc4XEndpoint plc4XEndpoint = (Plc4XEndpoint) endpoint;
+        plc4XEndpoint.setDriver(remaining.split(":")[0]);
+    }
+
+    @Override
+    protected void validateParameters(String uri, Map<String, Object> parameters, String optionPrefix) {
+        if (parameters != null && !parameters.isEmpty()) {
+            Map<String, Object> param = parameters;
+            if (optionPrefix != null) {
+                param = PropertiesHelper.extractProperties(parameters, optionPrefix);
+            }
+
+            if (parameters.size() > 0) {
+                LOGGER.info("{} parameters will be passed to the PLC Driver", param);
+            }
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
new file mode 100644
index 00000000000..45f4a41f3e1
--- /dev/null
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
@@ -0,0 +1,157 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.support.DefaultConsumer;
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
+import org.apache.plc4x.java.api.messages.PlcReadRequest;
+import org.apache.plc4x.java.scraper.config.JobConfigurationImpl;
+import org.apache.plc4x.java.scraper.config.ScraperConfiguration;
+import org.apache.plc4x.java.scraper.config.triggeredscraper.ScraperConfigurationTriggeredImpl;
+import org.apache.plc4x.java.scraper.exception.ScraperException;
+import org.apache.plc4x.java.scraper.triggeredscraper.TriggeredScraperImpl;
+import org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollector;
+import org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollectorImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+public class Plc4XConsumer extends DefaultConsumer {
+    private static final Logger LOGGER = LoggerFactory.getLogger(Plc4XConsumer.class);
+
+    private final PlcConnection plcConnection;
+    private final Map<String, Object> tags;
+    private final String trigger;
+    private final Plc4XEndpoint plc4XEndpoint;
+
+    private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
+    private ScheduledFuture<?> future;
+
+    public Plc4XConsumer(Plc4XEndpoint endpoint, Processor processor) {
+        super(endpoint, processor);
+        this.plc4XEndpoint = endpoint;
+        this.plcConnection = endpoint.getConnection();
+        this.tags = endpoint.getTags();
+        this.trigger = endpoint.getTrigger();
+    }
+
+    @Override
+    public String toString() {
+        return "Plc4XConsumer[" + plc4XEndpoint + "]";
+    }
+
+    @Override
+    public Endpoint getEndpoint() {
+        return plc4XEndpoint;
+    }
+
+    @Override
+    protected void doStart() throws ScraperException {
+        if (trigger == null) {
+            startUnTriggered();
+        } else {
+            startTriggered();
+        }
+    }
+
+    private void startUnTriggered() {
+        PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
+        for (Map.Entry<String, Object> tag : tags.entrySet()) {
+            try {
+                builder.addItem(tag.getKey(), (String) tag.getValue());
+            } catch (PlcIncompatibleDatatypeException e) {
+                LOGGER.error("For consumer, please use Map<String,String>, currently using {}", tags.getClass().getSimpleName());
+            }
+        }
+        PlcReadRequest request = builder.build();
+        future = executorService.schedule(() ->
+                request.execute().thenAccept(response -> {
+                    try {
+                        Exchange exchange = plc4XEndpoint.createExchange();
+                        Map<String, Object> rsp = new HashMap<>();
+                        for (String field : response.getFieldNames()) {
+                            rsp.put(field, response.getObject(field));
+                        }
+                        exchange.getIn().setBody(rsp);
+                        getProcessor().process(exchange);
+                    } catch (Exception e) {
+                        getExceptionHandler().handleException(e);
+                    }
+                })
+            , 500, TimeUnit.MILLISECONDS);
+    }
+
+    private void startTriggered() throws ScraperException {
+        ScraperConfiguration configuration = getScraperConfig(validateTags());
+        TriggerCollector collector = new TriggerCollectorImpl(plc4XEndpoint.getPlcDriverManager());
+
+        TriggeredScraperImpl scraper = new TriggeredScraperImpl(configuration, (job, alias, response) -> {
+            try {
+                Exchange exchange = plc4XEndpoint.createExchange();
+                exchange.getIn().setBody(response);
+                getProcessor().process(exchange);
+            } catch (Exception e) {
+                getExceptionHandler().handleException(e);
+            }
+        }, collector);
+        scraper.start();
+        collector.start();
+    }
+
+    private Map<String, String> validateTags() {
+        Map<String, String> map = new HashMap<>();
+        for (Map.Entry<String, Object> tag : tags.entrySet()) {
+            if (tag.getValue() instanceof String) {
+                map.put(tag.getKey(), (String) tag.getValue());
+            }
+        }
+        if (map.size() != tags.size()) {
+            LOGGER.error("At least one entry does not match the format : Map.Entry<String,String> ");
+            return null;
+        } else return map;
+    }
+
+    private ScraperConfigurationTriggeredImpl getScraperConfig(Map<String, String> tagList) {
+        String config = "(TRIGGER_VAR," + plc4XEndpoint.getPeriod() + ",(" + plc4XEndpoint.getTrigger() + ")==(true))";
+        List<JobConfigurationImpl> job = Collections.singletonList(new JobConfigurationImpl("PLC4X-Camel", config, 0, Collections.singletonList(Constants.PLC_NAME), tagList));
+        Map<String, String> source = Collections.singletonMap(Constants.PLC_NAME, plc4XEndpoint.getUri());
+        return new ScraperConfigurationTriggeredImpl(source, job);
+    }
+
+    @Override
+    protected void doStop() {
+        // First stop the polling process
+        if (future != null) {
+            future.cancel(true);
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
new file mode 100644
index 00000000000..262a0184668
--- /dev/null
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
@@ -0,0 +1,178 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.*;
+import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
+import org.apache.commons.math3.util.Pair;
+import org.apache.plc4x.java.PlcDriverManager;
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
+import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.utils.connectionpool.PooledPlcDriverManager;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@UriEndpoint(scheme = "plc4x", title = "PLC4X", syntax = "plc4x:driver", label = "plc4x")
+public class Plc4XEndpoint extends DefaultEndpoint {
+
+    @UriPath
+    @Metadata(required = true)
+    private String driver;
+
+    @UriParam
+    private Map<String, Object> tags;
+
+    @UriParam
+    private String trigger;
+
+    @UriParam
+    private int period;
+
+    public int getPeriod() {
+        return period;
+    }
+
+    public void setPeriod(int period) {
+        this.period = period;
+    }
+
+    private PlcDriverManager plcDriverManager;
+    private PlcConnection connection;
+    private String uri;
+
+    public String getUri() {
+        return uri;
+    }
+
+    public String getTrigger() {
+        return trigger;
+    }
+
+    public void setTrigger(String trigger) {
+        this.trigger = trigger;
+        plcDriverManager = new PooledPlcDriverManager();
+        String plc4xURI = uri.replaceFirst("plc4x:/?/?", "");
+        // TODO: is this mutation really intentional
+        uri = plc4xURI;
+        try {
+            connection = plcDriverManager.getConnection(plc4xURI);
+        } catch (PlcConnectionException e) {
+            throw new PlcRuntimeException(e);
+        }
+    }
+
+    public Plc4XEndpoint(String endpointUri, Component component) throws PlcConnectionException {
+        super(endpointUri, component);
+        this.plcDriverManager = new PlcDriverManager();
+        //Here we establish the connection in the endpoint, as it is created once during the context
+        // to avoid disconnecting and reconnecting for every request
+        this.uri = endpointUri.replaceFirst("plc4x:/?/?", "");
+        this.connection = plcDriverManager.getConnection(this.uri);
+    }
+
+    public PlcConnection getConnection() {
+        return connection;
+    }
+
+    @Override
+    public void setProperties(Object bean, Map<String, Object> parameters) {
+
+    }
+
+    @Override
+    public Producer createProducer() throws Exception {
+        //Checking if connection is still up and reconnecting if not
+        if (!connection.isConnected()) {
+            connection = plcDriverManager.getConnection(uri.replaceFirst("plc4x:/?/?", ""));
+        }
+        return new Plc4XProducer(this);
+    }
+
+    @Override
+    public Consumer createConsumer(Processor processor) throws Exception {
+        //Checking if connection is still up and reconnecting if not
+        if (!connection.isConnected()) {
+            connection = plcDriverManager.getConnection(uri.replaceFirst("plc4x:/?/?", ""));
+        }
+        return new Plc4XConsumer(this, processor);
+    }
+
+    @Override
+    public boolean isSingleton() {
+        return true;
+    }
+
+    public PlcDriverManager getPlcDriverManager() {
+        return plcDriverManager;
+    }
+
+    public String getDriver() {
+        return driver;
+    }
+
+    public void setDriver(String driver) {
+        this.driver = driver;
+    }
+
+    public Map<String, Object> getTags() {
+        return tags;
+    }
+
+    public void setTags(Map<String, Object> tags) {
+        this.tags = tags;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (!(o instanceof Plc4XEndpoint)) {
+            return false;
+        }
+        if (!super.equals(o)) {
+            return false;
+        }
+        Plc4XEndpoint that = (Plc4XEndpoint) o;
+        return Objects.equals(getDriver(), that.getDriver()) &&
+            Objects.equals(getTags(), that.getTags()) &&
+            Objects.equals(getPlcDriverManager(), that.getPlcDriverManager());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(super.hashCode(), getDriver(), getTags(), getPlcDriverManager());
+    }
+
+    @Override
+    public void doStop() throws Exception {
+        //Shutting down the connection when leaving the Context
+        if (connection != null && connection.isConnected()) {
+            connection.close();
+        }
+    }
+
+}
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
new file mode 100644
index 00000000000..6adfab3700c
--- /dev/null
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.exceptions.PlcException;
+import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
+import org.apache.plc4x.java.api.messages.PlcWriteRequest;
+import org.apache.plc4x.java.api.messages.PlcWriteResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class Plc4XProducer extends DefaultAsyncProducer {
+    private final Logger log = LoggerFactory.getLogger(Plc4XProducer.class);
+    private PlcConnection plcConnection;
+    private AtomicInteger openRequests;
+
+    public Plc4XProducer(Plc4XEndpoint endpoint) throws PlcException {
+        super(endpoint);
+        String plc4xURI = endpoint.getEndpointUri().replaceFirst("plc4x:/?/?", "");
+        this.plcConnection = endpoint.getConnection();
+        if (!plcConnection.getMetadata().canWrite()) {
+            throw new PlcException("This connection (" + plc4xURI + ") doesn't support writing.");
+        }
+        openRequests = new AtomicInteger();
+    }
+
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        Message in = exchange.getIn();
+        Object body = in.getBody();
+        PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder();
+        if (body instanceof Map) { //Check if we have a Map
+            Map<String, Map<String, Object>> tags = (Map<String, Map<String, Object>>) body;
+            for (Map.Entry<String, Map<String, Object>> entry : tags.entrySet()) {
+                //Tags are stored like this --> Map<Tagname,Map<Query,Value>> for writing
+                String name = entry.getKey();
+                String query = entry.getValue().keySet().iterator().next();
+                Object value = entry.getValue().get(query);
+                builder.addItem(name,query,value);
+            }
+        } else {
+            throw new PlcInvalidFieldException("The body must contain a Map<String,Map<String,Object>");
+        }
+
+        CompletableFuture<? extends PlcWriteResponse> completableFuture = builder.build().execute();
+        int currentlyOpenRequests = openRequests.incrementAndGet();
+        try {
+            log.debug("Currently open requests including {}:{}", exchange, currentlyOpenRequests);
+            Object plcWriteResponse = completableFuture.get();
+            if (exchange.getPattern().isOutCapable()) {
+                Message out = exchange.getOut();
+                out.copyFrom(exchange.getIn());
+                out.setBody(plcWriteResponse);
+            } else {
+                in.setBody(plcWriteResponse);
+            }
+        } finally {
+            int openRequestsAfterFinish = openRequests.decrementAndGet();
+            log.trace("Open Requests after {}:{}", exchange, openRequestsAfterFinish);
+        }
+    }
+
+    @Override
+    public boolean process(Exchange exchange, AsyncCallback callback) {
+        try {
+            process(exchange);
+            Message out = exchange.getOut();
+            out.copyFrom(exchange.getIn());
+        } catch (Exception e) {
+            exchange.setOut(null);
+            exchange.setException(e);
+        }
+        callback.done(true);
+        return true;
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        int openRequestsAtStop = openRequests.get();
+        log.debug("Stopping with {} open requests", openRequestsAtStop);
+        if (openRequestsAtStop > 0) {
+            log.warn("There are still {} open requests", openRequestsAtStop);
+        }
+    }
+
+}
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
new file mode 100644
index 00000000000..6974ead775b
--- /dev/null
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
@@ -0,0 +1,129 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Predicate;
+
+public class TagData {
+    private String tagName;
+    private String query;
+    private Object value;
+
+    public TagData(String alias, String query, Object value) {
+        this.tagName = alias;
+        this.query = query;
+        this.value = value;
+        setType();
+    }
+
+    public TagData(String tagName, String query) {
+        this.tagName = tagName;
+        this.query = query;
+    }
+
+    public String getTagName() {
+        return tagName;
+    }
+
+    public void setTagName(String tagName) {
+        this.tagName = tagName;
+    }
+
+    public String getQuery() {
+        return query;
+    }
+
+    public void setQuery(String query) {
+        this.query = query;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+
+
+    private void setType(){
+        if(value!=null && value instanceof String){
+            String val = (String)value;
+            if(canParse.get(Boolean.TYPE).test(val)){
+                value = Boolean.parseBoolean(val);
+            }
+            if(canParse.get(Short.TYPE).test(val)){
+                value = Short.parseShort(val);
+            }
+            else if(canParse.get(Integer.TYPE).test(val)){
+                value = Integer.parseInt(val);
+            }
+            else if(canParse.get(Long.TYPE).test(val)){
+                value = Long.parseLong(val);
+            }
+            else if(canParse.get(Double.TYPE).test(val)){
+                value = Double.parseDouble(val);
+            }
+            else if(canParse.get(Float.TYPE).test(val)){
+                value = Float.parseFloat(val);
+            }
+
+        }
+    }
+
+    private Map<Class<?>, Predicate<String>> canParse = new HashMap<>();
+    {
+        canParse.put(Integer.TYPE, s -> {try {Integer.parseInt(s); return true;} catch(Exception e) {return false;}});
+        canParse.put(Long.TYPE, s -> {try {Long.parseLong(s); return true;} catch(Exception e) {return false;}});
+        canParse.put(Short.TYPE, s -> {try {Short.parseShort(s); return true;} catch(Exception e) {return false;}});
+        canParse.put(Boolean.TYPE, s -> {try {Boolean.parseBoolean(s); return true;} catch(Exception e) {return false;}});
+        canParse.put(Double.TYPE, s -> {try {Double.parseDouble(s); return true;} catch(Exception e) {return false;}});
+        canParse.put(Float.TYPE, s -> {try {Float.parseFloat(s); return true;} catch(Exception e) {return false;}});
+    };
+
+    @Override
+    public  String toString(){
+        return "("+tagName+") : "+value;
+    }
+
+    @Override
+    public boolean equals(Object tag){
+        return value!= null?((TagData)tag).getValue().equals(value)
+            && ((TagData)tag).getTagName().equals(tagName)
+            && ((TagData)tag).getQuery().equals(query) :
+             ((TagData)tag).getTagName().equals(tagName)
+            && ((TagData)tag).getQuery().equals(query);
+
+
+    }
+
+    public static Map<String,String> toMap(List<TagData> tags){
+        Map<String,String> map = new HashMap<>();
+        LoggerFactory.getLogger(TagData.class).info("Classloader {} ", Thread.currentThread().getContextClassLoader());
+        for(TagData tag : tags){
+            map.put(tag.getTagName(),tag.getQuery());
+        }
+        return map;
+    }
+}
diff --git a/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x b/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
new file mode 100644
index 00000000000..5fd13a9798b
--- /dev/null
+++ b/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+class=org.apache.plc4x.camel.Plc4XComponent
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
new file mode 100644
index 00000000000..68d36bfc5b1
--- /dev/null
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.Constructor;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+public class ConstantsTest {
+
+    @Test
+    public void testConstantsNotInstanceable() {
+        assertThrows(IllegalStateException.class, () -> {
+            try {
+                Constructor<Constants> constructor = Constants.class.getDeclaredConstructor();
+                constructor.setAccessible(true);
+                constructor.newInstance();
+            } catch (Exception e) {
+                throw e.getCause();
+            }
+        });
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
new file mode 100644
index 00000000000..46f27041aa7
--- /dev/null
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.main.Main;
+import org.apache.camel.main.MainListenerSupport;
+
+import java.util.Date;
+
+public class ManualTest {
+
+    private Main main;
+
+    public static void main(String[] args) throws Exception {
+        ManualTest example = new ManualTest();
+        example.boot();
+    }
+
+    public void boot() throws Exception {
+        // create a Main instance
+        main = new Main();
+        // bind MyBean into the registry
+        main.bind("foo", new MyBean());
+        // add routes
+        main.getCamelContext().addRoutes(new MyRouteBuilder());
+        // add event listener
+        main.addMainListener(new Events());
+        // set the properties from a file
+        main.setPropertyPlaceholderLocations("example.properties");
+        // run until you terminate the JVM
+        System.out.println("Starting Camel. Use ctrl + c to terminate the JVM.\n");
+        main.run();
+    }
+
+    private static class MyRouteBuilder extends RouteBuilder {
+        @Override
+        public void configure() {
+            from("plc4x:ads:tcp://10.10.64.40/10.10.64.40.1.1:851/192.168.113.3.1.1:30000?dataType=java.lang.Integer&address=Allgemein_S2.Station")
+                .process(exchange -> System.out.println("Invoked timer at " + new Date()))
+                .bean("foo")
+                .log("Received ${body}");
+        }
+    }
+
+    public static class MyBean {
+        public void callMe() {
+            System.out.println("MyBean.callMe method has been called");
+        }
+    }
+
+    public static class Events extends MainListenerSupport {
+
+
+
+    }
+}
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
new file mode 100644
index 00000000000..542b1132f8a
--- /dev/null
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.authentication.PlcAuthentication;
+import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
+import org.apache.plc4x.java.api.messages.*;
+import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionResponse;
+import org.apache.plc4x.java.spi.messages.PlcSubscriber;
+import org.apache.plc4x.java.api.PlcDriver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import static org.mockito.Mockito.*;
+
+public class MockDriver implements PlcDriver {
+
+    public static final Logger LOGGER = LoggerFactory.getLogger(MockDriver.class);
+
+    ExecutorService executorService = Executors.newFixedThreadPool(10);
+
+    @Override
+    public String getProtocolCode() {
+        return "mock";
+    }
+
+    @Override
+    public String getProtocolName() {
+        return "Mock Protocol Implementation";
+    }
+
+    @Override
+    public PlcConnection getConnection(String url) throws PlcConnectionException {
+        // Mock a connection.
+        PlcConnection plcConnectionMock = mock(PlcConnection.class, RETURNS_DEEP_STUBS);
+        when(plcConnectionMock.getMetadata().canRead()).thenReturn(true);
+        when(plcConnectionMock.getMetadata().canWrite()).thenReturn(true);
+        when(plcConnectionMock.readRequestBuilder()).thenReturn(mock(PlcReadRequest.Builder.class, RETURNS_DEEP_STUBS));
+        when(plcConnectionMock.writeRequestBuilder()).thenReturn(mock(PlcWriteRequest.Builder.class, RETURNS_DEEP_STUBS));
+        when(plcConnectionMock.subscriptionRequestBuilder()).thenReturn(mock(PlcSubscriptionRequest.Builder.class, RETURNS_DEEP_STUBS));
+        when(plcConnectionMock.unsubscriptionRequestBuilder()).thenReturn(mock(PlcUnsubscriptionRequest.Builder.class, RETURNS_DEEP_STUBS));
+
+        // Mock a typical subscriber.
+        PlcSubscriber plcSubscriber = mock(PlcSubscriber.class, RETURNS_DEEP_STUBS);
+        when(plcSubscriber.subscribe(any(PlcSubscriptionRequest.class))).thenAnswer(invocation -> {
+            LOGGER.info("Received {}", invocation);
+            // TODO: Translate this so it actually does something ...
+            /*PlcSubscriptionRequest subscriptionRequest = invocation.getArgument(0);
+            List<PlcSubscriptionResponse> responseItems =
+                subscriptionRequest.getFieldNames().stream().map(
+                    fieldName -> subscriptionRequest.getField(fieldName)).map(field -> {
+                    Consumer consumer = subscriptionRequestItem.getConsumer();
+                    executorService.submit(() -> {
+                        while (!Thread.currentThread().isInterrupted()) {
+                            consumer.accept(new SubscriptionEventItem<>(null, Calendar.getInstance(), Collections.singletonList("HelloWorld")));
+                            try {
+                                TimeUnit.MILLISECONDS.sleep(100);
+                            } catch (InterruptedException e) {
+                                Thread.currentThread().interrupt();
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    });
+                    return new SubscriptionResponseItem<>(subscriptionRequestItem,
+                        mock(PlcSubscriptionHandle.class, RETURNS_DEEP_STUBS), PlcResponseCode.OK);
+                }).collect(Collectors.toList());
+            PlcSubscriptionResponse response = new PlcSubscriptionResponse(subscriptionRequest, responseItems);*/
+            PlcSubscriptionResponse response = new DefaultPlcSubscriptionResponse(mock(PlcSubscriptionRequest.class), new HashMap<>());
+            return CompletableFuture.completedFuture(response);
+        });
+        return plcConnectionMock;
+    }
+
+    @Override
+    public PlcConnection getConnection(String url, PlcAuthentication authentication) throws PlcConnectionException {
+        return getConnection(null);
+    }
+
+}
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
new file mode 100644
index 00000000000..bc66944b3fb
--- /dev/null
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.Expression;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.plc4x.java.api.model.PlcField;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+public class Plc4XComponentTest extends CamelTestSupport {
+
+    @Test
+    public void testSimpleRouting() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMinimumMessageCount(1);
+        mock.expectedMessageCount(2);
+
+        template.asyncSendBody("direct:plc4x", Collections.singletonList("irrelevant"));
+        template.asyncSendBody("direct:plc4x2", Collections.singletonList("irrelevant"));
+
+        assertMockEndpointsSatisfied(2, TimeUnit.SECONDS);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+               Map<String,Object> tags = new HashMap<>();
+               tags.put("Test1","%TestQuery");
+                Plc4XEndpoint producer = getContext().getEndpoint("plc4x:mock:10.10.10.1/1/1", Plc4XEndpoint.class);
+                producer.setTags(tags);
+                from("direct:plc4x")
+                    .setBody(constant(Collections.singletonMap("test",Collections.singletonMap("testAddress",false))))
+                    .to("plc4x:mock:10.10.10.1/1/1")
+                    .to("mock:result");
+                from("direct:plc4x2")
+                    .setBody(constant(Collections.singletonMap("test2",Collections.singletonMap("testAddress2",0x05))))
+                    .to("plc4x:mock:10.10.10.1/1/1")
+                    .to("mock:result");
+                from(producer)
+                    .log("Got ${body}");
+            }
+        };
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
new file mode 100644
index 00000000000..8611cf08061
--- /dev/null
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.junit.jupiter.api.Test;
+
+// TODO: implement me
+public class Plc4XConsumerTest {
+
+
+    @Test
+    public void doStart() {
+    }
+
+    @Test
+    public void doStop() {
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
new file mode 100644
index 00000000000..94e120f6de3
--- /dev/null
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.Component;
+import org.apache.camel.Processor;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsNull.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.*;
+
+public class Plc4XEndpointTest {
+
+    Plc4XEndpoint SUT;
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        Component mockComponent = mock(Component.class, RETURNS_DEEP_STUBS);
+        when(mockComponent.getCamelContext()).thenReturn(new DefaultCamelContext());
+        SUT = new Plc4XEndpoint("plc4x:mock:10.10.10.1/1/1", mockComponent);
+    }
+
+    // TODO: figure out what this is
+    @Test
+    public void createProducer() throws Exception {
+        assertThat(SUT.createProducer(), notNullValue());
+    }
+
+    @Test
+    public void createConsumer() throws Exception {
+        assertThat(SUT.createConsumer(mock(Processor.class)), notNullValue());
+    }
+
+    @Test
+    public void isSingleton() {
+        assertThat(SUT.isSingleton(), is(true));
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
new file mode 100644
index 00000000000..a201fd36729
--- /dev/null
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+package org.apache.plc4x.camel;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.messages.PlcWriteRequest;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import static org.mockito.Mockito.*;
+
+public class Plc4XProducerTest {
+
+    private Plc4XProducer SUT;
+
+    private Exchange testExchange;
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        Plc4XEndpoint endpointMock = mock(Plc4XEndpoint.class, RETURNS_DEEP_STUBS);
+        when(endpointMock.getEndpointUri()).thenReturn("plc4x:mock:10.10.10.1/1/1");
+        PlcConnection mockConnection = mock(PlcConnection.class, RETURNS_DEEP_STUBS);
+
+        when(mockConnection.getMetadata().canRead()).thenReturn(true);
+        when(mockConnection.getMetadata().canWrite()).thenReturn(true);
+        when(mockConnection.writeRequestBuilder())
+            .thenReturn(mock(PlcWriteRequest.Builder.class, RETURNS_DEEP_STUBS));
+
+        when(endpointMock.getConnection()).thenReturn(mockConnection);
+        SUT = new Plc4XProducer(endpointMock);
+        testExchange = mock(Exchange.class, RETURNS_DEEP_STUBS);
+        Map<String, Map<String,Object>> tags = new HashMap();
+        tags.put("test1", Collections.singletonMap("testAddress1",0));
+        tags.put("test1", Collections.singletonMap("testAddress2",true));
+        tags.put("test1", Collections.singletonMap("testAddress3","TestString"));
+        when(testExchange.getIn().getBody())
+            .thenReturn(tags);
+    }
+
+    @Test
+    public void process() throws Exception {
+        when(testExchange.getPattern()).thenReturn(ExchangePattern.InOnly);
+        SUT.process(testExchange);
+        when(testExchange.getPattern()).thenReturn(ExchangePattern.InOut);
+        SUT.process(testExchange);
+        when(testExchange.getIn().getBody()).thenReturn(2);
+
+    }
+
+    @Test
+    public void process_Async() {
+        SUT.process(testExchange, doneSync -> {
+        });
+        when(testExchange.getPattern()).thenReturn(ExchangePattern.InOnly);
+        SUT.process(testExchange, doneSync -> {
+        });
+        when(testExchange.getPattern()).thenReturn(ExchangePattern.InOut);
+        SUT.process(testExchange, doneSync -> {
+        });
+    }
+
+    @Test
+    public void doStop() throws Exception {
+        SUT.doStop();
+    }
+
+    @Test
+    public void doStopOpenRequest() throws Exception {
+        Field openRequests = SUT.getClass().getDeclaredField("openRequests");
+        openRequests.setAccessible(true);
+        AtomicInteger atomicInteger = (AtomicInteger) openRequests.get(SUT);
+        atomicInteger.incrementAndGet();
+        SUT.doStop();
+    }
+
+    @Test
+    public void doStopBadConnection() throws Exception {
+        Field openRequests = SUT.getClass().getDeclaredField("plcConnection");
+        openRequests.setAccessible(true);
+        PlcConnection plcConnectionMock = mock(PlcConnection.class);
+        doThrow(new RuntimeException("oh noes")).when(plcConnectionMock).close();
+        openRequests.set(SUT, plcConnectionMock);
+        SUT.doStop();
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver b/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
new file mode 100644
index 00000000000..981a9f1938d
--- /dev/null
+++ b/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+org.apache.plc4x.camel.MockDriver
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/resources/log4j2.properties b/components/camel-plc4x/src/test/resources/log4j2.properties
new file mode 100644
index 00000000000..bd94d40a452
--- /dev/null
+++ b/components/camel-plc4x/src/test/resources/log4j2.properties
@@ -0,0 +1,24 @@
+#
+# 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.
+#
+appender.out.type=Console
+appender.out.name=out
+appender.out.layout.type=PatternLayout
+appender.out.layout.pattern=[%30.30t] %-30.30c{1} %-5p %m%n
+rootLogger.level=INFO
+rootLogger.appenderRef.out.ref=out
diff --git a/components/camel-plc4x/src/test/resources/logback-test.xml b/components/camel-plc4x/src/test/resources/logback-test.xml
new file mode 100644
index 00000000000..2b9cea25dc8
--- /dev/null
+++ b/components/camel-plc4x/src/test/resources/logback-test.xml
@@ -0,0 +1,36 @@
+<?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.
+  -->
+<configuration xmlns="http://ch.qos.logback/xml/ns/logback"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="
+                  http://ch.qos.logback/xml/ns/logback
+                  https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd">
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <root level="error">
+    <appender-ref ref="STDOUT" />
+  </root>
+
+</configuration>
\ No newline at end of file


[camel] 14/15: Camel-Plc4x: Moving plc4x version property placeholder in parent pom

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f4a709ec69cd9d0dd0bc17dfe0eca43064c9b9f6
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 14:15:59 2022 +0100

    Camel-Plc4x: Moving plc4x version property placeholder in parent pom
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 components/camel-plc4x/pom.xml | 4 ----
 parent/pom.xml                 | 1 +
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/components/camel-plc4x/pom.xml b/components/camel-plc4x/pom.xml
index 7f6ac68fe25..9ed34de6745 100644
--- a/components/camel-plc4x/pom.xml
+++ b/components/camel-plc4x/pom.xml
@@ -31,10 +31,6 @@
     <name>Camel :: PLC4X</name>
     <description>Camel PLC4X support</description>
 
-    <properties>
-        <plc4x.version>0.10.0</plc4x.version>
-    </properties>
-
     <dependencies>
 
         <dependency>
diff --git a/parent/pom.xml b/parent/pom.xml
index 9cc9458a912..163876b4616 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -437,6 +437,7 @@
         <pgjdbc-driver-version>42.4.1</pgjdbc-driver-version>
         <pgjdbc-ng-driver-version>0.8.9</pgjdbc-ng-driver-version>
         <picocli-version>4.6.3</picocli-version>
+        <plc4x.version>0.10.0</plc4x.version>
         <powermock-version>2.0.7</powermock-version>
         <properties-maven-plugin-version>1.0-alpha-2</properties-maven-plugin-version>
         <protobuf-version>3.19.6</protobuf-version>


[camel] 02/15: Applied some of the suggestions by the sourceformatter.

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e5f21733494029eed4e98af86a5b518d821eb03d
Author: Christofer Dutz <ch...@rivian.com>
AuthorDate: Wed Oct 26 16:33:30 2022 +0200

    Applied some of the suggestions by the sourceformatter.
---
 components/camel-plc4x/pom.xml                     |  22 +++--
 .../java/org/apache/plc4x/camel/Constants.java     |  33 ++++---
 .../org/apache/plc4x/camel/Plc4XComponent.java     |  27 +++---
 .../java/org/apache/plc4x/camel/Plc4XConsumer.java |  30 +++----
 .../java/org/apache/plc4x/camel/Plc4XEndpoint.java |  33 ++++---
 .../java/org/apache/plc4x/camel/Plc4XProducer.java |  26 +++---
 .../main/java/org/apache/plc4x/camel/TagData.java  |  98 +++++++++++++++------
 .../services/org/apache/camel/component/plc4x      |  26 +++---
 .../java/org/apache/plc4x/camel/ConstantsTest.java |  26 +++---
 .../java/org/apache/plc4x/camel/ManualTest.java    |  26 +++---
 .../java/org/apache/plc4x/camel/MockDriver.java    |  32 +++----
 .../org/apache/plc4x/camel/Plc4XComponentTest.java |  26 +++---
 .../org/apache/plc4x/camel/Plc4XConsumerTest.java  |  26 +++---
 .../org/apache/plc4x/camel/Plc4XEndpointTest.java  |  36 ++++----
 .../org/apache/plc4x/camel/Plc4XProducerTest.java  |  57 ++++++------
 .../services/org.apache.plc4x.java.api.PlcDriver   |  26 +++---
 .../src/test/resources/log4j2.properties           |  26 +++---
 .../src/test/resources/logback-test.xml            |  30 +++----
 .../src/test/resources/data/sfny-j48.model         | Bin 7824 -> 7824 bytes
 components/pom.xml                                 |   1 +
 20 files changed, 317 insertions(+), 290 deletions(-)

diff --git a/components/camel-plc4x/pom.xml b/components/camel-plc4x/pom.xml
index 0c86170b193..1c72eeb3ec6 100644
--- a/components/camel-plc4x/pom.xml
+++ b/components/camel-plc4x/pom.xml
@@ -78,6 +78,12 @@
             <groupId>org.apache.plc4x</groupId>
             <artifactId>plc4j-scraper</artifactId>
             <version>${plc4x.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.fasterxml.jackson.core</groupId>
+                    <artifactId>jackson-databind</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- Include all drivers -->
@@ -86,6 +92,16 @@
             <artifactId>plc4j-driver-ab-eth</artifactId>
             <version>${plc4x.version}</version>
             <scope>runtime</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.fasterxml.jackson.core</groupId>
+                    <artifactId>jackson-databind</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.fasterxml.woodstox</groupId>
+                    <artifactId>woodstox-core</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.apache.plc4x</groupId>
@@ -149,12 +165,6 @@
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.plc4x</groupId>
-            <artifactId>plc4j-spi</artifactId>
-            <version>${plc4x.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <!-- avoids java.lang.NoClassDefFoundError: javax/activation/DataHandler in Plc4XProducerTest on Java 11-->
             <groupId>javax.activation</groupId>
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
index 805b59b6622..a12db73c2da 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
@@ -1,30 +1,29 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
-public class Constants {
+public final class Constants {
 
     public static final String FIELD_NAME_HEADER = "fieldName";
     public static final String FIELD_QUERY_HEADER = "fieldQuery";
-    public final static String TRIGGER = "TRIGGER_VAR";
-    public final static String PLC_NAME = "PLC";
+    public static final String TRIGGER = "TRIGGER_VAR";
+    public static final String PLC_NAME = "PLC";
     private Constants() {
       throw new IllegalStateException("Utility class!");
     }
+
 }
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
index 7d84c4672d3..f75c0d0d38b 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
@@ -1,27 +1,24 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.PropertiesHelper;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
index 45f4a41f3e1..431ca62e8f3 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
@@ -136,7 +134,9 @@ public class Plc4XConsumer extends DefaultConsumer {
         if (map.size() != tags.size()) {
             LOGGER.error("At least one entry does not match the format : Map.Entry<String,String> ");
             return null;
-        } else return map;
+        } else {
+            return map;
+        }
     }
 
     private ScraperConfigurationTriggeredImpl getScraperConfig(Map<String, String> tagList) {
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
index 262a0184668..580acfe1ab0 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
@@ -1,37 +1,36 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
-import org.apache.camel.*;
+import org.apache.camel.Component;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.commons.math3.util.Pair;
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
 import org.apache.plc4x.java.utils.connectionpool.PooledPlcDriverManager;
 
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
index 6adfab3700c..af418de5dc1 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
index 6974ead775b..218ebcd7c49 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
+++ b/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
@@ -23,6 +21,7 @@ import org.slf4j.LoggerFactory;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.function.Predicate;
 
 public class TagData {
@@ -75,17 +74,13 @@ public class TagData {
             }
             if(canParse.get(Short.TYPE).test(val)){
                 value = Short.parseShort(val);
-            }
-            else if(canParse.get(Integer.TYPE).test(val)){
+            } else if(canParse.get(Integer.TYPE).test(val)){
                 value = Integer.parseInt(val);
-            }
-            else if(canParse.get(Long.TYPE).test(val)){
+            } else if(canParse.get(Long.TYPE).test(val)){
                 value = Long.parseLong(val);
-            }
-            else if(canParse.get(Double.TYPE).test(val)){
+            } else if(canParse.get(Double.TYPE).test(val)){
                 value = Double.parseDouble(val);
-            }
-            else if(canParse.get(Float.TYPE).test(val)){
+            } else if(canParse.get(Float.TYPE).test(val)){
                 value = Float.parseFloat(val);
             }
 
@@ -94,12 +89,54 @@ public class TagData {
 
     private Map<Class<?>, Predicate<String>> canParse = new HashMap<>();
     {
-        canParse.put(Integer.TYPE, s -> {try {Integer.parseInt(s); return true;} catch(Exception e) {return false;}});
-        canParse.put(Long.TYPE, s -> {try {Long.parseLong(s); return true;} catch(Exception e) {return false;}});
-        canParse.put(Short.TYPE, s -> {try {Short.parseShort(s); return true;} catch(Exception e) {return false;}});
-        canParse.put(Boolean.TYPE, s -> {try {Boolean.parseBoolean(s); return true;} catch(Exception e) {return false;}});
-        canParse.put(Double.TYPE, s -> {try {Double.parseDouble(s); return true;} catch(Exception e) {return false;}});
-        canParse.put(Float.TYPE, s -> {try {Float.parseFloat(s); return true;} catch(Exception e) {return false;}});
+        canParse.put(Integer.TYPE, s -> {
+            try {
+                Integer.parseInt(s);
+                return true;
+            } catch(Exception e) {
+                return false;
+            }
+        });
+        canParse.put(Long.TYPE, s -> {
+            try {
+                Long.parseLong(s);
+                return true;
+            } catch(Exception e) {
+                return false;
+            }
+        });
+        canParse.put(Short.TYPE, s -> {
+            try {
+                Short.parseShort(s);
+                return true;
+            } catch(Exception e) {
+                return false;
+            }
+        });
+        canParse.put(Boolean.TYPE, s -> {
+            try {
+                Boolean.parseBoolean(s);
+                return true;
+            } catch(Exception e) {
+                return false;
+            }
+        });
+        canParse.put(Double.TYPE, s -> {
+            try {
+                Double.parseDouble(s);
+                return true;
+            } catch(Exception e) {
+                return false;
+            }
+        });
+        canParse.put(Float.TYPE, s -> {
+            try {
+                Float.parseFloat(s);
+                return true;
+            } catch(Exception e) {
+                return false;
+            }
+        });
     };
 
     @Override
@@ -114,8 +151,11 @@ public class TagData {
             && ((TagData)tag).getQuery().equals(query) :
              ((TagData)tag).getTagName().equals(tagName)
             && ((TagData)tag).getQuery().equals(query);
+    }
 
-
+    @Override
+    public int hashCode() {
+        return Objects.hash(tagName, query, value, canParse);
     }
 
     public static Map<String,String> toMap(List<TagData> tags){
diff --git a/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x b/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
index 5fd13a9798b..e634230703a 100644
--- a/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
+++ b/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
@@ -1,19 +1,17 @@
 #
-# 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
+# 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
+#      http://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.
+# 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.
 #
 class=org.apache.plc4x.camel.Plc4XComponent
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
index 68d36bfc5b1..4ade527ca22 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
index 46f27041aa7..7c9301b4b37 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
index 542b1132f8a..446f58711e0 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
@@ -1,27 +1,29 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
-import org.apache.plc4x.java.api.messages.*;
+import org.apache.plc4x.java.api.messages.PlcReadRequest;
+import org.apache.plc4x.java.api.messages.PlcSubscriptionRequest;
+import org.apache.plc4x.java.api.messages.PlcSubscriptionResponse;
+import org.apache.plc4x.java.api.messages.PlcUnsubscriptionRequest;
+import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionResponse;
 import org.apache.plc4x.java.spi.messages.PlcSubscriber;
 import org.apache.plc4x.java.api.PlcDriver;
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
index bc66944b3fb..62d9e90ceb1 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
index 8611cf08061..e8aa5d633b1 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
index 94e120f6de3..ca6ea8408c5 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
@@ -31,29 +29,29 @@ import static org.mockito.Mockito.*;
 
 public class Plc4XEndpointTest {
 
-    Plc4XEndpoint SUT;
+    Plc4XEndpoint sut;
 
     @BeforeEach
     public void setUp() throws Exception {
         Component mockComponent = mock(Component.class, RETURNS_DEEP_STUBS);
         when(mockComponent.getCamelContext()).thenReturn(new DefaultCamelContext());
-        SUT = new Plc4XEndpoint("plc4x:mock:10.10.10.1/1/1", mockComponent);
+        sut = new Plc4XEndpoint("plc4x:mock:10.10.10.1/1/1", mockComponent);
     }
 
     // TODO: figure out what this is
     @Test
     public void createProducer() throws Exception {
-        assertThat(SUT.createProducer(), notNullValue());
+        assertThat(sut.createProducer(), notNullValue());
     }
 
     @Test
     public void createConsumer() throws Exception {
-        assertThat(SUT.createConsumer(mock(Processor.class)), notNullValue());
+        assertThat(sut.createConsumer(mock(Processor.class)), notNullValue());
     }
 
     @Test
     public void isSingleton() {
-        assertThat(SUT.isSingleton(), is(true));
+        assertThat(sut.isSingleton(), is(true));
     }
 
 }
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
index a201fd36729..d9b840f2ff8 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
@@ -1,20 +1,18 @@
 /*
- * 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
+ * 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
+ *      http://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.
+ * 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.
  */
 package org.apache.plc4x.camel;
 
@@ -26,7 +24,6 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import java.lang.reflect.Field;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -36,7 +33,7 @@ import static org.mockito.Mockito.*;
 
 public class Plc4XProducerTest {
 
-    private Plc4XProducer SUT;
+    private Plc4XProducer sut;
 
     private Exchange testExchange;
 
@@ -52,7 +49,7 @@ public class Plc4XProducerTest {
             .thenReturn(mock(PlcWriteRequest.Builder.class, RETURNS_DEEP_STUBS));
 
         when(endpointMock.getConnection()).thenReturn(mockConnection);
-        SUT = new Plc4XProducer(endpointMock);
+        sut = new Plc4XProducer(endpointMock);
         testExchange = mock(Exchange.class, RETURNS_DEEP_STUBS);
         Map<String, Map<String,Object>> tags = new HashMap();
         tags.put("test1", Collections.singletonMap("testAddress1",0));
@@ -65,47 +62,47 @@ public class Plc4XProducerTest {
     @Test
     public void process() throws Exception {
         when(testExchange.getPattern()).thenReturn(ExchangePattern.InOnly);
-        SUT.process(testExchange);
+        sut.process(testExchange);
         when(testExchange.getPattern()).thenReturn(ExchangePattern.InOut);
-        SUT.process(testExchange);
+        sut.process(testExchange);
         when(testExchange.getIn().getBody()).thenReturn(2);
 
     }
 
     @Test
-    public void process_Async() {
-        SUT.process(testExchange, doneSync -> {
+    public void processAsync() {
+        sut.process(testExchange, doneSync -> {
         });
         when(testExchange.getPattern()).thenReturn(ExchangePattern.InOnly);
-        SUT.process(testExchange, doneSync -> {
+        sut.process(testExchange, doneSync -> {
         });
         when(testExchange.getPattern()).thenReturn(ExchangePattern.InOut);
-        SUT.process(testExchange, doneSync -> {
+        sut.process(testExchange, doneSync -> {
         });
     }
 
     @Test
     public void doStop() throws Exception {
-        SUT.doStop();
+        sut.doStop();
     }
 
     @Test
     public void doStopOpenRequest() throws Exception {
-        Field openRequests = SUT.getClass().getDeclaredField("openRequests");
+        Field openRequests = sut.getClass().getDeclaredField("openRequests");
         openRequests.setAccessible(true);
-        AtomicInteger atomicInteger = (AtomicInteger) openRequests.get(SUT);
+        AtomicInteger atomicInteger = (AtomicInteger) openRequests.get(sut);
         atomicInteger.incrementAndGet();
-        SUT.doStop();
+        sut.doStop();
     }
 
     @Test
     public void doStopBadConnection() throws Exception {
-        Field openRequests = SUT.getClass().getDeclaredField("plcConnection");
+        Field openRequests = sut.getClass().getDeclaredField("plcConnection");
         openRequests.setAccessible(true);
         PlcConnection plcConnectionMock = mock(PlcConnection.class);
         doThrow(new RuntimeException("oh noes")).when(plcConnectionMock).close();
-        openRequests.set(SUT, plcConnectionMock);
-        SUT.doStop();
+        openRequests.set(sut, plcConnectionMock);
+        sut.doStop();
     }
 
 }
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver b/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
index 981a9f1938d..f3e1faab034 100644
--- a/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
+++ b/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
@@ -1,19 +1,17 @@
 #
-# 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
+# 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
+#      http://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.
+# 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.
 #
 org.apache.plc4x.camel.MockDriver
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/resources/log4j2.properties b/components/camel-plc4x/src/test/resources/log4j2.properties
index bd94d40a452..114baa6aab1 100644
--- a/components/camel-plc4x/src/test/resources/log4j2.properties
+++ b/components/camel-plc4x/src/test/resources/log4j2.properties
@@ -1,20 +1,18 @@
 #
-# 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
+# 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
+#      http://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.
+# 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.
 #
 appender.out.type=Console
 appender.out.name=out
diff --git a/components/camel-plc4x/src/test/resources/logback-test.xml b/components/camel-plc4x/src/test/resources/logback-test.xml
index 2b9cea25dc8..052d9bc0935 100644
--- a/components/camel-plc4x/src/test/resources/logback-test.xml
+++ b/components/camel-plc4x/src/test/resources/logback-test.xml
@@ -1,22 +1,22 @@
 <?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
+    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
 
-  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.
-  -->
+         http://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.
+
+-->
 <configuration xmlns="http://ch.qos.logback/xml/ns/logback"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="
diff --git a/components/camel-weka/src/test/resources/data/sfny-j48.model b/components/camel-weka/src/test/resources/data/sfny-j48.model
index 48cf857ea7d..3af41f554c3 100644
Binary files a/components/camel-weka/src/test/resources/data/sfny-j48.model and b/components/camel-weka/src/test/resources/data/sfny-j48.model differ
diff --git a/components/pom.xml b/components/pom.xml
index f4722eff281..cd488fed7f5 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -251,6 +251,7 @@
         <module>camel-pgevent</module>
         <module>camel-platform-http</module>
         <module>camel-platform-http-vertx</module>
+        <module>camel-plc4x</module>
         <module>camel-printer</module>
         <module>camel-protobuf</module>
         <module>camel-pubnub</module>


[camel] 04/15: Updated the package name

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c9944713a46394c5eb9fb8592ea4a9decd3951fb
Author: Christofer Dutz <ch...@rivian.com>
AuthorDate: Thu Oct 27 16:20:01 2022 +0200

    Updated the package name
---
 .../camel => camel/component/plc4x}/Plc4XComponentConfigurer.java       | 2 +-
 .../{plc4x/camel => camel/component/plc4x}/Plc4XEndpointConfigurer.java | 2 +-
 .../{plc4x/camel => camel/component/plc4x}/Plc4XEndpointUriFactory.java | 2 +-
 .../resources/META-INF/services/org/apache/camel/component/plc4x        | 2 +-
 .../META-INF/services/org/apache/camel/configurer/plc4x-component       | 2 +-
 .../META-INF/services/org/apache/camel/configurer/plc4x-endpoint        | 2 +-
 .../META-INF/services/org/apache/camel/urifactory/plc4x-endpoint        | 2 +-
 .../org/apache/{plc4x/camel => camel/component/plc4x}/plc4x.json        | 2 +-
 .../org/apache/{plc4x/camel => camel/component/plc4x}/Constants.java    | 2 +-
 .../apache/{plc4x/camel => camel/component/plc4x}/Plc4XComponent.java   | 2 +-
 .../apache/{plc4x/camel => camel/component/plc4x}/Plc4XConsumer.java    | 2 +-
 .../apache/{plc4x/camel => camel/component/plc4x}/Plc4XEndpoint.java    | 2 +-
 .../apache/{plc4x/camel => camel/component/plc4x}/Plc4XProducer.java    | 2 +-
 .../java/org/apache/{plc4x/camel => camel/component/plc4x}/TagData.java | 2 +-
 .../main/resources/META-INF/services/org/apache/camel/component/plc4x   | 2 +-
 .../apache/{plc4x/camel => camel/component/plc4x}/ConstantsTest.java    | 2 +-
 .../org/apache/{plc4x/camel => camel/component/plc4x}/ManualTest.java   | 2 +-
 .../org/apache/{plc4x/camel => camel/component/plc4x}/MockDriver.java   | 2 +-
 .../{plc4x/camel => camel/component/plc4x}/Plc4XComponentTest.java      | 2 +-
 .../{plc4x/camel => camel/component/plc4x}/Plc4XConsumerTest.java       | 2 +-
 .../{plc4x/camel => camel/component/plc4x}/Plc4XEndpointTest.java       | 2 +-
 .../{plc4x/camel => camel/component/plc4x}/Plc4XProducerTest.java       | 2 +-
 .../resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver     | 2 +-
 23 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XComponentConfigurer.java b/components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XComponentConfigurer.java
similarity index 98%
rename from components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XComponentConfigurer.java
rename to components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XComponentConfigurer.java
index bf53b4c2175..ec8b9626fcf 100644
--- a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XComponentConfigurer.java
+++ b/components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XComponentConfigurer.java
@@ -1,5 +1,5 @@
 /* Generated by camel build tools - do NOT edit this file! */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.Map;
 
diff --git a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointConfigurer.java b/components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointConfigurer.java
similarity index 98%
rename from components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointConfigurer.java
rename to components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointConfigurer.java
index 3aa548c7794..2e7690a3f9d 100644
--- a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointConfigurer.java
+++ b/components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointConfigurer.java
@@ -1,5 +1,5 @@
 /* Generated by camel build tools - do NOT edit this file! */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.Map;
 
diff --git a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointUriFactory.java b/components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointUriFactory.java
similarity index 98%
rename from components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointUriFactory.java
rename to components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointUriFactory.java
index bde25646fcb..76fd27c6389 100644
--- a/components/camel-plc4x/src/generated/java/org/apache/plc4x/camel/Plc4XEndpointUriFactory.java
+++ b/components/camel-plc4x/src/generated/java/org/apache/camel/component/plc4x/Plc4XEndpointUriFactory.java
@@ -1,5 +1,5 @@
 /* Generated by camel build tools - do NOT edit this file! */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.net.URISyntaxException;
 import java.util.Collections;
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x
index 45feea473ec..30d35db6724 100644
--- a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/component/plc4x
@@ -1,2 +1,2 @@
 # Generated by camel build tools - do NOT edit this file!
-class=org.apache.plc4x.camel.Plc4XComponent
+class=org.apache.camel.component.plc4x.Plc4XComponent
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component
index 28800ed1c91..f333cc6c5b6 100644
--- a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-component
@@ -1,2 +1,2 @@
 # Generated by camel build tools - do NOT edit this file!
-class=org.apache.plc4x.camel.Plc4XComponentConfigurer
+class=org.apache.camel.component.plc4x.Plc4XComponentConfigurer
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint
index 0d6d281c187..503e69aefef 100644
--- a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/configurer/plc4x-endpoint
@@ -1,2 +1,2 @@
 # Generated by camel build tools - do NOT edit this file!
-class=org.apache.plc4x.camel.Plc4XEndpointConfigurer
+class=org.apache.camel.component.plc4x.Plc4XEndpointConfigurer
diff --git a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint
index de95df92e67..034c82ffe9a 100644
--- a/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint
+++ b/components/camel-plc4x/src/generated/resources/META-INF/services/org/apache/camel/urifactory/plc4x-endpoint
@@ -1,2 +1,2 @@
 # Generated by camel build tools - do NOT edit this file!
-class=org.apache.plc4x.camel.Plc4XEndpointUriFactory
+class=org.apache.camel.component.plc4x.Plc4XEndpointUriFactory
diff --git a/components/camel-plc4x/src/generated/resources/org/apache/plc4x/camel/plc4x.json b/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
similarity index 98%
rename from components/camel-plc4x/src/generated/resources/org/apache/plc4x/camel/plc4x.json
rename to components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
index f88f66e4f12..ff047f9bfc3 100644
--- a/components/camel-plc4x/src/generated/resources/org/apache/plc4x/camel/plc4x.json
+++ b/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
@@ -7,7 +7,7 @@
     "deprecated": false,
     "firstVersion": "3.20.0",
     "label": "iot",
-    "javaType": "org.apache.plc4x.camel.Plc4XComponent",
+    "javaType": "org.apache.camel.component.plc4x.Plc4XComponent",
     "supportLevel": "Preview",
     "groupId": "org.apache.camel",
     "artifactId": "camel-plc4x",
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Constants.java
similarity index 96%
rename from components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
rename to components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Constants.java
index 9120ccde0b4..d973e4e37dd 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Constants.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Constants.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 public final class Constants {
 
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XComponent.java
similarity index 98%
rename from components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
rename to components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XComponent.java
index 8781e4099f8..64bdd3f9942 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XComponent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.Map;
 
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java
similarity index 99%
rename from components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
rename to components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java
index 74febb09234..bd82e76e861 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XConsumer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.Collections;
 import java.util.HashMap;
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
similarity index 99%
rename from components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
rename to components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
index 97eed2ad2df..e73cdf1a4f2 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.Map;
 import java.util.Objects;
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XProducer.java
similarity index 99%
rename from components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
rename to components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XProducer.java
index ea0208ce656..2e149ab042e 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XProducer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
diff --git a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/TagData.java
similarity index 99%
rename from components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
rename to components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/TagData.java
index 52bca5c8725..14de2a73355 100644
--- a/components/camel-plc4x/src/main/java/org/apache/plc4x/camel/TagData.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/TagData.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.HashMap;
 import java.util.List;
diff --git a/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x b/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
index e634230703a..f0e2b8fdba5 100644
--- a/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
+++ b/components/camel-plc4x/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
@@ -14,4 +14,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-class=org.apache.plc4x.camel.Plc4XComponent
\ No newline at end of file
+class=org.apache.camel.component.plc4x.Plc4XComponent
\ No newline at end of file
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ConstantsTest.java
similarity index 97%
rename from components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
rename to components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ConstantsTest.java
index ca264322c69..8e44255b1dd 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ConstantsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.lang.reflect.Constructor;
 
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ManualTest.java
similarity index 98%
rename from components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
rename to components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ManualTest.java
index a73f66061cd..4b9a8ef78a4 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/ManualTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/ManualTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.Date;
 
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/MockDriver.java
similarity index 99%
rename from components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
rename to components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/MockDriver.java
index 9aec7053694..d3c42cb3a1a 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/MockDriver.java
+++ b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/MockDriver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.HashMap;
 import java.util.concurrent.CompletableFuture;
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XComponentTest.java
similarity index 98%
rename from components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
rename to components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XComponentTest.java
index 53cdf51ae9d..28027ee6c51 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XComponentTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.util.*;
 import java.util.concurrent.TimeUnit;
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XConsumerTest.java
similarity index 95%
rename from components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
rename to components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XConsumerTest.java
index 742d5dbbd46..77b9540b5bd 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XConsumerTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XEndpointTest.java
similarity index 97%
rename from components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
rename to components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XEndpointTest.java
index c8113b5fc9c..388d14a5b1b 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XEndpointTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import org.apache.camel.Component;
 import org.apache.camel.Processor;
diff --git a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XProducerTest.java
similarity index 98%
rename from components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
rename to components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XProducerTest.java
index b2083cbefa2..2dcbc6c1cda 100644
--- a/components/camel-plc4x/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
+++ b/components/camel-plc4x/src/test/java/org/apache/camel/component/plc4x/Plc4XProducerTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.plc4x.camel;
+package org.apache.camel.component.plc4x;
 
 import java.lang.reflect.Field;
 import java.util.Collections;
diff --git a/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver b/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
index f3e1faab034..ad59cbadcc7 100644
--- a/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
+++ b/components/camel-plc4x/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
@@ -14,4 +14,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-org.apache.plc4x.camel.MockDriver
\ No newline at end of file
+org.apache.camel.component.plc4x.MockDriver
\ No newline at end of file


[camel] 13/15: Camel-Plc4x: Regen catalog json

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1cdadffcacbadc7accec5f1116fcb8ebf3b587fd
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 14:14:58 2022 +0100

    Camel-Plc4x: Regen catalog json
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../resources/org/apache/camel/catalog/components/plc4x.json          | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json
index d9a0becce30..67c4e12624b 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/plc4x.json
@@ -28,9 +28,9 @@
   },
   "properties": {
     "driver": { "kind": "path", "displayName": "Driver", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "PLC4X connection string for the connection to the target" },
-    "period": { "kind": "parameter", "displayName": "Period", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Interval on which the Trigger should be checked" },
     "tags": { "kind": "parameter", "displayName": "Tags", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The tags to read as Map containing the tag name associated to its query" },
-    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Query to a trigger. On a rising edge of the trigger, the tags will be read once" },
+    "period": { "kind": "parameter", "displayName": "Period", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Interval on which the Trigger should be checked" },
+    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query to a trigger. On a rising edge of the trigger, the tags will be read once" },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...]
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },


[camel] 15/15: Camel-Plc4x: Use javax.activation version property placeholder coming from Parent POM

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 351645a17c6682f12f065427dc742073ee9bd507
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 14:18:28 2022 +0100

    Camel-Plc4x: Use javax.activation version property placeholder coming from Parent POM
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 components/camel-plc4x/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/components/camel-plc4x/pom.xml b/components/camel-plc4x/pom.xml
index 9ed34de6745..3369ee6004d 100644
--- a/components/camel-plc4x/pom.xml
+++ b/components/camel-plc4x/pom.xml
@@ -163,7 +163,7 @@
             <!-- avoids java.lang.NoClassDefFoundError: javax/activation/DataHandler in Plc4XProducerTest on Java 11-->
             <groupId>javax.activation</groupId>
             <artifactId>javax.activation-api</artifactId>
-            <version>1.2.0</version>
+            <version>${javax-activation-version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>


[camel] 12/15: Camel-Plc4x: Better logging configuration for testing

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 38e99ad8d27d89c31fb1cb17ce09041d2d353dc8
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 14:13:56 2022 +0100

    Camel-Plc4x: Better logging configuration for testing
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 components/camel-plc4x/pom.xml                          |  5 +++++
 .../org/apache/camel/component/plc4x/plc4x.json         |  4 ++--
 .../camel-plc4x/src/test/resources/log4j2.properties    | 17 +++++++++++------
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/components/camel-plc4x/pom.xml b/components/camel-plc4x/pom.xml
index f315457fce5..7f6ac68fe25 100644
--- a/components/camel-plc4x/pom.xml
+++ b/components/camel-plc4x/pom.xml
@@ -158,6 +158,11 @@
             <artifactId>hamcrest</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <!-- avoids java.lang.NoClassDefFoundError: javax/activation/DataHandler in Plc4XProducerTest on Java 11-->
             <groupId>javax.activation</groupId>
diff --git a/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json b/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
index d9a0becce30..67c4e12624b 100644
--- a/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
+++ b/components/camel-plc4x/src/generated/resources/org/apache/camel/component/plc4x/plc4x.json
@@ -28,9 +28,9 @@
   },
   "properties": {
     "driver": { "kind": "path", "displayName": "Driver", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "PLC4X connection string for the connection to the target" },
-    "period": { "kind": "parameter", "displayName": "Period", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Interval on which the Trigger should be checked" },
     "tags": { "kind": "parameter", "displayName": "Tags", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The tags to read as Map containing the tag name associated to its query" },
-    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(Consumer) Query to a trigger. On a rising edge of the trigger, the tags will be read once" },
+    "period": { "kind": "parameter", "displayName": "Period", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Interval on which the Trigger should be checked" },
+    "trigger": { "kind": "parameter", "displayName": "Trigger", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query to a trigger. On a rising edge of the trigger, the tags will be read once" },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...]
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
diff --git a/components/camel-plc4x/src/test/resources/log4j2.properties b/components/camel-plc4x/src/test/resources/log4j2.properties
index 114baa6aab1..a409c5d4e7e 100644
--- a/components/camel-plc4x/src/test/resources/log4j2.properties
+++ b/components/camel-plc4x/src/test/resources/log4j2.properties
@@ -14,9 +14,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-appender.out.type=Console
-appender.out.name=out
-appender.out.layout.type=PatternLayout
-appender.out.layout.pattern=[%30.30t] %-30.30c{1} %-5p %m%n
-rootLogger.level=INFO
-rootLogger.appenderRef.out.ref=out
+appender.file.type = File
+appender.file.name = file
+appender.file.fileName = target/camel-plc4x-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.out.type = Console
+appender.out.name = out
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+rootLogger.level = INFO
+rootLogger.appenderRef.file.ref = file


[camel] 06/15: Added the missing descriptions to parameters

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8f44bfe9480aac1c92f7a64977cf7374ecc8e7fe
Author: Christofer Dutz <ch...@rivian.com>
AuthorDate: Mon Oct 31 08:45:18 2022 +0100

    Added the missing descriptions to parameters
---
 .../main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
index efd8560ec9c..4b9aa36dae2 100644
--- a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
@@ -43,13 +43,13 @@ public class Plc4XEndpoint extends DefaultEndpoint {
     @Metadata(required = true, description = "PLC4X connection string for the connection to the target")
     private String driver;
     @UriParam
-    @Metadata(description = "PLC4X field addresses for the tags being read (Format is dependent on the used driver)")
+    @Metadata(description = "The tags to read as Map<String,String> containing the tag name associated to its query")
     private Map<String, Object> tags;
     @UriParam
-    @Metadata(description = "TODO: Add a short description here")
+    @Metadata(description = "(Consumer) Query to a trigger. On a rising edge of the trigger, the tags will be read once")
     private String trigger;
     @UriParam
-    @Metadata(description = "TODO: Add a short description here")
+    @Metadata(description = "(Consumer) Interval on which the Trigger should be checked")
     private int period;
 
     public int getPeriod() {


[camel] 11/15: Camel-Plc4x: Added labels to endpoint configuration where it makes sense

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0d1e5072aa86241d6d74c3e75992091fdde35ff3
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 3 14:10:20 2022 +0100

    Camel-Plc4x: Added labels to endpoint configuration where it makes sense
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
index 4b9aa36dae2..3b5e24e6cc5 100644
--- a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
+++ b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
@@ -46,10 +46,10 @@ public class Plc4XEndpoint extends DefaultEndpoint {
     @Metadata(description = "The tags to read as Map<String,String> containing the tag name associated to its query")
     private Map<String, Object> tags;
     @UriParam
-    @Metadata(description = "(Consumer) Query to a trigger. On a rising edge of the trigger, the tags will be read once")
+    @Metadata(label = "consumer", description = "Query to a trigger. On a rising edge of the trigger, the tags will be read once")
     private String trigger;
     @UriParam
-    @Metadata(description = "(Consumer) Interval on which the Trigger should be checked")
+    @Metadata(label = "consumer", description = "Interval on which the Trigger should be checked")
     private int period;
 
     public int getPeriod() {