forked from loafle/openapi-generator-original
fix(swift3): fix infinite loop with inheritance and check if parent decoder exists before calling (#5416)
This commit is contained in:
parent
6359c064f3
commit
edb80df0ba
@ -179,7 +179,7 @@ class Decoders {
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
{{#discriminator}}
|
||||
// Check discriminator to support inheritance
|
||||
if let discriminator = sourceDictionary["{{discriminator}}"] as? String, discriminator != "{{classname}}"{
|
||||
if let discriminator = sourceDictionary["{{discriminator}}"] as? String, instance == nil && discriminator != "{{classname}}" {
|
||||
return Decoders.decode(clazz: {{classname}}.self, discriminator: discriminator, source: source)
|
||||
}
|
||||
{{/discriminator}}
|
||||
@ -197,7 +197,9 @@ class Decoders {
|
||||
{{^unwrapRequired}}
|
||||
let result = instance == nil ? {{classname}}() : instance as! {{classname}}
|
||||
{{#parent}}
|
||||
if decoders["\({{parent}}.self)"] != nil {
|
||||
_ = Decoders.decode(clazz: {{parent}}.self, source: source, instance: result)
|
||||
}
|
||||
{{/parent}}
|
||||
{{#allVars}}{{#isEnum}}
|
||||
if let {{name}} = sourceDictionary["{{baseName}}"] as? {{datatype}} { {{^isContainer}}
|
||||
|
@ -173,7 +173,7 @@ class Decoders {
|
||||
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
// Check discriminator to support inheritance
|
||||
if let discriminator = sourceDictionary["className"] as? String, discriminator != "Animal"{
|
||||
if let discriminator = sourceDictionary["className"] as? String, instance == nil && discriminator != "Animal" {
|
||||
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
||||
}
|
||||
|
||||
@ -289,7 +289,9 @@ class Decoders {
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
|
||||
let result = instance == nil ? Cat() : instance as! Cat
|
||||
if decoders["\(Animal.self)"] != nil {
|
||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||
}
|
||||
|
||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||
@ -353,7 +355,9 @@ class Decoders {
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
|
||||
let result = instance == nil ? Dog() : instance as! Dog
|
||||
if decoders["\(Animal.self)"] != nil {
|
||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||
}
|
||||
|
||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||
|
@ -173,7 +173,7 @@ class Decoders {
|
||||
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
// Check discriminator to support inheritance
|
||||
if let discriminator = sourceDictionary["className"] as? String, discriminator != "Animal"{
|
||||
if let discriminator = sourceDictionary["className"] as? String, instance == nil && discriminator != "Animal" {
|
||||
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
||||
}
|
||||
|
||||
@ -289,7 +289,9 @@ class Decoders {
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
|
||||
let result = instance == nil ? Cat() : instance as! Cat
|
||||
if decoders["\(Animal.self)"] != nil {
|
||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||
}
|
||||
|
||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||
@ -353,7 +355,9 @@ class Decoders {
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
|
||||
let result = instance == nil ? Dog() : instance as! Dog
|
||||
if decoders["\(Animal.self)"] != nil {
|
||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||
}
|
||||
|
||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||
|
@ -173,7 +173,7 @@ class Decoders {
|
||||
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
// Check discriminator to support inheritance
|
||||
if let discriminator = sourceDictionary["className"] as? String, discriminator != "Animal"{
|
||||
if let discriminator = sourceDictionary["className"] as? String, instance == nil && discriminator != "Animal" {
|
||||
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
||||
}
|
||||
|
||||
@ -289,7 +289,9 @@ class Decoders {
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
|
||||
let result = instance == nil ? Cat() : instance as! Cat
|
||||
if decoders["\(Animal.self)"] != nil {
|
||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||
}
|
||||
|
||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||
@ -353,7 +355,9 @@ class Decoders {
|
||||
let sourceDictionary = source as! [AnyHashable: Any]
|
||||
|
||||
let result = instance == nil ? Dog() : instance as! Dog
|
||||
if decoders["\(Animal.self)"] != nil {
|
||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||
}
|
||||
|
||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||
|
Loading…
x
Reference in New Issue
Block a user