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

hutcheb pushed a commit to branch feature/native_opua_client
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 095d46308777fe8b9f19a00fedc4421a7c245397
Author: hutcheb <[email protected]>
AuthorDate: Thu Apr 15 20:07:27 2021 -0400

    Minor changesto mspec
---
 .../templates/java/pojo-template.java.ftlh         |  2 --
 .../src/main/resources/protocols/test/test.mspec   | 27 ++++++++++++++++------
 protocols/opcua/src/main/xslt/opc-types.xsl        | 24 ++++++++++---------
 3 files changed, 33 insertions(+), 20 deletions(-)

diff --git 
a/build-utils/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
 
b/build-utils/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
index 6e0aff3..eef6523 100644
--- 
a/build-utils/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
+++ 
b/build-utils/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
@@ -164,11 +164,9 @@ public<#if helper.isDiscriminatedParentTypeDefinition()> 
abstract</#if> class ${
 </#list>
 
 <#list type.virtualFields as field>
-    <#if helper.isNonDiscriminatorField(field.name)>
     public ${helper.getLanguageTypeNameForField(field)}<#if 
field.loopType??>[]</#if> get${field.name?cap_first}() {
         return (${helper.getLanguageTypeNameForField(field)}) 
(${helper.toParseExpression(field, field.valueExpression, 
type.parserArguments)});
     }
-    </#if>
 
 </#list>
     @Override
diff --git 
a/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec 
b/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec
index c2f5559..5d1b7dc 100644
--- a/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec
+++ b/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec
@@ -32,7 +32,8 @@
 
 [type 'FieldTypeTest'
     [simple         uint 8 'simpleField']
-    [abstract       unit 8  'abstractField']
+    //Abstract fields can only be used within discriminated base types. This 
is by design.
+    //[abstract       unit 8  'abstractField']
     [array          uint 8  'arrayField'        count      '5']
     //TODO: Checksums fields are not supported in C
     //[checksum       uint 8  'checksumField'     '100']
@@ -78,12 +79,24 @@
 ]
 
 [type 'AbstractTypeTest'
-    [abstract bit 'bitField']
-    [abstract int 8 'intField']
-    [abstract uint 8 'uintField']
-    [abstract float 8.23 'floatField']
-    [abstract float 11.52 'doubleField']
-    [abstract string '8' 'UTF-8' 'stringField']
+    //Abstract fields can only be used within discriminated base types.
+    [simple         uint 8 'simpleField']
+    [abstract bit 'abstractBitField']
+    [abstract int 8 'abstractIntField']
+    [abstract uint 8 'abstractUintField']
+    [abstract float 8.23 'abstractFloatField']
+    [abstract float 11.52 'abstractDoubleField']
+    [abstract string '8' 'UTF-8' 'abstractStringField']
+    [typeSwitch 'simpleField'
+        ['0' AbstractedType
+            [simple bit 'abstractBitField']
+            [simple int 8 'abstractIntField']
+            [simple uint 8 'abstractUintField']
+            [simple float 8.23 'abstractFloatField']
+            [simple float 11.52 'abstractDoubleField']
+            [simple string '8' 'UTF-8' 'abstractStringField']
+        ]
+    ]
 ]
 
 [type 'ArrayTypeTest'
diff --git a/protocols/opcua/src/main/xslt/opc-types.xsl 
b/protocols/opcua/src/main/xslt/opc-types.xsl
index 65d491d..52530f8 100644
--- a/protocols/opcua/src/main/xslt/opc-types.xsl
+++ b/protocols/opcua/src/main/xslt/opc-types.xsl
@@ -367,8 +367,9 @@
     [array bit 'arrayDimensions' count 'noOfArrayDimensions == null ? 0 : 
noOfArrayDimensions']
 ]
 
-[type 'NodeIdTypeDefinition' [NodeIdType 'nodeType']
-    [implicit nodeIdType 'type' 'nodeType']
+[discriminatedType 'NodeIdTypeDefinition'
+    [abstract Object 'identifier']
+    [simple NodeIdType 'nodeType']
     [typeSwitch 'nodeType'
         ['nodeIdTypeTwoByte' NodeIdTwoByte
             [simple uint 8 'namespaceIndex']
@@ -376,36 +377,37 @@
         ]
         ['nodeIdTypeFourByte' NodeIdFourByte
             [simple uint 8 'namespaceIndex']
-            [simple FourByteNodeId 'id']
+            [simple uint 16 'identifier']
         ]
         ['nodeIdTypeNumeric' NodeIdNumeric
             [simple uint 16 'namespaceIndex']
-            [simple NumericNodeId 'id']
+            [simple uint 32 'identifier']
         ]
         ['nodeIdTypeString' NodeIdString
             [simple uint 16 'namespaceIndex']
-            [simple StringNodeId 'id']
+            [simple string '-1' 'identifier']
         ]
         ['nodeIdTypeGuid' NodeIdGuid
             [simple uint 16 'namespaceIndex']
-            [simple GuidNodeId 'id']
+            [simple string '-1' 'identifier']
         ]
         ['nodeIdTypeByteString' NodeIdByteString
             [simple uint 16 'namespaceIndex']
-            [simple ByteStringNodeId 'id']
+            [simple uint 32 'identifier']
         ]
     ]
+]
 
-[discriminatedType 'NodeId'
+[type 'NodeId'
     [reserved int 2 '0x00']
-    [implicit NodeIdType 'nodeId.nodeType']
+    [virtual string '-1' 'id' 'nodeId.identifier.toString']
     [simple NodeIdTypeDefinition 'nodeId']
 ]
 
 [type 'ExpandedNodeId'
     [simple bit 'namespaceURISpecified']
     [simple bit 'serverIndexSpecified']
-    [implicit NodeIdType 'nodeId.nodeType']
+    [virtual string '-1' 'utf-8' 'identifier' 'nodeId.identifier.toString']
     [simple NodeIdTypeDefinition 'nodeId']
     [optional PascalString 'namespaceURI' 'namespaceURISpecified']
     [optional uint 32 'serverIndex' 'serverIndexSpecified']
@@ -414,7 +416,7 @@
 [discriminatedType 'ExtensionObject'
     //A serialized object prefixed with its data type identifier.
     [simple ExpandedNodeId 'nodeId']
-    [virtual string '-1' 'identifier' 'nodeId.id']
+    [virtual string '-1' 'identifier' 'nodeId.identifier']
     [simple uint 8 'encodingMask']
     [optional int 32 'bodyLength' 'encodingMask > 0']
     [array int 8 'body' count 'bodyLength == null ? 0 : bodyLength']

Reply via email to