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']
