You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/10/27 13:56:41 UTC

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

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

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

commit ace16b68628a7967ba3450aacf46d8df722b9f3f
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 d7c9cbd5696..1726dd2a5b0 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 fad0d52db30..cd56961224f 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>