You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2018/03/11 10:53:52 UTC

[incubator-plc4x] 02/02: - Adjusted the uri pattern for the ADS driver

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

cdutz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit d55b7eccef6773eb94e6e0309237ec870c0544c4
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Mar 11 11:53:47 2018 +0100

    - Adjusted the uri pattern for the ADS driver
---
 .../org/apache/plc4x/java/ads/AdsPlcDriver.java    |  9 ++--
 .../apache/plc4x/java/ads/AdsPlcDriverTest.java    | 48 +++++++++++-----------
 2 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java
index 36284f3..28af628 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java
@@ -45,9 +45,9 @@ public class AdsPlcDriver implements PlcDriver {
             + "(/"
             + "(?<sourceAmsNetId>" + AmsNetId.AMS_NET_ID_PATTERN + "):(?<sourceAmsPort>" + AmsPort.AMS_PORT_PATTERN + ")"
             + ")?");
-    public static final Pattern INET_ADDRESS_PATTERN = Pattern.compile("(?<host>tcp:[\\w.]+)(:(?<port>\\d*))?");
-    public static final Pattern SERIAL_PATTERN = Pattern.compile("(?<serialDefinition>serial:.*)");
-    public static final Pattern ADS_URI_PATTERN = Pattern.compile("^ads:/?/?(" + INET_ADDRESS_PATTERN + "|" + SERIAL_PATTERN + ")/" + ADS_ADDRESS_PATTERN);
+    public static final Pattern INET_ADDRESS_PATTERN = Pattern.compile("tcp://(?<host>[\\w.]+)(:(?<port>\\d*))?");
+    public static final Pattern SERIAL_PATTERN = Pattern.compile("serial://(?<serialDefinition>.*)");
+    public static final Pattern ADS_URI_PATTERN = Pattern.compile("^ads:(" + INET_ADDRESS_PATTERN + "|" + SERIAL_PATTERN + ")/" + ADS_ADDRESS_PATTERN);
 
     private AdsConnectionFactory adsConnectionFactory;
 
