You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/08/10 05:08:36 UTC

[plc4x] 01/04: feat(plc4j/spi): add protocolCode/transportCode and transportConfig as injectable parameters

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

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

commit 943e4a1d415321cfbbf7a6a11d9f92ee33c65626
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Aug 9 15:15:45 2023 +0200

    feat(plc4j/spi): add protocolCode/transportCode and transportConfig as injectable parameters
---
 .../org/apache/plc4x/java/eip/base/EIPDriver.java  |  2 +-
 .../plc4x/java/profinet/ProfinetBrowseTests.java   | 17 ++++++------
 .../java/profinet/ProfinetDeviceContextTests.java  | 21 ++++++++------
 .../profinet/gsdml/ProfinetConfigurationTests.java | 32 ++++++++++++----------
 .../java/s7/readwrite/S7HGeneratedDriverBase.java  |  2 +-
 .../spi/configuration/ConfigurationFactory.java    | 32 ++++++++++++++++------
 .../java/spi/connection/GeneratedDriverBase.java   | 29 ++++++++++----------
 .../java/spi/parser/ConnectionParserTest.java      |  8 +++---
 .../plc4x/java/transport/tcp/TcpTransport.java     |  8 +++---
 .../resources/protocols/opcua/DriverTestsuite.xml  |  2 +-
 10 files changed, 87 insertions(+), 66 deletions(-)

diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/EIPDriver.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/EIPDriver.java
index 686f033979..57002d7ead 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/EIPDriver.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/EIPDriver.java
@@ -133,7 +133,7 @@ public class EIPDriver extends GeneratedDriverBase<EipPacket> {
 
         // Create the configuration object.
         this.configuration = (EIPConfiguration) new ConfigurationFactory().createConfiguration(
-            getConfigurationType(), paramString);
+            getConfigurationType(), protocolCode, transportCode, transportConfig, paramString);
         if (configuration == null) {
             throw new PlcConnectionException("Unsupported configuration");
         }
diff --git a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetBrowseTests.java b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetBrowseTests.java
index 28228fe3cb..94bc173806 100644
--- a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetBrowseTests.java
+++ b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetBrowseTests.java
@@ -32,15 +32,14 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class ProfinetBrowseTests {
 
     @Test
-    public void readProfinetBrowseTagsCheckStatus()  {
+    public void readProfinetBrowseTagsCheckStatus() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources/&devices=[[device_name, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, )]]");
+            ProfinetConfiguration.class, "", "", "",
+            "gsddirectory=src/test/resources/&devices=[[device_name, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, )]]" );
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -66,9 +65,10 @@ public class ProfinetBrowseTests {
     }
 
     @Test
-    public void readProfinetBrowseTagsCheckFloat()  {
+    public void readProfinetBrowseTagsCheckFloat() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources/&devices=[[device_name, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, )]]");
+            ProfinetConfiguration.class, "", "", "",
+            "gsddirectory=src/test/resources/&devices=[[device_name, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, )]]");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -96,9 +96,10 @@ public class ProfinetBrowseTests {
     }
 
     @Test
