Skip to content

Commit

Permalink
Make moduleObject.mustache confirms to JSONEncodable. (#11202)
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
0x0c authored Jan 9, 2022
1 parent 1343024 commit febf496
Show file tree
Hide file tree
Showing 521 changed files with 709 additions and 505 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ extension Date: JSONEncodable {
func encodeToJSON() -> Any {
return CodableHelper.dateFormatter.string(from: self)
}
}

extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()
}
}{{/useVapor}}{{#generateModelAdditionalProperties}}

extension String: CodingKey {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{#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}} {
{{#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}} {
{{#allowableValues}}
{{#enumVars}}
case {{{name}}} = {{{value}}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{#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}} {
{{#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}} {
{{#allowableValues}}
{{#enumVars}}
case {{{name}}} = {{{value}}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{{^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}} {
{{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable {
{{^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}} {
{{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable, JSONEncodable {
{{/objcCompatible}}

{{#allVars}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
public enum {{classname}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}}{{/useVapor}} {
public enum {{classname}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable, JSONEncodable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}}{{/useVapor}} {
{{#oneOf}}
case type{{.}}({{.}})
{{/oneOf}}
Expand Down
44 changes: 44 additions & 0 deletions modules/openapi-generator/src/test/resources/jsoncodable.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
openapi: 3.0.0
info:
title: test
version: '1.0'
servers:
- url: 'http://localhost:3000'
paths:
/postModel:
post:
summary: Create New User
operationId: post-user
responses:
'200':
description: User Created
content:
application/json:
schema:
$ref: '#/components/schemas/User'
examples: {}
'400':
description: Missing Required Information
description: Create a new user.
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/Request'
parameters: []
components:
schemas:
User:
title: User
type: object
description: ''
x-examples: {}
properties:
integerValue:
type: integer
Request:
title: Request
type: object
properties:
user1:
$ref: '#/components/schemas/User'
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ extension Date: JSONEncodable {
}
}

extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()
}
}

extension String: CodingKey {

public var stringValue: String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct AdditionalPropertiesClass: Codable, Hashable {
public struct AdditionalPropertiesClass: Codable, JSONEncodable, Hashable {

public var mapString: [String: String]?
public var mapMapString: [String: [String: String]]?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Animal: Codable, Hashable {
public struct Animal: Codable, JSONEncodable, Hashable {

public var className: String
public var color: String? = "red"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct ApiResponse: Codable, Hashable {
public struct ApiResponse: Codable, JSONEncodable, Hashable {

public var code: Int?
public var type: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct ArrayOfArrayOfNumberOnly: Codable, Hashable {
public struct ArrayOfArrayOfNumberOnly: Codable, JSONEncodable, Hashable {

public var arrayArrayNumber: [[Double]]?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct ArrayOfNumberOnly: Codable, Hashable {
public struct ArrayOfNumberOnly: Codable, JSONEncodable, Hashable {

public var arrayNumber: [Double]?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct ArrayTest: Codable, Hashable {
public struct ArrayTest: Codable, JSONEncodable, Hashable {

public var arrayOfString: [String]?
public var arrayArrayOfInteger: [[Int64]]?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Capitalization: Codable, Hashable {
public struct Capitalization: Codable, JSONEncodable, Hashable {

public var smallCamel: String?
public var capitalCamel: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Cat: Codable, Hashable {
public struct Cat: Codable, JSONEncodable, Hashable {

public var className: String
public var color: String? = "red"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct CatAllOf: Codable, Hashable {
public struct CatAllOf: Codable, JSONEncodable, Hashable {

public var declawed: Bool?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Category: Codable, Hashable {
public struct Category: Codable, JSONEncodable, Hashable {

public var id: Int64?
public var name: String? = "default-name"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import AnyCodable
#endif

/** Model for testing model with \"_class\" property */
public struct ClassModel: Codable, Hashable {
public struct ClassModel: Codable, JSONEncodable, Hashable {

public var _class: String?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Client: Codable, Hashable {
public struct Client: Codable, JSONEncodable, Hashable {

public var client: String?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Dog: Codable, Hashable {
public struct Dog: Codable, JSONEncodable, Hashable {

public var className: String
public var color: String? = "red"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct DogAllOf: Codable, Hashable {
public struct DogAllOf: Codable, JSONEncodable, Hashable {

public var breed: String?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct EnumArrays: Codable, Hashable {
public struct EnumArrays: Codable, JSONEncodable, Hashable {

public enum JustSymbol: String, Codable, CaseIterable {
case greaterThanOrEqualTo = ">="
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct EnumTest: Codable, Hashable {
public struct EnumTest: Codable, JSONEncodable, Hashable {

public enum EnumString: String, Codable, CaseIterable {
case upper = "UPPER"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import AnyCodable
#endif

/** Must be named `File` for test. */
public struct File: Codable, Hashable {
public struct File: Codable, JSONEncodable, Hashable {

/** Test capitalization */
public var sourceURI: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct FileSchemaTestClass: Codable, Hashable {
public struct FileSchemaTestClass: Codable, JSONEncodable, Hashable {

public var file: File?
public var files: [File]?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct FormatTest: Codable, Hashable {
public struct FormatTest: Codable, JSONEncodable, Hashable {

public var integer: Int?
public var int32: Int?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct HasOnlyReadOnly: Codable, Hashable {
public struct HasOnlyReadOnly: Codable, JSONEncodable, Hashable {

public var bar: String?
public var foo: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct List: Codable, Hashable {
public struct List: Codable, JSONEncodable, Hashable {

public var _123list: String?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct MapTest: Codable, Hashable {
public struct MapTest: Codable, JSONEncodable, Hashable {

public enum MapOfEnumString: String, Codable, CaseIterable {
case upper = "UPPER"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable {
public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, JSONEncodable, Hashable {

public var uuid: UUID?
public var dateTime: Date?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import AnyCodable
#endif

/** Model for testing model name starting with number */
public struct Model200Response: Codable, Hashable {
public struct Model200Response: Codable, JSONEncodable, Hashable {

public var name: Int?
public var _class: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import AnyCodable
#endif

/** Model for testing model name same as property name */
public struct Name: Codable, Hashable {
public struct Name: Codable, JSONEncodable, Hashable {

public var name: Int
public var snakeCase: NullEncodable<Int> = .encodeValue(11033)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct NumberOnly: Codable, Hashable {
public struct NumberOnly: Codable, JSONEncodable, Hashable {

public var justNumber: Double?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Order: Codable, Hashable {
public struct Order: Codable, JSONEncodable, Hashable {

public enum Status: String, Codable, CaseIterable {
case placed = "placed"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct OuterComposite: Codable, Hashable {
public struct OuterComposite: Codable, JSONEncodable, Hashable {

public var myNumber: Double?
public var myString: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct Pet: Codable, Hashable {
public struct Pet: Codable, JSONEncodable, Hashable {

public enum Status: String, Codable, CaseIterable {
case available = "available"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct ReadOnlyFirst: Codable, Hashable {
public struct ReadOnlyFirst: Codable, JSONEncodable, Hashable {

public var bar: String?
public var baz: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import AnyCodable
#endif

/** Model for testing reserved words */
public struct Return: Codable, Hashable {
public struct Return: Codable, JSONEncodable, Hashable {

public var _return: Int?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import AnyCodable
#endif

public struct SpecialModelName: Codable, Hashable {
public struct SpecialModelName: Codable, JSONEncodable, Hashable {

public var specialPropertyName: Int64?

Expand Down
Loading

0 comments on commit febf496

Please sign in to comment.