You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2021/03/31 11:04:44 UTC
[plc4x] branch develop updated: plc4go: fixed issue when
unmarshaling list elements from xml
This is an automated email from the ASF dual-hosted git repository.
sruehl 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 9cbe531 plc4go: fixed issue when unmarshaling list elements from xml
9cbe531 is described below
commit 9cbe5317dd006987d54dfdcec06daa5675a6d894
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Mar 31 13:04:29 2021 +0200
plc4go: fixed issue when unmarshaling list elements from xml
---
.../src/main/resources/templates/go/model-template.ftlh | 9 ++++-----
.../internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go | 7 ++++---
.../plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go | 7 ++++---
plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go | 7 ++++---
plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go | 7 ++++---
plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go | 7 ++++---
plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go | 7 ++++---
plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go | 7 ++++---
.../plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go | 7 ++++---
plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go | 7 ++++---
.../plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go | 7 ++++---
plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go | 7 ++++---
12 files changed, 48 insertions(+), 38 deletions(-)
diff --git a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
index 62c5cf7..053f0d2 100644
--- a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
@@ -946,16 +946,15 @@ func (m *${type.name}) UnmarshalXML(d *xml.Decoder, start xml.StartElement) erro
}
m.${field.name?cap_first} = utils.ByteArrayToInt8Array(_decoded[0:_len])
<#elseif helper.isComplexTypeReference(field.type) && helper.isDiscriminatedParentTypeDefinition(helper.getTypeDefinitionForTypeReference(field.type))>
- <#if helper.isArrayField(field)>
- var _values []<#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(field.type)}
- </#if>
var dt *${helper.getLanguageTypeNameForField(field)}
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
<#if helper.isArrayField(field)>
- _values = append(_values, dt)
- m.${field.name?cap_first} = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.${field.name?cap_first} = append(m.${field.name?cap_first}, dt)
+ }
<#else>
m.${field.name?cap_first} = dt
</#if>
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
index 053d102..681e80a 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
@@ -277,13 +277,14 @@ func (m *AdsReadWriteRequest) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
}
m.ReadLength = data
case "items":
- var _values []*AdsMultiRequestItem
var dt *AdsMultiRequestItem
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.Items = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.Items = append(m.Items, dt)
+ }
case "data":
var _encoded string
if err := d.DecodeElement(&_encoded, &tok); err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
index f5790be..3011649 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
@@ -168,13 +168,14 @@ func (m *DIBSuppSvcFamilies) UnmarshalXML(d *xml.Decoder, start xml.StartElement
}
m.DescriptionType = data
case "serviceIds":
- var _values []*ServiceId
var dt *ServiceId
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.ServiceIds = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.ServiceIds = append(m.ServiceIds, dt)
+ }
}
}
}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
index cc90e84..022c085 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
@@ -223,13 +223,14 @@ func (m *LBusmonInd) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
}
m.AdditionalInformationLength = data
case "additionalInformation":
- var _values []*CEMIAdditionalInformation
var dt *CEMIAdditionalInformation
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.AdditionalInformation = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.AdditionalInformation = append(m.AdditionalInformation, dt)
+ }
case "dataFrame":
var dt *LDataFrame
if err := d.DecodeElement(&dt, &tok); err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go
index f348f6d..734cbdc 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go
@@ -195,13 +195,14 @@ func (m *LDataCon) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
}
m.AdditionalInformationLength = data
case "additionalInformation":
- var _values []*CEMIAdditionalInformation
var dt *CEMIAdditionalInformation
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.AdditionalInformation = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.AdditionalInformation = append(m.AdditionalInformation, dt)
+ }
case "dataFrame":
var dt *LDataFrame
if err := d.DecodeElement(&dt, &tok); err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go
index 5b11d3d..f4489cc 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go
@@ -195,13 +195,14 @@ func (m *LDataInd) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
}
m.AdditionalInformationLength = data
case "additionalInformation":
- var _values []*CEMIAdditionalInformation
var dt *CEMIAdditionalInformation
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.AdditionalInformation = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.AdditionalInformation = append(m.AdditionalInformation, dt)
+ }
case "dataFrame":
var dt *LDataFrame
if err := d.DecodeElement(&dt, &tok); err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go
index c1a838f..80a0c56 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go
@@ -195,13 +195,14 @@ func (m *LDataReq) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
}
m.AdditionalInformationLength = data
case "additionalInformation":
- var _values []*CEMIAdditionalInformation
var dt *CEMIAdditionalInformation
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.AdditionalInformation = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.AdditionalInformation = append(m.AdditionalInformation, dt)
+ }
case "dataFrame":
var dt *LDataFrame
if err := d.DecodeElement(&dt, &tok); err != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
index 7eeab9c..14e610b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
@@ -243,13 +243,14 @@ func (m *COTPPacket) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
tok := token.(xml.StartElement)
switch tok.Name.Local {
case "parameters":
- var _values []*COTPParameter
var dt *COTPParameter
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.Parameters = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.Parameters = append(m.Parameters, dt)
+ }
case "payload":
var dt *S7Message
if err := d.DecodeElement(&dt, &tok); err != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go
index c58772b..ba3f247 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go
@@ -171,13 +171,14 @@ func (m *S7ParameterReadVarRequest) UnmarshalXML(d *xml.Decoder, start xml.Start
tok := token.(xml.StartElement)
switch tok.Name.Local {
case "items":
- var _values []*S7VarRequestParameterItem
var dt *S7VarRequestParameterItem
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.Items = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.Items = append(m.Items, dt)
+ }
}
}
token, err = d.Token()
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go
index c4c2ec4..7c9e263 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go
@@ -171,13 +171,14 @@ func (m *S7ParameterUserData) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
tok := token.(xml.StartElement)
switch tok.Name.Local {
case "items":
- var _values []*S7ParameterUserDataItem
var dt *S7ParameterUserDataItem
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.Items = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.Items = append(m.Items, dt)
+ }
}
}
token, err = d.Token()
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go
index cb2143f..a4bb9d2 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go
@@ -171,13 +171,14 @@ func (m *S7ParameterWriteVarRequest) UnmarshalXML(d *xml.Decoder, start xml.Star
tok := token.(xml.StartElement)
switch tok.Name.Local {
case "items":
- var _values []*S7VarRequestParameterItem
var dt *S7VarRequestParameterItem
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.Items = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.Items = append(m.Items, dt)
+ }
}
}
token, err = d.Token()
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go
index 2bfffd1..dd9139b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go
@@ -154,13 +154,14 @@ func (m *S7PayloadUserData) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
tok := token.(xml.StartElement)
switch tok.Name.Local {
case "items":
- var _values []*S7PayloadUserDataItem
var dt *S7PayloadUserDataItem
if err := d.DecodeElement(&dt, &tok); err != nil {
return err
}
- _values = append(_values, dt)
- m.Items = _values
+ // TODO: this is a workaround for empty tags which omit this strange structure
+ if dt.Child != nil {
+ m.Items = append(m.Items, dt)
+ }
}
}
token, err = d.Token()