-    public void readProfinetBrowseTagsCheckBoolean()  {
+    public void readProfinetBrowseTagsCheckBoolean() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources/&devices=[[device_name, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, )]]");
+            ProfinetConfiguration.class, "", "", "",
+            "gsddirectory=src/test/resources/&devices=[[device_name, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, )]]");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
diff --git a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetDeviceContextTests.java b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetDeviceContextTests.java
index 4a4791a0df..570ede8fd6 100644
--- a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetDeviceContextTests.java
+++ b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetDeviceContextTests.java
@@ -41,9 +41,10 @@ import static org.junit.jupiter.api.Assertions.assertInstanceOf;
 public class ProfinetDeviceContextTests {
 
     @Test
-    public void readProfinetAllocatedSubModulesLengthCheck()  {
+    public void readProfinetAllocatedSubModulesLengthCheck() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
+            ProfinetConfiguration.class, "", "", "",
+            "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -60,7 +61,7 @@ public class ProfinetDeviceContextTests {
             devices.get(entry.getValue().getDevicename()).setIpAddress(entry.getValue().getIpaddress());
         }
 
-        ProfinetDevice device =devices.get("DEVICE_NAME_1");
+        ProfinetDevice device = devices.get("DEVICE_NAME_1");
         device.setVendorDeviceId("CAFE", "0001");
 
         ProfinetModule[] modules = device.getDeviceContext().getModules();
@@ -69,9 +70,10 @@ public class ProfinetDeviceContextTests {
     }
 
     @Test
-    public void readProfinetAllocatedSubModulesTypeCheck()  {
+    public void readProfinetAllocatedSubModulesTypeCheck() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
+            ProfinetConfiguration.class, "", "", "",
+            "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -102,9 +104,10 @@ public class ProfinetDeviceContextTests {
     }
 
     @Test
-    public void readProfinetAllocatedSubModulesTypeCheckEmptyModule()  {
+    public void readProfinetAllocatedSubModulesTypeCheckEmptyModule() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
+            ProfinetConfiguration.class, "", "", "",
+            "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -135,9 +138,9 @@ public class ProfinetDeviceContextTests {
     }
 
     @Test
-    public void readExpectedSubModuleApiBlocks()  {
+    public void readExpectedSubModuleApiBlocks() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
+            ProfinetConfiguration.class, "", "", "", "gsddirectory=src/test/resources/&devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, , PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
diff --git a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/gsdml/ProfinetConfigurationTests.java b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/gsdml/ProfinetConfigurationTests.java
index 26589e1bb0..4fb9a7b4c2 100644
--- a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/gsdml/ProfinetConfigurationTests.java
+++ b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/gsdml/ProfinetConfigurationTests.java
@@ -48,7 +48,8 @@ public class ProfinetConfigurationTests {
     public void readGsdDirectory()  {
         String directory = "src/test/resources";
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, PLC4X, (PLC4X_1)]]&gsddirectory=" + directory);
+            ProfinetConfiguration.class, "", "", "", 
+            "devices=[[device_name_1, PLC4X, (PLC4X_1)]]&gsddirectory=" + directory);
 
         assertEquals(1, configuration.getGsdFiles().getGsdFiles().size());
     }
@@ -58,7 +59,8 @@ public class ProfinetConfigurationTests {
         String directory = "src/test/resources";
 
         new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, PLC4X, (PLC4X_1)]]&gsddirectory=" + directory);
+            ProfinetConfiguration.class, "", "", "", 
+            "devices=[[device_name_1, PLC4X, (PLC4X_1)]]&gsddirectory=" + directory);
 
         Map<String, ProfinetISO15745Profile> gsdFiles = ProfinetConfiguration.getGsdFiles().getGsdFiles();
         assertEquals(gsdFiles.size(), 1);
@@ -67,7 +69,7 @@ public class ProfinetConfigurationTests {
     @Test
     public void parseJoinedDeviceConfiguration() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "gsddirectory=src/test/resources&devices=[[device_name_1,device_access_1,(submodule_1,submodule_2)]]");
+            ProfinetConfiguration.class, "", "", "", "gsddirectory=src/test/resources&devices=[[device_name_1,device_access_1,(submodule_1,submodule_2)]]");
         assertEquals(1, configuration.getDevices().getConfiguredDevices().size());
     }
 
@@ -79,7 +81,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE_NAME_1"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, device_access_1, (submodule_1, submodule_2)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device_name_1, device_access_1, (submodule_1, submodule_2)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> devices = configuration.getDevices().getConfiguredDevices();
 
@@ -93,7 +95,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE_NAME_1","DEVICE_NAME_2","DEVICE_NAME_3"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, PLC4X_1, (PLC4X_01,PLC4X_02,PLC4X_01,PLC4X_02)],[device_name_2, PLC4X_1, (PLC4X_01,PLC4X_02,PLC4X_01,PLC4X_02)],[device_name_3, PLC4X_1, (PLC4X_01,PLC4X_02,PLC4X_01,PLC4X_02)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device_name_1, PLC4X_1, (PLC4X_01,PLC4X_02,PLC4X_01,PLC4X_02)],[device_name_2, PLC4X_1, (PLC4X_01,PLC4X_02,PLC4X_01,PLC4X_02)],[device_name_3, PLC4X_1, (PLC4X_01,PLC4X_02,PLC4X_01,PLC4X_02)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> devices = configuration.getDevices().getConfiguredDevices();
 
