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 2021/09/02 13:22:46 UTC

[plc4x] branch develop updated: changed delimiter of opc ua from : to ; (#258)

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 69376b3  changed delimiter of opc ua from : to ; (#258)
69376b3 is described below

commit 69376b3601dfc11d194b4acb6bf2ca4c18f4bdc6
Author: Matthias Milan Strljic <na...@users.noreply.github.com>
AuthorDate: Thu Sep 2 15:22:41 2021 +0200

    changed delimiter of opc ua from : to ; (#258)
    
    Co-authored-by: cdutz <ch...@c-ware.de>
---
 .../apache/plc4x/java/opcua/field/OpcuaField.java    |  2 +-
 .../apache/plc4x/java/opcua/OpcuaPlcDriverTest.java  | 20 ++++++++++----------
 .../plc4x/java/opcua/protocol/OpcuaFieldTest.java    | 18 ++++++++++--------
 .../plc4x/java/opcuaserver/OpcuaPlcDriverTest.java   | 14 +++++++-------
 src/site/asciidoc/users/protocols/opc-ua.adoc        |  8 ++++----
 5 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java
index 2ac4177..8dd6df9 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java
@@ -37,7 +37,7 @@ import java.util.regex.Pattern;
  */
 public class OpcuaField implements PlcSubscriptionField {
 
-    public static final Pattern ADDRESS_PATTERN = Pattern.compile("^ns=(?<namespace>\\d+);(?<identifierType>[isgb])=((?<identifier>[^:]+))?(:(?<datatype>[a-zA-Z_]+))?");
+    public static final Pattern ADDRESS_PATTERN = Pattern.compile("^ns=(?<namespace>\\d+);(?<identifierType>[isgb])=((?<identifier>[^;]+))?(;(?<datatype>[a-zA-Z_]+))?");
 
     private final OpcuaIdentifierType identifierType;
 
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
index fa240f5..e5c3bbe 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
@@ -255,23 +255,23 @@ public class OpcuaPlcDriverTest {
 
         PlcWriteRequest.Builder builder = opcuaConnection.writeRequestBuilder();
         builder.addItem("Bool", BOOL_IDENTIFIER_READ_WRITE, true);
-        builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ":BYTE", (short) 3);
+        builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ";BYTE", (short) 3);
         builder.addItem("Double", DOUBLE_IDENTIFIER_READ_WRITE, 0.5d);
         builder.addItem("Float", FLOAT_IDENTIFIER_READ_WRITE, 0.5f);
         //builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE + "", (short) 1);
         builder.addItem("Int32", INT32_IDENTIFIER_READ_WRITE, 42);
         builder.addItem("Int64", INT64_IDENTIFIER_READ_WRITE, 42L);
         builder.addItem("Integer", INTEGER_IDENTIFIER_READ_WRITE, 42);
-        builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ":SINT", -127);
+        builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ";SINT", -127);
         builder.addItem("String", STRING_IDENTIFIER_READ_WRITE, "Helllo Toddy!");
-        builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ":UINT", 65535);
-        builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ":UDINT", 101010101L);
-        builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ":ULINT", new BigInteger("1337"));
-        builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ":UDINT", 102020202L);
+        builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ";UINT", 65535);
+        builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ";UDINT", 101010101L);
+        builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ";ULINT", new BigInteger("1337"));
+        builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ";UDINT", 102020202L);
 
 
         builder.addItem("BooleanArray", BOOL_ARRAY_IDENTIFIER, new Boolean[] {true, true, true, true, true});
