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/30 12:42:41 UTC
[plc4x] branch develop updated: plc4go: fix issue with
unmarshalling on nested lists
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 e7385c7 plc4go: fix issue with unmarshalling on nested lists
e7385c7 is described below
commit e7385c7fd5d1e3bab33d5803ff5e83e566e0a9e3
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Mar 30 14:42:28 2021 +0200
plc4go: fix issue with unmarshalling on nested lists
---
.../resources/templates/go/model-template.ftlh | 36 +++++++++++++---------
plc4go/cmd/main/drivers/tests/ads_driver_test.go | 3 +-
.../internal/plc4go/ads/readwrite/model/AdsData.go | 10 +++++-
.../ads/readwrite/model/AdsMultiRequestItem.go | 10 +++++-
.../plc4go/bacnetip/readwrite/model/APDU.go | 10 +++++-
.../readwrite/model/BACnetConfirmedServiceACK.go | 10 +++++-
.../model/BACnetConfirmedServiceRequest.go | 10 +++++-
.../plc4go/bacnetip/readwrite/model/BACnetError.go | 10 +++++-
.../bacnetip/readwrite/model/BACnetServiceAck.go | 10 +++++-
.../plc4go/bacnetip/readwrite/model/BACnetTag.go | 10 +++++-
.../model/BACnetUnconfirmedServiceRequest.go | 10 +++++-
.../plc4go/bacnetip/readwrite/model/BVLC.go | 10 +++++-
.../plc4go/bacnetip/readwrite/model/NLM.go | 10 +++++-
.../plc4go/knxnetip/readwrite/model/Apdu.go | 10 +++++-
.../plc4go/knxnetip/readwrite/model/ApduControl.go | 10 +++++-
.../plc4go/knxnetip/readwrite/model/ApduData.go | 10 +++++-
.../plc4go/knxnetip/readwrite/model/ApduDataExt.go | 10 +++++-
.../plc4go/knxnetip/readwrite/model/CEMI.go | 10 +++++-
.../readwrite/model/CEMIAdditionalInformation.go | 10 +++++-
.../knxnetip/readwrite/model/ComObjectTable.go | 10 +++++-
.../model/ConnectionRequestInformation.go | 10 +++++-
.../readwrite/model/ConnectionResponseDataBlock.go | 10 +++++-
.../knxnetip/readwrite/model/KnxGroupAddress.go | 10 +++++-
.../knxnetip/readwrite/model/KnxNetIpMessage.go | 10 +++++-
.../plc4go/knxnetip/readwrite/model/LDataFrame.go | 10 +++++-
.../plc4go/knxnetip/readwrite/model/ServiceId.go | 10 +++++-
.../plc4go/modbus/readwrite/model/ModbusPDU.go | 10 +++++-
.../plc4go/s7/readwrite/model/COTPPacket.go | 10 +++++-
.../plc4go/s7/readwrite/model/COTPParameter.go | 10 +++++-
.../plc4go/s7/readwrite/model/S7Address.go | 10 +++++-
.../plc4go/s7/readwrite/model/S7Message.go | 10 +++++-
.../plc4go/s7/readwrite/model/S7Parameter.go | 10 +++++-
.../s7/readwrite/model/S7ParameterUserDataItem.go | 10 +++++-
.../plc4go/s7/readwrite/model/S7Payload.go | 10 +++++-
.../s7/readwrite/model/S7PayloadUserDataItem.go | 10 +++++-
.../readwrite/model/S7VarRequestParameterItem.go | 10 +++++-
36 files changed, 330 insertions(+), 49 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 7e6928a..8b668bb 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
@@ -951,23 +951,31 @@ func (m *${type.name}) UnmarshalXML(d *xml.Decoder, start xml.StartElement) erro
</#list>
<#if hasSwitch>
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ${type.name}")
+ }
+ switch attr[0].Value {
<#list helper.getUniqueSwitchCases(helper.getSwitchField().cases) as subtype>
- case "org.apache.plc4x.java.${protocolName}.${outputFlavor?replace("-","")}.${subtype.name}":
- var dt *${subtype.name}
- if m.Child != nil {
- dt = m.Child.(*${subtype.name})
- }
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
+ case "org.apache.plc4x.java.${protocolName}.${outputFlavor?replace("-","")}.${subtype.name}":
+ var dt *${subtype.name}
+ if m.Child != nil {
+ dt = m.Child.(*${subtype.name})
+ }
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
<#if helper.isArrayField(field)>
- _values = append(_values, dt)
+ _values = append(_values, dt)
<#else>
- if m.Child == nil {
- dt.Parent = m
- m.Child = dt
- }
+ if m.Child == nil {
+ dt.Parent = m
+ m.Child = dt
+ }
</#if>
</#list>
}
diff --git a/plc4go/cmd/main/drivers/tests/ads_driver_test.go b/plc4go/cmd/main/drivers/tests/ads_driver_test.go
index 7e2dca8..15da0f0 100644
--- a/plc4go/cmd/main/drivers/tests/ads_driver_test.go
+++ b/plc4go/cmd/main/drivers/tests/ads_driver_test.go
@@ -28,10 +28,11 @@ import (
func TestAdsDriver(t *testing.T) {
//t.Skip("Still a work in progress")
testutils.RunDriverTestsuite(t, ads.NewDriver(), "assets/testing/protocols/ads/DriverTestsuite.xml",
- // TODO: error in code-generator must be fixed first
+ // TODO: tests assumes proper multi requests which is currently not implemented yet
"Multi-element direct read request",
// TODO: symbolic addressing not implemented yet
"Single element symbolic read request",
+ // TODO: symbolic addressing not implemented yet
"Single element symbolic read request (Address previously resolved)",
)
}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
index 1f25ba5..9f732ba 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
@@ -177,7 +177,15 @@ func (m *AdsData) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of AdsData")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.ads.readwrite.AdsInvalidRequest":
var dt *AdsInvalidRequest
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
index 1ad35a9..a2c0a4e 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
@@ -142,7 +142,15 @@ func (m *AdsMultiRequestItem) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of AdsMultiRequestItem")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.ads.readwrite.AdsMultiRequestItemRead":
var dt *AdsMultiRequestItemRead
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index 6441cc8..12122a0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -168,7 +168,15 @@ func (m *APDU) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of APDU")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest":
var dt *APDUConfirmedRequest
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
index 9bfa7a1..7d024d0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -180,7 +180,15 @@ func (m *BACnetConfirmedServiceACK) UnmarshalXML(d *xml.Decoder, start xml.Start
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of BACnetConfirmedServiceACK")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceACKGetAlarmSummary":
var dt *BACnetConfirmedServiceACKGetAlarmSummary
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index ae90d7b..4444d0a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -214,7 +214,15 @@ func (m *BACnetConfirmedServiceRequest) UnmarshalXML(d *xml.Decoder, start xml.S
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of BACnetConfirmedServiceRequest")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAcknowledgeAlarm":
var dt *BACnetConfirmedServiceRequestAcknowledgeAlarm
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
index 93ebbfc..465962b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
@@ -180,7 +180,15 @@ func (m *BACnetError) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of BACnetError")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.BACnetErrorGetAlarmSummary":
var dt *BACnetErrorGetAlarmSummary
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
index c840524..0f577a0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -180,7 +180,15 @@ func (m *BACnetServiceAck) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of BACnetServiceAck")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetAlarmSummary":
var dt *BACnetServiceAckGetAlarmSummary
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
index 3f62e31..50e7d52 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
@@ -290,7 +290,15 @@ func (m *BACnetTag) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
}
m.ExtLength = &data
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of BACnetTag")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.BACnetTagApplicationNull":
var dt *BACnetTagApplicationNull
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index b04f544..8d76dd4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -176,7 +176,15 @@ func (m *BACnetUnconfirmedServiceRequest) UnmarshalXML(d *xml.Decoder, start xml
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of BACnetUnconfirmedServiceRequest")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.BACnetUnconfirmedServiceRequestIAm":
var dt *BACnetUnconfirmedServiceRequestIAm
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index d6e8c3d..894ffea 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -216,7 +216,15 @@ func (m *BVLC) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of BVLC")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.BVLCResult":
var dt *BVLCResult
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
index 71ddeec..979c552 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
@@ -188,7 +188,15 @@ func (m *NLM) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
}
m.VendorId = &data
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of NLM")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.bacnetip.readwrite.NLMWhoIsRouterToNetwork":
var dt *NLMWhoIsRouterToNetwork
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
index a555a94..b4a5d56 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
@@ -202,7 +202,15 @@ func (m *Apdu) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
}
m.Counter = data
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of Apdu")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.ApduControlContainer":
var dt *ApduControlContainer
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
index 7f801d4..72548b2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
@@ -160,7 +160,15 @@ func (m *ApduControl) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ApduControl")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.ApduControlConnect":
var dt *ApduControlConnect
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
index 20f7661..f1de57d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
@@ -184,7 +184,15 @@ func (m *ApduData) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ApduData")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.ApduDataGroupValueRead":
var dt *ApduDataGroupValueRead
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
index 2fc0fa2..1512a99 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
@@ -234,7 +234,15 @@ func (m *ApduDataExt) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ApduDataExt")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.ApduDataExtOpenRoutingTableRequest":
var dt *ApduDataExtOpenRoutingTableRequest
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
index c442c73..8fc0c21 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
@@ -198,7 +198,15 @@ func (m *CEMI) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of CEMI")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.LBusmonInd":
var dt *LBusmonInd
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index a953e9a..6cd4497 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -156,7 +156,15 @@ func (m *CEMIAdditionalInformation) UnmarshalXML(d *xml.Decoder, start xml.Start
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of CEMIAdditionalInformation")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.CEMIAdditionalInformationBusmonitorInfo":
var dt *CEMIAdditionalInformationBusmonitorInfo
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
index 7449e17..11f13e3 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
@@ -142,7 +142,15 @@ func (m *ComObjectTable) UnmarshalXML(d *xml.Decoder, start xml.StartElement) er
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ComObjectTable")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.ComObjectTableRealisationType1":
var dt *ComObjectTableRealisationType1
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
index 4fb07e0..e5ad599 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -172,7 +172,15 @@ func (m *ConnectionRequestInformation) UnmarshalXML(d *xml.Decoder, start xml.St
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ConnectionRequestInformation")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.ConnectionRequestInformationDeviceManagement":
var dt *ConnectionRequestInformationDeviceManagement
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index 9ba9aeb..2b2a70b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -172,7 +172,15 @@ func (m *ConnectionResponseDataBlock) UnmarshalXML(d *xml.Decoder, start xml.Sta
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ConnectionResponseDataBlock")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.ConnectionResponseDataBlockDeviceManagement":
var dt *ConnectionResponseDataBlockDeviceManagement
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go
index 5655610..451175d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go
@@ -142,7 +142,15 @@ func (m *KnxGroupAddress) UnmarshalXML(d *xml.Decoder, start xml.StartElement) e
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of KnxGroupAddress")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.KnxGroupAddressFreeLevel":
var dt *KnxGroupAddressFreeLevel
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
index 891df2e..fca1b55 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
@@ -238,7 +238,15 @@ func (m *KnxNetIpMessage) UnmarshalXML(d *xml.Decoder, start xml.StartElement) e
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of KnxNetIpMessage")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.SearchRequest":
var dt *SearchRequest
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
index 489d73e..7e1a4a2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
@@ -290,7 +290,15 @@ func (m *LDataFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
}
m.ErrorFlag = data
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of LDataFrame")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.LDataExtended":
var dt *LDataExtended
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
index d812caf..35f1b40 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
@@ -166,7 +166,15 @@ func (m *ServiceId) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ServiceId")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.knxnetip.readwrite.KnxNetIpCore":
var dt *KnxNetIpCore
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
index 491fc1c..45350c5 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
@@ -248,7 +248,15 @@ func (m *ModbusPDU) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of ModbusPDU")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.modbus.readwrite.ModbusPDUError":
var dt *ModbusPDUError
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
index 9d39129..8a71c12 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
@@ -256,7 +256,15 @@ func (m *COTPPacket) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
}
m.Payload = dt
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of COTPPacket")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.COTPPacketData":
var dt *COTPPacketData
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
index cc23e9d..4de344b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
@@ -178,7 +178,15 @@ func (m *COTPParameter) UnmarshalXML(d *xml.Decoder, start xml.StartElement) err
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of COTPParameter")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.COTPParameterTpduSize":
var dt *COTPParameterTpduSize
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
index 0b13e99..fc4f094 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
@@ -154,7 +154,15 @@ func (m *S7Address) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of S7Address")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.S7AddressAny":
var dt *S7AddressAny
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
index 8731183..64585af 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
@@ -327,7 +327,15 @@ func (m *S7Message) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
}
m.Payload = dt
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of S7Message")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.S7MessageRequest":
var dt *S7MessageRequest
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
index 0f77569..1aa6fa7 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
@@ -165,7 +165,15 @@ func (m *S7Parameter) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of S7Parameter")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.S7ParameterSetupCommunication":
var dt *S7ParameterSetupCommunication
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
index 0a63eb8..f0f0301 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
@@ -154,7 +154,15 @@ func (m *S7ParameterUserDataItem) UnmarshalXML(d *xml.Decoder, start xml.StartEl
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of S7ParameterUserDataItem")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.S7ParameterUserDataItemCPUFunctions":
var dt *S7ParameterUserDataItemCPUFunctions
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go
index dbfdbb0..e9358f5 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go
@@ -145,7 +145,15 @@ func (m *S7Payload) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of S7Payload")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.S7PayloadReadVarResponse":
var dt *S7PayloadReadVarResponse
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go
index 8a244c9..2a80e36 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go
@@ -247,7 +247,15 @@ func (m *S7PayloadUserDataItem) UnmarshalXML(d *xml.Decoder, start xml.StartElem
}
m.SzlIndex = data
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of S7PayloadUserDataItem")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.S7PayloadUserDataItemCpuFunctionReadSzlRequest":
var dt *S7PayloadUserDataItemCpuFunctionReadSzlRequest
if m.Child != nil {
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
index af70d2b..991f2ba 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
@@ -154,7 +154,15 @@ func (m *S7VarRequestParameterItem) UnmarshalXML(d *xml.Decoder, start xml.Start
tok := token.(xml.StartElement)
switch tok.Name.Local {
default:
- switch start.Attr[0].Value {
+ attr := start.Attr
+ if attr == nil || len(attr) <= 0 {
+ // TODO: workaround for bug with nested lists
+ attr = tok.Attr
+ }
+ if attr == nil || len(attr) <= 0 {
+ panic("Couldn't determine class type for childs of S7VarRequestParameterItem")
+ }
+ switch attr[0].Value {
case "org.apache.plc4x.java.s7.readwrite.S7VarRequestParameterItemAddress":
var dt *S7VarRequestParameterItemAddress
if m.Child != nil {