@@ -88,8 +88,7 @@ public class AdsPlcDriver implements PlcDriver {
         AmsPort sourceAmsPort = StringUtils.isNotBlank(sourceAmsPortString) ? AmsPort.of(sourceAmsPortString) : null;
 
         if (serialDefinition != null) {
-            String serialPort = serialDefinition.substring(serialDefinition.indexOf(':'));
-            return adsConnectionFactory.adsSerialPlcConnectionOf(serialPort, targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort);
+            return adsConnectionFactory.adsSerialPlcConnectionOf(serialDefinition, targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort);
         } else {
             try {
                 return adsConnectionFactory.adsTcpPlcConnectionOf(InetAddress.getByName(host), port, targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort);
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/AdsPlcDriverTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/AdsPlcDriverTest.java
index d873f6a..e1eb30d 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/AdsPlcDriverTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/AdsPlcDriverTest.java
@@ -48,31 +48,31 @@ public class AdsPlcDriverTest {
         assertMatching(ADS_ADDRESS_PATTERN, "0.0.0.0.0.0:13");
         assertMatching(ADS_ADDRESS_PATTERN, "0.0.0.0.0.0:13/0.0.0.0.0.0:13");
 
-        assertMatching(INET_ADDRESS_PATTERN, "localhost");
-        assertMatching(INET_ADDRESS_PATTERN, "localhost:3131");
-        assertMatching(INET_ADDRESS_PATTERN, "www.google.de");
-        assertMatching(INET_ADDRESS_PATTERN, "www.google.de:443");
-
-        assertMatching(SERIAL_PATTERN, "serial:/dev/com1");
-        assertMatching(SERIAL_PATTERN, "serial:COM1");
-        assertMatching(SERIAL_PATTERN, "serial:/dev/ttyUSB0");
-
-        assertMatching(ADS_URI_PATTERN, "ads://www.google.de/0.0.0.0.0.0:13");
-        assertMatching(ADS_URI_PATTERN, "ads://www.google.de:443/0.0.0.0.0.0:13");
-        assertMatching(ADS_URI_PATTERN, "ads://serial:/dev/com1/0.0.0.0.0.0:13");
-        assertMatching(ADS_URI_PATTERN, "ads://serial:COM1/0.0.0.0.0.0:13");
-        assertMatching(ADS_URI_PATTERN, "ads://serial:/dev/ttyUSB0/0.0.0.0.0.0:13");
+        assertMatching(INET_ADDRESS_PATTERN, "tcp://localhost");
+        assertMatching(INET_ADDRESS_PATTERN, "tcp://localhost:3131");
+        assertMatching(INET_ADDRESS_PATTERN, "tcp://www.google.de");
+        assertMatching(INET_ADDRESS_PATTERN, "tcp://www.google.de:443");
+
+        assertMatching(SERIAL_PATTERN, "serial:///dev/com1");
+        assertMatching(SERIAL_PATTERN, "serial://COM1");
+        assertMatching(SERIAL_PATTERN, "serial:///dev/ttyUSB0");
+
+        assertMatching(ADS_URI_PATTERN, "ads:tcp://www.google.de/0.0.0.0.0.0:13");
+        assertMatching(ADS_URI_PATTERN, "ads:tcp://www.google.de:443/0.0.0.0.0.0:13");
+        assertMatching(ADS_URI_PATTERN, "ads:serial:///dev/com1/0.0.0.0.0.0:13");
+        assertMatching(ADS_URI_PATTERN, "ads:serial://COM1/0.0.0.0.0.0:13");
+        assertMatching(ADS_URI_PATTERN, "ads:serial:///dev/ttyUSB0/0.0.0.0.0.0:13");
     }
 
     @Test
     public void testDriverWithCompleteUrls() throws Exception {
         AdsPlcDriver SUT = new AdsPlcDriver(mock(AdsConnectionFactory.class));
         Stream.of(
-            "ads://www.google.de/0.0.0.0.0.0:13",
-            "ads://www.google.de:443/0.0.0.0.0.0:13",
-            "ads://serial:/dev/com1/0.0.0.0.0.0:13",
-            "ads://serial:COM1/0.0.0.0.0.0:13",
-            "ads://serial:/dev/ttyUSB0/0.0.0.0.0.0:13"
+            "ads:tcp://www.google.de/0.0.0.0.0.0:13",
+            "ads:tcp://www.google.de:443/0.0.0.0.0.0:13",
+            "ads:serial:///dev/com1/0.0.0.0.0.0:13",
+            "ads:serial://COM1/0.0.0.0.0.0:13",
+            "ads:serial:///dev/ttyUSB0/0.0.0.0.0.0:13"
         ).forEach(url -> {
             try {
                 SUT.connect(url);
@@ -91,7 +91,7 @@ public class AdsPlcDriverTest {
     @Test
     public void getConnection() throws Exception {
         AdsTcpPlcConnection adsConnection = (AdsTcpPlcConnection)
-            new PlcDriverManager().getConnection("ads://localhost:" + tcpHexDumper.getPort() + "/0.0.0.0.0.0:13");
+            new PlcDriverManager().getConnection("ads:tcp://localhost:" + tcpHexDumper.getPort() + "/0.0.0.0.0.0:13");
         assertEquals(adsConnection.getTargetAmsNetId().toString(), "0.0.0.0.0.0");
         assertEquals(adsConnection.getTargetAmsPort().toString(), "13");
         adsConnection.close();
@@ -99,18 +99,18 @@ public class AdsPlcDriverTest {
 
     @Test(expected = PlcConnectionException.class)
     public void getConnectionNoAuthSupported() throws Exception {
-        new PlcDriverManager().getConnection("ads://localhost:" + tcpHexDumper.getPort() + "/0.0.0.0.0.0:13",
+        new PlcDriverManager().getConnection("ads:tcp://localhost:" + tcpHexDumper.getPort() + "/0.0.0.0.0.0:13",
             new PlcUsernamePasswordAuthentication("admin", "admin"));
     }
 
     @Test(expected = PlcConnectionException.class)
     public void getConnectionUnknownHost() throws Exception {
-        new PlcDriverManager().getConnection("ads://nowhere:8080/0.0.0.0.0.0:13");
+        new PlcDriverManager().getConnection("ads:tcp://nowhere:8080/0.0.0.0.0.0:13");
     }
 
     @Test(expected = PlcConnectionException.class)
     public void getConnectionUnknownPort() throws Exception {
-        new PlcDriverManager().getConnection("ads://nowhere:unknown/0.0.0.0.0.0:13");
+        new PlcDriverManager().getConnection("ads:tcp://nowhere:unknown/0.0.0.0.0.0:13");
     }
 
     /**
@@ -120,7 +120,7 @@ public class AdsPlcDriverTest {
      */
     @Test(expected = PlcConnectionException.class)
     public void getConnectionInvalidUrl() throws PlcException {
-        new PlcDriverManager().getConnection("ads://localhost/hurz/2");
+        new PlcDriverManager().getConnection("ads:tcp://localhost/hurz/2");
     }
 
     @Test

-- 
To stop receiving notification emails like this one, please contact
cdutz@apache.org.