-        builder.addItem("ByteArray", BYTE_ARRAY_IDENTIFIER + ":BYTE", new Short[] {1, 100, 100, 255, 123});
+        builder.addItem("ByteArray", BYTE_ARRAY_IDENTIFIER + ";BYTE", new Short[] {1, 100, 100, 255, 123});
         builder.addItem("DoubleArray", DOUBLE_ARRAY_IDENTIFIER, new Double[] {1.0,2.0,3.0,4.0,5.0});
         builder.addItem("FloatArray", FLOAT_ARRAY_IDENTIFIER, new Float[] {1.0F,2.0F,3.0F,4.0F,5.0F});
         builder.addItem("Int16Array", INT16_ARRAY_IDENTIFIER, new Short[] {1,2,3,4,5});
@@ -280,9 +280,9 @@ public class OpcuaPlcDriverTest {
         builder.addItem("IntegerArray", INT32_ARRAY_IDENTIFIER, new Integer[] {1,2,3,4,5});
         builder.addItem("SByteArray", SBYTE_ARRAY_IDENTIFIER, new Byte[] {1,2,3,4,5});
         builder.addItem("StringArray", STRING_ARRAY_IDENTIFIER, new String[] {"1","2","3","4","5"});
-        builder.addItem("UInt16Array", UINT16_ARRAY_IDENTIFIER + ":UINT", new Short[] {1,2,3,4,5});
-        builder.addItem("UInt32Array", UINT32_ARRAY_IDENTIFIER + ":UDINT", new Integer[] {1,2,3,4,5});
-        builder.addItem("UInt64Array", UINT64_ARRAY_IDENTIFIER + ":ULINT", new Long[] {1L,2L,3L,4L,5L});
+        builder.addItem("UInt16Array", UINT16_ARRAY_IDENTIFIER + ";UINT", new Short[] {1,2,3,4,5});
+        builder.addItem("UInt32Array", UINT32_ARRAY_IDENTIFIER + ";UDINT", new Integer[] {1,2,3,4,5});
+        builder.addItem("UInt64Array", UINT64_ARRAY_IDENTIFIER + ";ULINT", new Long[] {1L,2L,3L,4L,5L});
 
         builder.addItem("DoesNotExists", DOES_NOT_EXIST_IDENTIFIER_READ_WRITE, "11");
 
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java
index 5fd927a..9fe3e22 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java
@@ -46,9 +46,11 @@ public class OpcuaFieldTest {
         assertMatching(ADDRESS_PATTERN, "ns=2;i=10846");
         //string based address values
         assertMatching(ADDRESS_PATTERN, "ns=2;s=test.variable.name.inspect");
+        assertMatching(ADDRESS_PATTERN, "ns=2;s=::AsGlobalPV:ProductionOrder");
+        assertMatching(ADDRESS_PATTERN, "ns=2;s=::AsGlobalPV:ProductionOrder;BOOL");
         assertMatching(ADDRESS_PATTERN, "ns=2;s=key param with some spaces");
         assertMatching(ADDRESS_PATTERN, "ns=2;s=\"aweired\".\"siemens\".\"param\".\"submodule\".\"param");
-        assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-.,,");
+        assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-:.,,");
         // GUID address tests
         assertMatching(ADDRESS_PATTERN, "ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a");
         // binary encoded addresses
@@ -60,17 +62,17 @@ public class OpcuaFieldTest {
     public void testOpcuaAddressDataTypePattern() {
 
         //standard integer based param
-        assertMatching(ADDRESS_PATTERN, "ns=2;i=10846:BOOL");
+        assertMatching(ADDRESS_PATTERN, "ns=2;i=10846;BOOL");
         //string based address values
-        assertMatching(ADDRESS_PATTERN, "ns=2;s=test.variable.name.inspect:DINT");
-        assertMatching(ADDRESS_PATTERN, "ns=2;s=key param with some spaces:ULINT");
-        assertMatching(ADDRESS_PATTERN, "ns=2;s=\"aweired\".\"siemens\".\"param\".\"submodule\".\"param:LREAL");
+        assertMatching(ADDRESS_PATTERN, "ns=2;s=test.variable.name.inspect;DINT");
+        assertMatching(ADDRESS_PATTERN, "ns=2;s=key param with some spaces;ULINT");
+        assertMatching(ADDRESS_PATTERN, "ns=2;s=\"aweired\".\"siemens\".\"param\".\"submodule\".\"param;LREAL");
         //REGEX Valid, additional checks need to be done later
-        assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-.,,:JIBBERISH");
+        assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-.,,;JIBBERISH");
         // GUID address tests
-        assertNoMatching(ADDRESS_PATTERN, "ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a:*&#%^*$(*)");
+        assertNoMatching(ADDRESS_PATTERN, "ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;*&#%^*$(*)");
         // binary encoded addresses
-        assertNoMatching(ADDRESS_PATTERN, "ns=2;b=asvae:wavarahreb==");
+        assertNoMatching(ADDRESS_PATTERN, "ns=2;b=asvae;wavarahreb==");
 
     }
 }
diff --git a/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java b/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
index 91465d9..d5015db 100644
--- a/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
+++ b/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
@@ -203,19 +203,19 @@ public class OpcuaPlcDriverTest {
 
             PlcWriteRequest.Builder builder = opcuaConnection.writeRequestBuilder();
             builder.addItem("Bool", BOOL_IDENTIFIER_READ_WRITE, true);
-            builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ":BYTE", 255);
+            builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ";BYTE", 255);
             builder.addItem("Double", DOUBLE_IDENTIFIER_READ_WRITE, 0.5d);
             builder.addItem("Float", FLOAT_IDENTIFIER_READ_WRITE, 0.5f);
-            builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE + ":INT", 32000);
+            builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE + ";INT", 32000);
             builder.addItem("Int32", INT32_IDENTIFIER_READ_WRITE, 42);
             builder.addItem("Int64", INT64_IDENTIFIER_READ_WRITE, 42L);
             builder.addItem("Integer", INTEGER_IDENTIFIER_READ_WRITE, 42);
