Skip to content

Commit b54e0ef

Browse files
authored
fix: correctly handle nillable complex attributes that have a Get method (#114)
1 parent 0e1a815 commit b54e0ef

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

templates/go/model_simple.mustache

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func New{{classname}}WithDefaults() *{{classname}} {
120120
// Deprecated
121121
{{/deprecated}}
122122
func (o *{{classname}}) Get{{name}}() *{{#isNumber}}float64{{/isNumber}}{{#isFloat}}float64{{/isFloat}}{{#isDouble}}float64{{/isDouble}}{{#isInteger}}int64{{/isInteger}}{{#isLong}}int64{{/isLong}}{{^isNumeric}}{{vendorExtensions.x-go-base-type}}{{/isNumeric}} {
123-
if o == nil{{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
123+
if o == nil|| IsNil(o.{{name}}) {{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
124124
var ret *{{#isNumber}}float64{{/isNumber}}{{#isFloat}}float64{{/isFloat}}{{#isDouble}}float64{{/isDouble}}{{#isInteger}}int64{{/isInteger}}{{#isLong}}int64{{/isLong}}{{^isNumeric}}{{vendorExtensions.x-go-base-type}}{{/isNumeric}}
125125
return ret
126126
}
@@ -178,6 +178,9 @@ func (o *{{classname}}) Set{{name}}(v *{{#isNumber}}float64{{/isNumber}}{{#isFlo
178178
o.{{name}} = v
179179
{{/vendorExtensions.x-golang-is-container}}
180180
{{^vendorExtensions.x-golang-is-container}}
181+
if IsNil(o.{{name}}) {
182+
o.{{name}} = new({{dataType}})
183+
}
181184
o.{{name}}.Set(&v)
182185
{{/vendorExtensions.x-golang-is-container}}
183186
{{/isNullable}}
@@ -193,7 +196,7 @@ func (o *{{classname}}) Set{{name}}(v *{{#isNumber}}float64{{/isNumber}}{{#isFlo
193196
// Deprecated
194197
{{/deprecated}}
195198
func (o *{{classname}}) Get{{name}}() *{{#isNumber}}float64{{/isNumber}}{{#isFloat}}float64{{/isFloat}}{{#isDouble}}float64{{/isDouble}}{{#isInteger}}int64{{/isInteger}}{{#isLong}}int64{{/isLong}}{{^isNumeric}}{{vendorExtensions.x-go-base-type}}{{/isNumeric}} {
196-
if o == nil{{^isNullable}} || IsNil(o.{{name}}){{/isNullable}}{{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || IsNil(o.{{name}}.Get()){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
199+
if o == nil || IsNil(o.{{name}}) {{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || IsNil(o.{{name}}.Get()){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
197200
var ret *{{#isNumber}}float64{{/isNumber}}{{#isFloat}}float64{{/isFloat}}{{#isDouble}}float64{{/isDouble}}{{#isInteger}}int64{{/isInteger}}{{#isLong}}int64{{/isLong}}{{^isNumeric}}{{vendorExtensions.x-go-base-type}}{{/isNumeric}}
198201
return ret
199202
}
@@ -219,7 +222,7 @@ func (o *{{classname}}) Get{{name}}() *{{#isNumber}}float64{{/isNumber}}{{#isFlo
219222
// Deprecated
220223
{{/deprecated}}
221224
func (o *{{classname}}) Get{{name}}Ok() (*{{#isNumber}}float64{{/isNumber}}{{#isFloat}}float64{{/isFloat}}{{#isDouble}}float64{{/isDouble}}{{#isInteger}}int64{{/isInteger}}{{#isLong}}int64{{/isLong}}{{^isNumeric}}{{vendorExtensions.x-go-base-type}}{{/isNumeric}}, bool) {
222-
if o == nil{{^isNullable}} || IsNil(o.{{name}}){{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}} || IsNil(o.{{name}}){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
225+
if o == nil || IsNil(o.{{name}}) {
223226
{{^isFreeFormObject}}
224227
return nil, false
225228
{{/isFreeFormObject}}
@@ -242,7 +245,7 @@ func (o *{{classname}}) Get{{name}}Ok() (*{{#isNumber}}float64{{/isNumber}}{{#is
242245

243246
// Has{{name}} returns a boolean if a field has been set.
244247
func (o *{{classname}}) Has{{name}}() bool {
245-
if o != nil && {{^isNullable}}!IsNil(o.{{name}}){{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}!IsNil(o.{{name}}){{/vendorExtensions.x-golang-is-container}}{{^vendorExtensions.x-golang-is-container}}o.{{name}}.IsSet(){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
248+
if o != nil && !IsNil(o.{{name}}) && !IsNil(o.{{name}}) {{#isNullable}}{{^vendorExtensions.x-golang-is-container}}&& o.{{name}}.IsSet(){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
246249
return true
247250
}
248251

@@ -259,6 +262,9 @@ func (o *{{classname}}) Set{{name}}(v *{{#isNumber}}float64{{/isNumber}}{{#isFlo
259262
o.{{name}} = v
260263
{{/vendorExtensions.x-golang-is-container}}
261264
{{^vendorExtensions.x-golang-is-container}}
265+
if IsNil(o.{{name}}) {
266+
o.{{name}} = new({{dataType}})
267+
}
262268
o.{{name}}.Set(v)
263269
{{/vendorExtensions.x-golang-is-container}}
264270
{{/isNullable}}
@@ -270,11 +276,17 @@ func (o *{{classname}}) Set{{name}}(v *{{#isNumber}}float64{{/isNumber}}{{#isFlo
270276
{{^vendorExtensions.x-golang-is-container}}
271277
// Set{{name}}Nil sets the value for {{name}} to be an explicit nil
272278
func (o *{{classname}}) Set{{name}}Nil() {
279+
if IsNil(o.{{name}}) {
280+
o.{{name}} = new({{dataType}})
281+
}
273282
o.{{name}}.Set(nil)
274283
}
275284

276285
// Unset{{name}} ensures that no value is present for {{name}}, not even an explicit nil
277286
func (o *{{classname}}) Unset{{name}}() {
287+
if IsNil(o.{{name}}) {
288+
o.{{name}} = new({{dataType}})
289+
}
278290
o.{{name}}.Unset()
279291
}
280292
{{/vendorExtensions.x-golang-is-container}}

0 commit comments

Comments
 (0)