Skip to content

Commit febf496

Browse files
authored
Make moduleObject.mustache confirms to JSONEncodable. (#11202)
* Make moduleObject.mustache confirms to JSONEncodable. * Regenerate samples * Don't confirm JSONEncodable when using Vapor. * Use CodableHelper.jsonEncoder * Encode `Data` using `encodeToJSON()` * Update sample * Don't extend JSONEncodable when using Vapor. * Add JSONEncodable in moduleEnum, moduleInlineEnumDeclaration, and modelOneOf * Update sample * Remove line break. * Update sample * Revert "Update sample" This reverts commit 6ec206b. * Don't confirm JSONEncodable when enum confirms RawRepresentable. * Update sample * Add space before { * Update sample * Don't confirm JSONEncodable when enum confirms RawRepresentable.
1 parent 1343024 commit febf496

521 files changed

Lines changed: 709 additions & 505 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

modules/openapi-generator/src/main/resources/swift5/Extensions.mustache

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ extension Date: JSONEncodable {
6565
func encodeToJSON() -> Any {
6666
return CodableHelper.dateFormatter.string(from: self)
6767
}
68+
}
69+
70+
extension JSONEncodable where Self: Encodable {
71+
func encodeToJSON() -> Any {
72+
let encoder = CodableHelper.jsonEncoder
73+
guard let data = try? encoder.encode(self) else {
74+
fatalError("Could not encode to json: \(self)")
75+
}
76+
return data.encodeToJSON()
77+
}
6878
}{{/useVapor}}{{#generateModelAdditionalProperties}}
6979

7080
extension String: CodingKey {

modules/openapi-generator/src/main/resources/swift5/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{dataType}}, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{/enumUnknownDefaultCase}} {
1+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{dataType}}, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{^isString}}{{^isInteger}}{{^isFloat}}{{^isDouble}}, JSONEncodable{{/isDouble}}{{/isFloat}}{{/isInteger}}{{/isString}}{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{/enumUnknownDefaultCase}} {
22
{{#allowableValues}}
33
{{#enumVars}}
44
case {{{name}}} = {{{value}}}

modules/openapi-generator/src/main/resources/swift5/modelInlineEnumDeclaration.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{#isContainer}}, CaseIterableDefaultsLast{{/isContainer}}{{/enumUnknownDefaultCase}} {
1+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{^isContainer}}{{^isString}}{{^isInteger}}{{^isFloat}}{{^isDouble}}, JSONEncodable{{/isDouble}}{{/isFloat}}{{/isInteger}}{{/isString}}{{/isContainer}}{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{#isContainer}}, CaseIterableDefaultsLast{{/isContainer}}{{/enumUnknownDefaultCase}} {
22
{{#allowableValues}}
33
{{#enumVars}}
44
case {{{name}}} = {{{value}}}

modules/openapi-generator/src/main/resources/swift5/modelObject.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
2-
{{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable {
1+
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable, JSONEncodable{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
2+
{{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable, JSONEncodable {
33
{{/objcCompatible}}
44

55
{{#allVars}}

modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
public enum {{classname}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}}{{/useVapor}} {
1+
public enum {{classname}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable, JSONEncodable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}}{{/useVapor}} {
22
{{#oneOf}}
33
case type{{.}}({{.}})
44
{{/oneOf}}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
openapi: 3.0.0
2+
info:
3+
title: test
4+
version: '1.0'
5+
servers:
6+
- url: 'http://localhost:3000'
7+
paths:
8+
/postModel:
9+
post:
10+
summary: Create New User
11+
operationId: post-user
12+
responses:
13+
'200':
14+
description: User Created
15+
content:
16+
application/json:
17+
schema:
18+
$ref: '#/components/schemas/User'
19+
examples: {}
20+
'400':
21+
description: Missing Required Information
22+
description: Create a new user.
23+
requestBody:
24+
content:
25+
multipart/form-data:
26+
schema:
27+
$ref: '#/components/schemas/Request'
28+
parameters: []
29+
components:
30+
schemas:
31+
User:
32+
title: User
33+
type: object
34+
description: ''
35+
x-examples: {}
36+
properties:
37+
integerValue:
38+
type: integer
39+
Request:
40+
title: Request
41+
type: object
42+
properties:
43+
user1:
44+
$ref: '#/components/schemas/User'

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ extension Date: JSONEncodable {
6565
}
6666
}
6767

68+
extension JSONEncodable where Self: Encodable {
69+
func encodeToJSON() -> Any {
70+
let encoder = CodableHelper.jsonEncoder
71+
guard let data = try? encoder.encode(self) else {
72+
fatalError("Could not encode to json: \(self)")
73+
}
74+
return data.encodeToJSON()
75+
}
76+
}
77+
6878
extension String: CodingKey {
6979

7080
public var stringValue: String {

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Foundation
1010
import AnyCodable
1111
#endif
1212

13-
public struct AdditionalPropertiesClass: Codable, Hashable {
13+
public struct AdditionalPropertiesClass: Codable, JSONEncodable, Hashable {
1414

1515
public var mapString: [String: String]?
1616
public var mapMapString: [String: [String: String]]?

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Foundation
1010
import AnyCodable
1111
#endif
1212

13-
public struct Animal: Codable, Hashable {
13+
public struct Animal: Codable, JSONEncodable, Hashable {
1414

1515
public var className: String
1616
public var color: String? = "red"

samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Foundation
1010
import AnyCodable
1111
#endif
1212

13-
public struct ApiResponse: Codable, Hashable {
13+
public struct ApiResponse: Codable, JSONEncodable, Hashable {
1414

1515
public var code: Int?
1616
public var type: String?

0 commit comments

Comments
 (0)