From 991af03db7c960bf8135ec91588d7be5b2bca668 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Tue, 25 Feb 2020 06:53:54 +0100 Subject: [PATCH] More robust event args decoding --- codegen/v2/events.gen.go.tpl | 16 ++++++---- compose/service/event/compose.gen.go | 8 +++-- compose/service/event/module.gen.go | 24 ++++++++------ compose/service/event/namespace.gen.go | 24 ++++++++------ compose/service/event/page.gen.go | 24 ++++++++------ compose/service/event/record.gen.go | 32 ++++++++++++------- messaging/service/event/channel.gen.go | 24 ++++++++------ messaging/service/event/channel_member.gen.go | 32 ++++++++++++------- messaging/service/event/command.gen.go | 16 ++++++---- messaging/service/event/message.gen.go | 32 ++++++++++++------- messaging/service/event/messaging.gen.go | 8 +++-- system/service/event/application.gen.go | 24 ++++++++------ system/service/event/auth.gen.go | 32 ++++++++++++------- system/service/event/mail.gen.go | 24 ++++++++------ system/service/event/role.gen.go | 24 ++++++++------ system/service/event/role_member.gen.go | 32 ++++++++++++------- system/service/event/sink.gen.go | 24 ++++++++------ system/service/event/system.gen.go | 8 +++-- system/service/event/user.gen.go | 24 ++++++++------ 19 files changed, 270 insertions(+), 162 deletions(-) diff --git a/codegen/v2/events.gen.go.tpl b/codegen/v2/events.gen.go.tpl index 55eadc5a0..2b94a9fa1 100644 --- a/codegen/v2/events.gen.go.tpl +++ b/codegen/v2/events.gen.go.tpl @@ -151,18 +151,22 @@ func (res *{{ camelCase .ResourceIdent "base" }}) Decode(results map[string][]by } {{- if $.Events.Result }} - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.{{ $.Events.Result }}); err != nil { - return + if res.{{ $.Events.Result }} != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.{{ $.Events.Result }}); err != nil { + return + } } } {{ end -}} {{- range $prop := $.Events.Properties }} {{- if not $prop.Immutable }} - if r, ok := results["{{ $prop.Name }}"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.{{ $prop.Name }}); err != nil { - return + if res.{{ $prop.Name }} != nil { + if r, ok := results["{{ $prop.Name }}"]; ok { + if err = json.Unmarshal(r, res.{{ $prop.Name }}); err != nil { + return + } } } {{ end -}} diff --git a/compose/service/event/compose.gen.go b/compose/service/event/compose.gen.go index 3657d779a..ad1f638ca 100644 --- a/compose/service/event/compose.gen.go +++ b/compose/service/event/compose.gen.go @@ -177,9 +177,11 @@ func (res *composeBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/compose/service/event/module.gen.go b/compose/service/event/module.gen.go index a45477666..e4ffb524a 100644 --- a/compose/service/event/module.gen.go +++ b/compose/service/event/module.gen.go @@ -472,21 +472,27 @@ func (res *moduleBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.module); err != nil { - return + if res.module != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.module); err != nil { + return + } } } - if r, ok := results["module"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.module); err != nil { - return + if res.module != nil { + if r, ok := results["module"]; ok { + if err = json.Unmarshal(r, res.module); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/compose/service/event/namespace.gen.go b/compose/service/event/namespace.gen.go index ed3028e25..5d4a4c331 100644 --- a/compose/service/event/namespace.gen.go +++ b/compose/service/event/namespace.gen.go @@ -432,21 +432,27 @@ func (res *namespaceBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.namespace); err != nil { - return + if res.namespace != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.namespace); err != nil { + return + } } } - if r, ok := results["namespace"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.namespace); err != nil { - return + if res.namespace != nil { + if r, ok := results["namespace"]; ok { + if err = json.Unmarshal(r, res.namespace); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/compose/service/event/page.gen.go b/compose/service/event/page.gen.go index 064fb5c52..678abc3fb 100644 --- a/compose/service/event/page.gen.go +++ b/compose/service/event/page.gen.go @@ -472,21 +472,27 @@ func (res *pageBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.page); err != nil { - return + if res.page != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.page); err != nil { + return + } } } - if r, ok := results["page"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.page); err != nil { - return + if res.page != nil { + if r, ok := results["page"]; ok { + if err = json.Unmarshal(r, res.page); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/compose/service/event/record.gen.go b/compose/service/event/record.gen.go index 2241c4579..45477ee4b 100644 --- a/compose/service/event/record.gen.go +++ b/compose/service/event/record.gen.go @@ -559,27 +559,35 @@ func (res *recordBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.record); err != nil { - return + if res.record != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.record); err != nil { + return + } } } - if r, ok := results["record"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.record); err != nil { - return + if res.record != nil { + if r, ok := results["record"]; ok { + if err = json.Unmarshal(r, res.record); err != nil { + return + } } } - if r, ok := results["recordValueErrors"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.recordValueErrors); err != nil { - return + if res.recordValueErrors != nil { + if r, ok := results["recordValueErrors"]; ok { + if err = json.Unmarshal(r, res.recordValueErrors); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/messaging/service/event/channel.gen.go b/messaging/service/event/channel.gen.go index dd05ef61c..d17d7fa4a 100644 --- a/messaging/service/event/channel.gen.go +++ b/messaging/service/event/channel.gen.go @@ -432,21 +432,27 @@ func (res *channelBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.channel); err != nil { - return + if res.channel != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.channel); err != nil { + return + } } } - if r, ok := results["channel"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.channel); err != nil { - return + if res.channel != nil { + if r, ok := results["channel"]; ok { + if err = json.Unmarshal(r, res.channel); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/messaging/service/event/channel_member.gen.go b/messaging/service/event/channel_member.gen.go index 3c10a5931..f69af28d9 100644 --- a/messaging/service/event/channel_member.gen.go +++ b/messaging/service/event/channel_member.gen.go @@ -487,27 +487,35 @@ func (res *channelMemberBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.member); err != nil { - return + if res.member != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.member); err != nil { + return + } } } - if r, ok := results["member"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.member); err != nil { - return + if res.member != nil { + if r, ok := results["member"]; ok { + if err = json.Unmarshal(r, res.member); err != nil { + return + } } } - if r, ok := results["channel"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.channel); err != nil { - return + if res.channel != nil { + if r, ok := results["channel"]; ok { + if err = json.Unmarshal(r, res.channel); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/messaging/service/event/command.gen.go b/messaging/service/event/command.gen.go index 98cb672f6..6729c8d88 100644 --- a/messaging/service/event/command.gen.go +++ b/messaging/service/event/command.gen.go @@ -137,15 +137,19 @@ func (res *commandBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.command); err != nil { - return + if res.command != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.command); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/messaging/service/event/message.gen.go b/messaging/service/event/message.gen.go index a598fadf3..a93bb1d37 100644 --- a/messaging/service/event/message.gen.go +++ b/messaging/service/event/message.gen.go @@ -479,27 +479,35 @@ func (res *messageBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.message); err != nil { - return + if res.message != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.message); err != nil { + return + } } } - if r, ok := results["message"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.message); err != nil { - return + if res.message != nil { + if r, ok := results["message"]; ok { + if err = json.Unmarshal(r, res.message); err != nil { + return + } } } - if r, ok := results["channel"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.channel); err != nil { - return + if res.channel != nil { + if r, ok := results["channel"]; ok { + if err = json.Unmarshal(r, res.channel); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/messaging/service/event/messaging.gen.go b/messaging/service/event/messaging.gen.go index 2df8309ab..507967437 100644 --- a/messaging/service/event/messaging.gen.go +++ b/messaging/service/event/messaging.gen.go @@ -177,9 +177,11 @@ func (res *messagingBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/application.gen.go b/system/service/event/application.gen.go index b0a939712..e60afe475 100644 --- a/system/service/event/application.gen.go +++ b/system/service/event/application.gen.go @@ -432,21 +432,27 @@ func (res *applicationBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.application); err != nil { - return + if res.application != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.application); err != nil { + return + } } } - if r, ok := results["application"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.application); err != nil { - return + if res.application != nil { + if r, ok := results["application"]; ok { + if err = json.Unmarshal(r, res.application); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/auth.gen.go b/system/service/event/auth.gen.go index cd745e78f..46c016e6e 100644 --- a/system/service/event/auth.gen.go +++ b/system/service/event/auth.gen.go @@ -295,27 +295,35 @@ func (res *authBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.user); err != nil { - return + if res.user != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.user); err != nil { + return + } } } - if r, ok := results["user"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.user); err != nil { - return + if res.user != nil { + if r, ok := results["user"]; ok { + if err = json.Unmarshal(r, res.user); err != nil { + return + } } } - if r, ok := results["provider"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.provider); err != nil { - return + if res.provider != nil { + if r, ok := results["provider"]; ok { + if err = json.Unmarshal(r, res.provider); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/mail.gen.go b/system/service/event/mail.gen.go index 7caebbdb9..7ec0cbd24 100644 --- a/system/service/event/mail.gen.go +++ b/system/service/event/mail.gen.go @@ -216,21 +216,27 @@ func (res *mailBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.message); err != nil { - return + if res.message != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.message); err != nil { + return + } } } - if r, ok := results["message"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.message); err != nil { - return + if res.message != nil { + if r, ok := results["message"]; ok { + if err = json.Unmarshal(r, res.message); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/role.gen.go b/system/service/event/role.gen.go index 87d59cc5e..502eb63ef 100644 --- a/system/service/event/role.gen.go +++ b/system/service/event/role.gen.go @@ -432,21 +432,27 @@ func (res *roleBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.role); err != nil { - return + if res.role != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.role); err != nil { + return + } } } - if r, ok := results["role"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.role); err != nil { - return + if res.role != nil { + if r, ok := results["role"]; ok { + if err = json.Unmarshal(r, res.role); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/role_member.gen.go b/system/service/event/role_member.gen.go index 2f1a4538b..94b8f4d68 100644 --- a/system/service/event/role_member.gen.go +++ b/system/service/event/role_member.gen.go @@ -295,27 +295,35 @@ func (res *roleMemberBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.user); err != nil { - return + if res.user != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.user); err != nil { + return + } } } - if r, ok := results["user"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.user); err != nil { - return + if res.user != nil { + if r, ok := results["user"]; ok { + if err = json.Unmarshal(r, res.user); err != nil { + return + } } } - if r, ok := results["role"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.role); err != nil { - return + if res.role != nil { + if r, ok := results["role"]; ok { + if err = json.Unmarshal(r, res.role); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/sink.gen.go b/system/service/event/sink.gen.go index 01ae78203..b49345fd2 100644 --- a/system/service/event/sink.gen.go +++ b/system/service/event/sink.gen.go @@ -144,21 +144,27 @@ func (res *sinkBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.response); err != nil { - return + if res.response != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.response); err != nil { + return + } } } - if r, ok := results["response"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.response); err != nil { - return + if res.response != nil { + if r, ok := results["response"]; ok { + if err = json.Unmarshal(r, res.response); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/system.gen.go b/system/service/event/system.gen.go index de244122d..3c8c50a99 100644 --- a/system/service/event/system.gen.go +++ b/system/service/event/system.gen.go @@ -177,9 +177,11 @@ func (res *systemBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return diff --git a/system/service/event/user.gen.go b/system/service/event/user.gen.go index ffcfb6f18..db9e437f3 100644 --- a/system/service/event/user.gen.go +++ b/system/service/event/user.gen.go @@ -432,21 +432,27 @@ func (res *userBase) Decode(results map[string][]byte) (err error) { // Respect immutability return } - if r, ok := results["result"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.user); err != nil { - return + if res.user != nil { + if r, ok := results["result"]; ok && len(results) == 1 { + if err = json.Unmarshal(r, res.user); err != nil { + return + } } } - if r, ok := results["user"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.user); err != nil { - return + if res.user != nil { + if r, ok := results["user"]; ok { + if err = json.Unmarshal(r, res.user); err != nil { + return + } } } - if r, ok := results["invoker"]; ok && len(results) == 1 { - if err = json.Unmarshal(r, res.invoker); err != nil { - return + if res.invoker != nil { + if r, ok := results["invoker"]; ok { + if err = json.Unmarshal(r, res.invoker); err != nil { + return + } } } return