@@ -106,7 +108,7 @@ public class ProfinetConfigurationTests {
     public void readProfinetLowerCase() {
         String[] deviceName = new String[] {"device_Name_1"};
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, device_access_1, (submodule_1, submodule_2)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device_name_1, device_access_1, (submodule_1, submodule_2)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> devices = configuration.getDevices().getConfiguredDevices();
 
@@ -118,7 +120,7 @@ public class ProfinetConfigurationTests {
     @Test
     public void setIncorrectSubModule() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, PLC4X_1, (PLC4X_01, PLC4X_02, PLC4X_01, PLC4X_02)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device_name_1, PLC4X_1, (PLC4X_01, PLC4X_02, PLC4X_01, PLC4X_02)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -143,7 +145,7 @@ public class ProfinetConfigurationTests {
     @Test
     public void setCorrectSubModule() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -167,7 +169,7 @@ public class ProfinetConfigurationTests {
     @Test
     public void setCorrectSubModuleCaseInsensitive() {
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_dummy_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device_name_1, PLC4X_1, (PLC4X_DUMMY_MODULE, PLC4X_dummy_MODULE, PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -193,7 +195,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE_NAME_1"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device_name_1, PLC4X 1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device_name_1, PLC4X 1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -221,7 +223,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE NAME 1"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device name 1, PLC4X 1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device name 1, PLC4X 1, (PLC4X_DUMMY_MODULE, PLC4X_DUMMY_MODULE)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -248,7 +250,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE NAME 1"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -277,7 +279,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE NAME 1"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE,,1)]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE,,1)]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -309,7 +311,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE NAME 1"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE,,1), 10.1.1.1]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE,,1), 10.1.1.1]]&gsddirectory=src/test/resources");
 
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
         Map<String, ProfinetDevice> devices = new HashMap<>();
@@ -334,7 +336,7 @@ public class ProfinetConfigurationTests {
         String[] deviceNames = new String[] {"DEVICE NAME 1"};
 
         ProfinetConfiguration configuration = new ConfigurationFactory().createConfiguration(
-            ProfinetConfiguration.class, "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE,,1), 10.1.1.1]]&gsddirectory=src/test/resources");
+            ProfinetConfiguration.class, "", "", "", "devices=[[device name 1, PLC4X 1, (PLC4X DUMMY MODULE, PLC4X DUMMY MODULE,,1), 10.1.1.1]]&gsddirectory=src/test/resources");
 
         NetworkInterface networkInterface = new DummyNetworkInterface("10.1.1.2", "255.255.255.0", "0.0.0.0");
         Map<String, ConfigurationProfinetDevice> configuredDevices = configuration.getDevices().getConfiguredDevices();
diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/S7HGeneratedDriverBase.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/S7HGeneratedDriverBase.java
index 954bd94aad..20c1485719 100644
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/S7HGeneratedDriverBase.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/S7HGeneratedDriverBase.java
@@ -80,7 +80,7 @@ public class S7HGeneratedDriverBase extends GeneratedDriverBase<TPKTPacket> {
 
         // Create the configuration object.
         Configuration configuration = new ConfigurationFactory().createConfiguration(
-            getConfigurationType(), paramString);
+            getConfigurationType(), protocolCode, transportCode, transportConfig, paramString);
         if (configuration == null) {
             throw new PlcConnectionException("Unsupported configuration");
         }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java
index b2b16662e1..b0558ece38 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java
@@ -22,12 +22,13 @@ import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
-import org.apache.plc4x.java.spi.configuration.annotations.*;
+import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
+import org.apache.plc4x.java.spi.configuration.annotations.ParameterConverter;
+import org.apache.plc4x.java.spi.configuration.annotations.Required;
 import org.apache.plc4x.java.spi.configuration.annotations.defaults.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.ParameterizedType;
@@ -52,8 +53,8 @@ public class ConfigurationFactory {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationFactory.class);
 
-    // TODO Respect Path Params
-    public <T extends Configuration> T createConfiguration(Class<T> pClazz, String configurationString) {
+    public <T extends Configuration> T createConfiguration(Class<T> pClazz, String protocolCode, String transportCode,
+                                                           String transportConfig, String paramString) {
         // Get a map of all configuration parameter fields.
         // - Get a list of all fields in the given class.
         Map<String, Field> fields = Arrays.stream(FieldUtils.getAllFields(pClazz))
@@ -76,14 +77,28 @@ public class ConfigurationFactory {
         try {
             instance = pClazz.getDeclaredConstructor().newInstance();
         } catch (InvocationTargetException | InstantiationException |
-            IllegalAccessException | NoSuchMethodException e) {
+                 IllegalAccessException | NoSuchMethodException e) {
             throw new IllegalArgumentException("Unable to Instantiate Configuration Class", e);
         }
 
         // Process the parameters passed in with the connection string.
         try {
             // Get a map of all parameters in the connection string.
-            Map<String, List<String>> paramStringValues = splitQuery(configurationString);
+            Map<String, List<String>> paramStringValues = splitQuery(paramString);
+            paramStringValues = new HashMap<>(paramStringValues);
+            List<String> previousValue;
+            previousValue = paramStringValues.put("protocolCode", List.of(protocolCode));
+            if (previousValue != null) {
+                LOGGER.warn("protocolCode with value {} overridden by", protocolCode);
+            }
+            previousValue = paramStringValues.put("transportCode", List.of(transportCode));
+            if (previousValue != null) {
+                LOGGER.warn("transportCode with value {} overridden by", transportCode);
+            }
+            previousValue = paramStringValues.put("transportConfig", List.of(transportConfig));
+            if (previousValue != null) {
+                LOGGER.warn("transportConfig with value {} overridden by", transportConfig);
+            }
 
             // Iterate over all fields and set the values to either the values specified
             // in the param string or to defaults configured by annotations.
@@ -135,7 +150,7 @@ public class ConfigurationFactory {
                     if (configClass.isAssignableFrom(configuration.getClass())) {
                         try {
                             ((HasConfiguration) obj).setConfiguration(configuration);
-                        } catch(Throwable t) {
+                        } catch (Throwable t) {
                             LOGGER.error("Error setting the configuration", t);
                             throw new PlcRuntimeException("Error setting the configuration", t);
                         }
@@ -182,7 +197,8 @@ public class ConfigurationFactory {
                 if (converter.getType().isAssignableFrom(field.getType())) {
                     return converter.convert(valueString);
                 }
-            } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
+            } catch (InstantiationException | IllegalAccessException | InvocationTargetException |
+                     NoSuchMethodException e) {
                 throw new IllegalArgumentException("Could not initialize parameter converter", e);
             }
             throw new IllegalArgumentException("Unsupported field type " + field.getType() + " for converter " + converterClass);
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/GeneratedDriverBase.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/GeneratedDriverBase.java
index 63244c5a91..6159ce230a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/GeneratedDriverBase.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/GeneratedDriverBase.java
@@ -18,23 +18,23 @@
  */
 package org.apache.plc4x.java.spi.connection;
 
-import static org.apache.plc4x.java.spi.configuration.ConfigurationFactory.*;
-
 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.value.PlcValueHandler;
 import org.apache.plc4x.java.spi.configuration.Configuration;
-import org.apache.plc4x.java.spi.generation.Message;
 import org.apache.plc4x.java.spi.configuration.ConfigurationFactory;
+import org.apache.plc4x.java.spi.generation.Message;
 import org.apache.plc4x.java.spi.optimizer.BaseOptimizer;
 import org.apache.plc4x.java.spi.transport.Transport;
-import org.apache.plc4x.java.api.value.PlcValueHandler;
 
 import java.util.ServiceLoader;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import static org.apache.plc4x.java.spi.configuration.ConfigurationFactory.configure;
+
 public abstract class GeneratedDriverBase<BASE_PACKET extends Message> implements PlcDriver {
 
     public static final String PROPERTY_PLC4X_FORCE_FIRE_DISCOVER_EVENT = "PLC4X_FORCE_FIRE_DISCOVER_EVENT";
@@ -110,11 +110,11 @@ public abstract class GeneratedDriverBase<BASE_PACKET extends Message> implement
         Matcher matcher = URI_PATTERN.matcher(connectionString);
         if (!matcher.matches()) {
             throw new PlcConnectionException(
-                "Connection string doesn't match the format '{protocol-code}:({transport-code})?//{transport-address}(?{parameter-string)?'");
+                "Connection string doesn't match the format '{protocol-code}:({transport-code})?//{transport-config}(?{parameter-string)?'");
         }
         final String protocolCode = matcher.group("protocolCode");
-        final String transportCode = (matcher.group("transportCode") != null) ?
-            matcher.group("transportCode") : getDefaultTransport();
+        String transportCodeMatch = matcher.group("transportCode");
+        final String transportCode = (transportCodeMatch != null) ? transportCodeMatch : getDefaultTransport();
         final String transportConfig = matcher.group("transportConfig");
         final String paramString = matcher.group("paramString");
 
@@ -126,8 +126,8 @@ public abstract class GeneratedDriverBase<BASE_PACKET extends Message> implement
         }
 
         // Create the configuration object.
-        Configuration configuration = new ConfigurationFactory().createConfiguration(
-            getConfigurationType(), paramString);
+        Configuration configuration = new ConfigurationFactory()
+            .createConfiguration(getConfigurationType(), protocolCode, transportCode, transportConfig, paramString);
         if (configuration == null) {
             throw new PlcConnectionException("Unsupported configuration");
         }
@@ -151,7 +151,7 @@ public abstract class GeneratedDriverBase<BASE_PACKET extends Message> implement
 
         // Create an instance of the communication channel which the driver should use.
         ChannelFactory channelFactory = transport.createChannelFactory(transportConfig);
-        if(channelFactory == null) {
+        if (channelFactory == null) {
             throw new PlcConnectionException("Unable to get channel factory from url " + transportConfig);
         }
         configure(configuration, channelFactory);
@@ -161,25 +161,25 @@ public abstract class GeneratedDriverBase<BASE_PACKET extends Message> implement
 
         // Make the "fire discover event" overridable via system property.
         boolean fireDiscoverEvent = fireDiscoverEvent();
-        if(System.getProperty(PROPERTY_PLC4X_FORCE_FIRE_DISCOVER_EVENT) != null) {
+        if (System.getProperty(PROPERTY_PLC4X_FORCE_FIRE_DISCOVER_EVENT) != null) {
             fireDiscoverEvent = Boolean.parseBoolean(System.getProperty(PROPERTY_PLC4X_FORCE_FIRE_DISCOVER_EVENT));
         }
 
         // Make the "await setup complete" overridable via system property.
         boolean awaitSetupComplete = awaitSetupComplete();
-        if(System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_SETUP_COMPLETE) != null) {
+        if (System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_SETUP_COMPLETE) != null) {
             awaitSetupComplete = Boolean.parseBoolean(System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_SETUP_COMPLETE));
         }
 
         // Make the "await disconnect complete" overridable via system property.
         boolean awaitDisconnectComplete = awaitDisconnectComplete();
-        if(System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_DISCONNECT_COMPLETE) != null) {
+        if (System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_DISCONNECT_COMPLETE) != null) {
             awaitDisconnectComplete = Boolean.parseBoolean(System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_DISCONNECT_COMPLETE));
         }
 
         // Make the "await disconnect complete" overridable via system property.
         boolean awaitDiscoverComplete = awaitDiscoverComplete();
-        if(System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_DISCOVER_COMPLETE) != null) {
+        if (System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_DISCOVER_COMPLETE) != null) {
             awaitDiscoverComplete = Boolean.parseBoolean(System.getProperty(PROPERTY_PLC4X_FORCE_AWAIT_DISCOVER_COMPLETE));
         }
 
@@ -198,5 +198,4 @@ public abstract class GeneratedDriverBase<BASE_PACKET extends Message> implement
             authentication);
     }
 
-
 }
