View Issue Details

IDProjectCategoryView StatusLast Update
000442110000-003: Address SpaceSpecpublic2021-02-09 17:13
ReporterMatthias Damm Assigned ToJeff Harding  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Summary0004421: Handling of StructureFields with abstract DataType
Description

In Part 14, we have several structure fields where the DataType is abstract and only concrete subtypes can be used e.g. for the TransportSettings or MessageSettings on the different PubSub object levels.

This requires that an ExtensionObject is embedded as field instead of an embedded structure.

This currently results in the Nodeset in field DataType of Structure. This is correct for the resulting strucure on the wire but we loose the information which concrete abstract type is required.

In addition the applied rule for the Nodeset is not defined anywhere (at least not to my knowledge)

TagsNo tags attached.
Attached Files
Commit Version
Fix Due Date

Relationships

has duplicate 0005414 closedRandy Armstrong 10000-003: Address Space Behavoir of DataTypeDefinition attribute with BaseDataType needs to be specified. 
related to 0004422 closedJeff Harding 10000-003: Address Space Indication if a subtype is allowed as value 
related to 0004423 assignedJeff Harding 10000-003: Address Space We need a indication of a sealed type 
related to 0004746 closedJim Luth 10000-003: Address Space Clarification on subtyping of structure data types 
related to 0005392 closedRandy Armstrong 10000-006: Mappings Used BaseType in dictionary missing 
related to 0005667 closedJeff Harding 10000-003: Address Space DataType Field should allow abstract supertypes. 
related to 0005664 closedRandy Armstrong NodeSets, XSDs and Generated Code WriterGroupDataType transportSettings and messageSettings fields are of the wrong type 
related to 0006455 closedRandy Armstrong NodeSets, XSDs and Generated Code Handling of StructureFields with abstract DataType 
related to 0006454 closedRandy Armstrong NodeSets, XSDs and Generated Code Handling of StructureFields with abstract DataType 

Activities

Matthias Damm

2018-12-14 00:19

developer   ~0009698

At the moment the code generators generate an ExtensionObject for a StructureField if the DataType is an abstract structure data type.

The problem is that the knowledge about the isAbsract is only on the DataType node but not on the DataTypeDefinition. Therefore it is only known inside the nodeset/address space but not in DataTypeSchemaHeader.

In addition this works only if the data type is abstract but not if you want to use a concrete type but allow subtypes.

We can not change the StructureField structure. We can only do a hack with the maxStringLength in StructureField since this one is not needed if the field is a strcuture.

Jeff Harding

2020-06-16 19:16

developer   ~0012350

At the June WG meeting we agreed on the following solution.

The StructureDefinition DataType will be enhanced to extend the structureType with 3 new enumeration values and the StructureField DataType will be enhanced to overload the isOptional Boolean for these 3 new enumerations. The 3 new types will be extensions of the current 3 by adding allowSubTypes flag in addition to the existing isOptional flag by redefining it as a byte. This will ensure no change to the encoding of this type.

Jeff Harding

2020-06-16 20:02

developer   ~0012353

Extended 8.48 StructureDefinition and 8.50 StructureField to support subtyping of DataTypes

Zbynek Zahradnik

2020-06-17 05:19

developer   ~0012371

I suggest to add following constraining condition when any of the "new" structureTypes is used (3, 4, 5):

If the allowSubTypes bit is 0, the dataType shall be a concrete type.

Or, formulated the other way round:

If dataType is abstract type, the allowSubTypes bit shall be 1.

Jeff Harding

2020-06-17 14:02

developer   ~0012392

Agreed with suggested addition.
Now it states
"If the structureType is Union_2 this field shall be ignored.
If the structureType is StructureEx_3, StructureWithOptionalFieldsEx_4 or UnionEx_2 this field is used as an emumeration with 2 bits defined as:
Bit 0 when TRUE indicates the data type field in a Structure is optional.
Bit 1 when TRUE indicates the data type field in a Structure allows subtyping. If the data type field is an abstract type this bit shall be set to TRUE."

Jim Luth

2020-08-25 13:28

administrator   ~0012712

Waiting for Mathias to review to close.

Jeff Harding

2020-09-08 16:42

developer   ~0012771

rethinking the proposed approach.

Jeff Harding

2020-09-08 16:52

developer   ~0012772

During Working Group review the proposal. Issues related to the encoding with non-binary encoders was raised. While recasting the boolean bit as a byte will work for binary encoding and not change the on the wire format it will break other encodings and possibly SDKs as they expect a boolean.

Jeff Harding