-            builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ":USINT", 100);
+            builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ";USINT", 100);
             builder.addItem("String", STRING_IDENTIFIER_READ_WRITE, "Helllo Toddy!");
-            builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ":UINT", 65535);
-            builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ":UDINT", 100);
-            builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ":ULINT", new BigInteger("1337"));
-            builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ":UDINT", 100);
+            builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ";UINT", 65535);
+            builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ";UDINT", 100);
+            builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ";ULINT", new BigInteger("1337"));
+            builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ";UDINT", 100);
 
             builder.addItem("DoesNotExists", DOES_NOT_EXIST_IDENTIFIER_READ_WRITE, "Sad Toddy");
 
diff --git a/src/site/asciidoc/users/protocols/opc-ua.adoc b/src/site/asciidoc/users/protocols/opc-ua.adoc
index 01c66bf..a073dae 100644
--- a/src/site/asciidoc/users/protocols/opc-ua.adoc
+++ b/src/site/asciidoc/users/protocols/opc-ua.adoc
@@ -99,7 +99,7 @@ is selected based on the datatype of the returned value. For Unsigned data types
 
 ----
 
-ns={namespace-index};[s|i|g|b]={Identifier}:{Data Type}
+ns={namespace-index};[s|i|g|b]={Identifier};{Data Type}
 
 ----
 
@@ -135,17 +135,17 @@ The following are examples of valid addresses
 String address:
 ----
 ns=2;s=HelloWorld/ScalarTypes/Boolean
-ns=2;s=HelloWorld/ScalarTypes/Boolean:BOOL
+ns=2;s=HelloWorld/ScalarTypes/Boolean;BOOL
 ----
 Numeric address
 ----
 ns=1;i=1337
-ns=1;i=1337:DINT
+ns=1;i=1337;DINT
 ----
 GUID address:
 ----
 ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a
-ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a:REAL
+ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;REAL
 ----
 
 Note the Identifiers `s`,`i`,`b` and `g` specify the format of the address not the data type of the returned value.