diff --git a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/parser/ConnectionParserTest.java b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/parser/ConnectionParserTest.java
index 64c34644b8..0349273488 100644
--- a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/parser/ConnectionParserTest.java
+++ b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/parser/ConnectionParserTest.java
@@ -18,22 +18,22 @@
  */
 package org.apache.plc4x.java.spi.parser;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.spi.configuration.Configuration;
 import org.apache.plc4x.java.spi.configuration.ConfigurationFactory;
 import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
-import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
 import org.apache.plc4x.java.spi.configuration.annotations.Required;
+import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
 import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 class ConnectionParserTest {
 
     @Test
     void parse() throws PlcConnectionException {
         PropertiesDescriptor properties = new ConfigurationFactory().createConfiguration(
-            PropertiesDescriptor.class, "rackId=2");
+            PropertiesDescriptor.class, "", "", "", "rackId=2");
 
         assertEquals(2, properties.getRackId());
         assertEquals(1, properties.getSlotId());
diff --git a/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransport.java b/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransport.java
index a83f86e6d2..47e28d4703 100644
--- a/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransport.java
+++ b/plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransport.java
@@ -31,7 +31,7 @@ import java.util.regex.Pattern;
 public class TcpTransport implements Transport, HasConfiguration<TcpTransportConfiguration> {
 
     private static final Pattern TRANSPORT_TCP_PATTERN = Pattern.compile(
-        "^((?<ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})|(?<hostname>[a-zA-Z0-9.\\-]+))(:(?<port>[0-9]{1,5}))?");
+        "^((?<ip>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})|(?<hostname>[a-zA-Z0-9.\\-]+))(:(?<port>[0-9]{1,5}))?.*");
 
     private TcpTransportConfiguration configuration;
 
@@ -53,8 +53,8 @@ public class TcpTransport implements Transport, HasConfiguration<TcpTransportCon
     @Override
     public ChannelFactory createChannelFactory(String transportConfig) {
         final Matcher matcher = TRANSPORT_TCP_PATTERN.matcher(transportConfig);
-        if(!matcher.matches()) {
-            throw new PlcRuntimeException("Invalid url for TCP transport");
+        if (!matcher.matches()) {
+            throw new PlcRuntimeException("Invalid url for TCP transport: " + transportConfig);
         }
         String ip = matcher.group("ip");
         String hostname = matcher.group("hostname");
@@ -62,7 +62,7 @@ public class TcpTransport implements Transport, HasConfiguration<TcpTransportCon
 
         // If the port wasn't specified, try to get a default port from the configuration.
         int port;
-        if(portString != null) {
+        if (portString != null) {
             port = Integer.parseInt(portString);
         } else if ((configuration != null) &&
             (configuration.getDefaultPort() != TcpTransportConfiguration.NO_DEFAULT_PORT)) {
diff --git a/protocols/opcua/src/test/resources/protocols/opcua/DriverTestsuite.xml b/protocols/opcua/src/test/resources/protocols/opcua/DriverTestsuite.xml
index c2ad6fd086..3bf83d1eb9 100644
--- a/protocols/opcua/src/test/resources/protocols/opcua/DriverTestsuite.xml
+++ b/protocols/opcua/src/test/resources/protocols/opcua/DriverTestsuite.xml
@@ -48,7 +48,7 @@
             <endpoint>
               <PascalString>
                 <sLength dataType="int" bitLength="32">15</sLength>
-                <stringValue dataType="string" bitLength="120" encoding="UTF-8">opc.test://hurz</stringValue>
+                <stringValue dataType="string" bitLength="120" encoding="UTF-8">opc.test://test</stringValue>
               </PascalString>
             </endpoint>
           </OpcuaHelloRequest>