2020-09-08 17:00

developer   ~0012773

New proposal:

  • Stay with isOptional as a boolean.
  • Add 2 new enum types not the 3rd proposed StructureWithOptionalFieldsEx_4
  • When using the 2 new enums the isOptional is actually a isAllowSubTypes indication.

Jeff Harding

2020-09-08 17:03

developer   ~0012774

Need an Errata for 1.04

Jeff Harding

2020-09-08 21:06

developer   ~0012775

Updated the descriptions of StructureDefiniton and StructureFieldDefinition to describe the compromised solution agreed to today.
Also broke out the StructureType into a proper definition table for the enum.

Jeff Harding

2020-12-09 20:22

developer   ~0013435

Agreed and accepted the updated next in Part 5 version 1.05.
Can't close until we decide what the Errata for 1.04 should say.

Jeff Harding

2021-01-29 18:45

developer   ~0013633

The final changes applied to 1.05 included changes to the StructureDefinition's structureType description and the StructureField's dataType and isOptional descriptions.
The attached document includes a diff of th 1.04 vs. the 105 versions of the changed sections.

Jeff Harding

2021-01-29 18:47

developer   ~0013634

Added Errata to 1.04.10 describing the changes.

Jim Luth

2021-02-09 17:13

administrator   ~0013707

Agreed to 1.04.10 Errata.

Issue History

Date Modified Username Field Change
2018-10-09 21:44 Matthias Damm New Issue
2018-10-10 05:58 Matthias Damm Relationship added related to 0004422
2018-10-10 06:02 Matthias Damm Relationship added related to 0004423
2018-10-23 15:19 Jim Luth Assigned To => Jeff Harding
2018-10-23 15:19 Jim Luth Status new => assigned
2018-12-14 00:19 Matthias Damm Note Added: 0009698
2019-04-30 10:56 Wolfgang Mahnke Relationship added related to 0004746
2020-04-14 15:47 Matthias Damm Relationship added related to 0005392
2020-06-15 17:15 Jeff Harding Relationship added related to 0005667
2020-06-16 18:54 Jeff Harding Relationship added has duplicate 0005414
2020-06-16 19:16 Jeff Harding Note Added: 0012350
2020-06-16 20:02 Jeff Harding Status assigned => resolved
2020-06-16 20:02 Jeff Harding Resolution open => fixed
2020-06-16 20:02 Jeff Harding Fixed in Version => 1.05
2020-06-16 20:02 Jeff Harding Note Added: 0012353
2020-06-17 05:19 Zbynek Zahradnik Status resolved => feedback
2020-06-17 05:19 Zbynek Zahradnik Resolution fixed => reopened
2020-06-17 05:19 Zbynek Zahradnik Note Added: 0012371
2020-06-17 14:02 Jeff Harding Status feedback => resolved
2020-06-17 14:02 Jeff Harding Note Added: 0012392
2020-08-25 13:28 Jim Luth Note Added: 0012712
2020-09-08 16:42 Jeff Harding Status resolved => feedback
2020-09-08 16:42 Jeff Harding Note Added: 0012771
2020-09-08 16:52 Jeff Harding Status feedback => acknowledged
2020-09-08 16:52 Jeff Harding Note Added: 0012772
2020-09-08 17:00 Jeff Harding Note Added: 0012773
2020-09-08 17:03 Jeff Harding Note Added: 0012774
2020-09-08 21:06 Jeff Harding Status acknowledged => resolved
2020-09-08 21:06 Jeff Harding Note Added: 0012775
2020-10-27 16:38 Jeff Harding Status resolved => feedback
2020-10-27 16:38 Jeff Harding Status feedback => assigned
2020-11-10 18:02 Randy Armstrong Relationship added related to 0005664
2020-12-09 20:22 Jeff Harding Note Added: 0013435
2021-01-29 18:45 Jeff Harding File Added: Mantis4421Difference1_04to1_05.docx
2021-01-29 18:45 Jeff Harding Note Added: 0013633
2021-01-29 18:47 Jeff Harding Status assigned => resolved
2021-01-29 18:47 Jeff Harding Resolution reopened => fixed
2021-01-29 18:47 Jeff Harding Note Added: 0013634
2021-02-02 15:25 Randy Armstrong Issue cloned: 0006454
2021-02-02 15:41 Randy Armstrong Relationship added related to 0006455
2021-02-02 15:44 Randy Armstrong Relationship added related to 0006454
2021-02-09 17:13 Jim Luth Status resolved => closed
2021-02-09 17:13 Jim Luth Note Added: 0013707