@@ -66,24 +66,21 @@ func convertChannels(cfg *asyncapi3.Config, channels map[string]*ChannelRef) err
6666 if orig == nil {
6767 continue
6868 }
69- if len (orig .Ref ) > 0 {
70- cfg .Channels [name ] = & asyncapi3.ChannelRef {Reference : dynamic.Reference {Ref : orig .Ref }}
69+ ch , err := convertChannel (name , orig , cfg )
70+ if err != nil {
71+ return err
7172 }
72- if orig .Value != nil {
73- ch , err := convertChannel (name , orig , cfg )
74- if err != nil {
75- return err
76- }
73+ if ch .Value != nil {
7774 ch .Value .Config = cfg
78- cfg .Channels [name ] = ch
7975 }
76+ cfg .Channels [name ] = ch
8077 }
8178
8279 return nil
8380}
8481
8582func convertChannel (name string , c * ChannelRef , config * asyncapi3.Config ) (* asyncapi3.ChannelRef , error ) {
86- result := & asyncapi3.ChannelRef {Reference : dynamic.Reference {Ref : c .Ref }}
83+ result := & asyncapi3.ChannelRef {Reference : dynamic.Reference [ * asyncapi3. ChannelRef ] {Ref : c .Ref }}
8784
8885 if c .Value != nil {
8986 target := & asyncapi3.Channel {
@@ -98,7 +95,7 @@ func convertChannel(name string, c *ChannelRef, config *asyncapi3.Config) (*asyn
9895 for _ , server := range c .Value .Servers {
9996 target .Servers = append (
10097 target .Servers ,
101- & asyncapi3.ServerRef {Reference : dynamic.Reference {
98+ & asyncapi3.ServerRef {Reference : dynamic.Reference [ * asyncapi3. ServerRef ] {
10299 Ref : fmt .Sprintf ("#/servers/%s" , server ),
103100 }})
104101 }
@@ -192,53 +189,50 @@ func convertMessage(msg *MessageRef) *asyncapi3.MessageRef {
192189 return nil
193190 }
194191
195- target := & asyncapi3.MessageRef {Reference : dynamic.Reference {Ref : msg .Ref }}
192+ target := & asyncapi3.MessageRef {Reference : dynamic.Reference [ * asyncapi3. MessageRef ] {Ref : msg .Ref }}
196193 if msg .Value != nil {
197194 target .Value = & asyncapi3.Message {
198195 Title : msg .Value .Title ,
199196 Name : msg .Value .Name ,
200197 Summary : msg .Value .Summary ,
201198 Description : msg .Value .Description ,
202199 ContentType : msg .Value .ContentType ,
203- Payload : nil ,
200+ Payload : msg . Value . Payload ,
204201 Bindings : convertMessageBinding (msg .Value .Bindings ),
202+ Headers : msg .Value .Headers ,
205203 ExternalDocs : nil ,
206204 }
207205
208- if msg .Value .Payload != nil && msg .Value .Payload .Value != nil {
209- target .Value .Payload = msg .Value .Payload
210- }
211- if msg .Value .Headers != nil && msg .Value .Headers .Value != nil {
212- target .Value .Headers = msg .Value .Headers
213- }
214206 for _ , orig := range msg .Value .Traits {
215- trait := & asyncapi3.MessageTraitRef {}
216- if len (orig .Ref ) > 0 {
217- trait .Reference = dynamic.Reference {Ref : trait .Ref }
218- }
219- if orig .Value != nil {
220- trait .Value = convertMessageTrait (orig .Value ).Value
207+ trait := convertMessageTrait (orig )
208+ if trait != nil {
209+ target .Value .Traits = append (target .Value .Traits , trait )
221210 }
222- target .Value .Traits = append (target .Value .Traits , trait )
223211 }
224212 }
225213 return target
226214}
227215
228- func convertMessageTrait (trait * MessageTrait ) * asyncapi3.MessageTraitRef {
229- target := & asyncapi3.MessageTrait {
230- Name : trait .Name ,
231- Title : trait .Title ,
232- Summary : trait .Summary ,
233- Description : trait .Description ,
234- ContentType : trait .ContentType ,
235- Bindings : convertMessageBinding (trait .Bindings ),
216+ func convertMessageTrait (trait * MessageTraitRef ) * asyncapi3.MessageTraitRef {
217+ target := & asyncapi3.MessageTraitRef {
218+ Reference : dynamic.Reference [* asyncapi3.MessageTraitRef ]{Ref : trait .Ref },
236219 }
237220
238- if trait .Headers != nil && trait .Headers .Value != nil {
239- target .Headers = trait .Headers
221+ if trait .Value != nil {
222+ target .Value = & asyncapi3.MessageTrait {
223+ Name : trait .Value .Name ,
224+ Title : trait .Value .Title ,
225+ Summary : trait .Value .Summary ,
226+ Description : trait .Value .Description ,
227+ ContentType : trait .Value .ContentType ,
228+ Bindings : convertMessageBinding (trait .Value .Bindings ),
229+ }
230+ if trait .Value .Headers != nil && trait .Value .Headers .Value != nil {
231+ target .Value .Headers = trait .Value .Headers
232+ }
240233 }
241- return & asyncapi3.MessageTraitRef {Value : target }
234+
235+ return target
242236}
243237
244238func convertParameters (channel * asyncapi3.Channel , params map [string ]* ParameterRef ) error {
@@ -251,7 +245,7 @@ func convertParameters(channel *asyncapi3.Channel, params map[string]*ParameterR
251245
252246 for name , orig := range params {
253247 if len (orig .Ref ) > 0 {
254- channel .Parameters [name ] = & asyncapi3.ParameterRef {Reference : dynamic.Reference {Ref : orig .Ref }}
248+ channel .Parameters [name ] = & asyncapi3.ParameterRef {Reference : dynamic.Reference [ * asyncapi3. ParameterRef ] {Ref : orig .Ref }}
255249 }
256250 if orig .Value != nil {
257251 p , err := convertParameter (name , orig .Value )
@@ -308,17 +302,15 @@ func convertServers(cfg *asyncapi3.Config, servers map[string]*ServerRef) {
308302 }
309303
310304 for name , orig := range servers {
311- if len (orig .Ref ) > 0 {
312- cfg .Servers .Set (name , & asyncapi3.ServerRef {Reference : dynamic.Reference {Ref : orig .Ref }})
313- }
314- if orig .Value != nil {
315- cfg .Servers .Set (name , convertServer (orig ))
305+ if orig == nil {
306+ continue
316307 }
308+ cfg .Servers .Set (name , convertServer (orig ))
317309 }
318310}
319311
320312func convertServer (ref * ServerRef ) * asyncapi3.ServerRef {
321- result := & asyncapi3.ServerRef {Reference : dynamic.Reference {Ref : ref .Ref }}
313+ result := & asyncapi3.ServerRef {Reference : dynamic.Reference [ * asyncapi3. ServerRef ] {Ref : ref .Ref }}
322314
323315 if ref .Value != nil {
324316 target := & asyncapi3.Server {
@@ -440,7 +432,7 @@ func convertComponents(c *Components, config *asyncapi3.Config) (*asyncapi3.Comp
440432 target .Parameters = map [string ]* asyncapi3.ParameterRef {}
441433 }
442434 if len (orig .Ref ) > 0 {
443- target .Parameters [name ] = & asyncapi3.ParameterRef {Reference : dynamic.Reference {Ref : orig .Ref }}
435+ target .Parameters [name ] = & asyncapi3.ParameterRef {Reference : dynamic.Reference [ * asyncapi3. ParameterRef ] {Ref : orig .Ref }}
444436 }
445437 if orig .Value != nil {
446438 p , err := convertParameter (name , orig .Value )
@@ -455,12 +447,7 @@ func convertComponents(c *Components, config *asyncapi3.Config) (*asyncapi3.Comp
455447 if target .MessageTraits == nil {
456448 target .MessageTraits = map [string ]* asyncapi3.MessageTraitRef {}
457449 }
458- if len (orig .Ref ) > 0 {
459- target .MessageTraits [name ] = & asyncapi3.MessageTraitRef {Reference : dynamic.Reference {Ref : orig .Ref }}
460- }
461- if orig .Value != nil {
462- target .MessageTraits [name ] = convertMessageTrait (orig .Value )
463- }
450+ target .MessageTraits [name ] = convertMessageTrait (orig )
464451 }
465452
466453 return target , nil
0 commit comments