Skip to content

Commit b2b0a2a

Browse files
committed
[Swift6] Remove QueryStringEncodable for models
1 parent 28daa68 commit b2b0a2a

485 files changed

Lines changed: 813 additions & 1553 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.

docs/generators/swift6.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
5656
|useBacktickEscapes|Escape reserved words using backticks (default: false)| |false|
5757
|useClasses|Use final classes for models instead of structs (default: false)| |false|
5858
|useCustomDateWithoutTime|Uses a custom type to decode and encode dates without time information to support OpenAPIs date format (default: false)| |false|
59-
|useJsonEncodable|Make models conform to JSONEncodable protocol (default: true)| |true|
6059
|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: true).| |null|
6160
|validatable|Make validation rules and validator for model properties (default: true)| |true|
6261

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ public class Swift6ClientCodegen extends DefaultCodegen implements CodegenConfig
7272
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties";
7373
public static final String HASHABLE_MODELS = "hashableModels";
7474
public static final String IDENTIFIABLE_MODELS = "identifiableModels";
75-
public static final String USE_JSON_ENCODABLE = "useJsonEncodable";
7675
public static final String MAP_FILE_BINARY_TO_DATA = "mapFileBinaryToData";
7776
public static final String USE_CUSTOM_DATE_WITHOUT_TIME = "useCustomDateWithoutTime";
7877
public static final String VALIDATABLE = "validatable";
@@ -114,8 +113,6 @@ public class Swift6ClientCodegen extends DefaultCodegen implements CodegenConfig
114113
protected boolean hashableModels = true;
115114
@Setter
116115
protected boolean identifiableModels = true;
117-
@Setter
118-
protected boolean useJsonEncodable = true;
119116
@Getter
120117
@Setter
121118
protected boolean mapFileBinaryToData = false;
@@ -335,10 +332,6 @@ public Swift6ClientCodegen() {
335332
"Make models conform to Identifiable when an id is present (default: true)")
336333
.defaultValue(Boolean.TRUE.toString()));
337334

338-
cliOptions.add(new CliOption(USE_JSON_ENCODABLE,
339-
"Make models conform to JSONEncodable protocol (default: true)")
340-
.defaultValue(Boolean.TRUE.toString()));
341-
342335
cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_DATA,
343336
"Map File and Binary to Data (default: false)")
344337
.defaultValue(Boolean.FALSE.toString()));
@@ -560,11 +553,6 @@ public void processOpts() {
560553
}
561554
additionalProperties.put(IDENTIFIABLE_MODELS, identifiableModels);
562555

563-
if (additionalProperties.containsKey(USE_JSON_ENCODABLE)) {
564-
setUseJsonEncodable(convertPropertyToBooleanAndWriteBack(USE_JSON_ENCODABLE));
565-
}
566-
additionalProperties.put(USE_JSON_ENCODABLE, useJsonEncodable);
567-
568556
if (additionalProperties.containsKey(MAP_FILE_BINARY_TO_DATA)) {
569557
setMapFileBinaryToData(convertPropertyToBooleanAndWriteBack(MAP_FILE_BINARY_TO_DATA));
570558
}

modules/openapi-generator/src/main/resources/swift6/APIHelper.mustache

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import Foundation{{#useVapor}}
88
import Vapor{{/useVapor}}
99

1010
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct APIHelper {
11-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNil(_ source: [String: (any Sendable)?]) -> [String: any Sendable]? {
12-
let destination = source.reduce(into: [String: any Sendable]()) { result, item in
11+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNil<Key, Value>(_ source: [Key: Value?]) -> [Key: Value]? {
12+
let destination = source.reduce(into: [Key: Value]()) { result, item in
1313
if let value = item.value {
1414
result[item.key] = value
1515
}
@@ -21,7 +21,7 @@ import Vapor{{/useVapor}}
2121
return destination
2222
}
2323

24-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNilHeaders(_ source: [String: (any Sendable)?]) -> [String: String] {
24+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] {
2525
return source.reduce(into: [String: String]()) { result, item in
2626
if let collection = item.value as? [Any?] {
2727
result[item.key] = collection
@@ -33,21 +33,6 @@ import Vapor{{/useVapor}}
3333
}
3434
}
3535

36-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func convertBoolToString(_ source: [String: any Sendable]?) -> [String: any Sendable]? {
37-
guard let source = source else {
38-
return nil
39-
}
40-
41-
return source.reduce(into: [String: any Sendable]()) { result, item in
42-
switch item.value {
43-
case let x as Bool:
44-
result[item.key] = x.description
45-
default:
46-
result[item.key] = item.value
47-
}
48-
}
49-
}
50-
5136
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func convertAnyToString(_ value: Any?) -> String? {
5237
guard let value = value else { return nil }
5338
if let value = value as? any RawRepresentable {

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

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,57 +11,34 @@ import FoundationNetworking
1111
@preconcurrency import PromiseKit{{/usePromiseKit}}{{#useVapor}}
1212
import Vapor{{/useVapor}}{{^useVapor}}
1313

14-
extension QueryStringEncodable {
15-
@_disfavoredOverload
16-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
17-
}
18-
19-
extension Bool: QueryStringEncodable {
20-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
21-
}
22-
23-
extension Float: QueryStringEncodable {
24-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
25-
}
26-
27-
extension Int: QueryStringEncodable {
28-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
29-
}
30-
31-
extension Int32: QueryStringEncodable {
32-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
33-
}
34-
35-
extension Int64: QueryStringEncodable {
36-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
37-
}
38-
39-
extension Double: QueryStringEncodable {
40-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
41-
}
14+
extension Bool: QueryStringEncodable {}
15+
extension Float: QueryStringEncodable {}
16+
extension Int: QueryStringEncodable {}
17+
extension Int32: QueryStringEncodable {}
18+
extension Int64: QueryStringEncodable {}
19+
extension Double: QueryStringEncodable {}
20+
extension String: QueryStringEncodable {}
4221

4322
extension Decimal: QueryStringEncodable {
4423
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
4524
}
46-
47-
extension String: QueryStringEncodable {
25+
extension URL: QueryStringEncodable {
4826
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
4927
}
50-
51-
extension URL: QueryStringEncodable {
28+
extension UUID: QueryStringEncodable {
5229
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
5330
}
5431

55-
extension UUID: QueryStringEncodable {
32+
extension LosslessStringConvertible where Self: QueryStringEncodable {
5633
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
5734
}
5835

59-
extension RawRepresentable where RawValue: QueryStringEncodable {
36+
extension RawRepresentable where Self: CaseIterable, RawValue: QueryStringEncodable {
6037
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: rawValue) }
6138
}
6239

6340
private func encodeIfPossible<T>(_ object: T, codableHelper: CodableHelper) -> String {
64-
if let encodableObject = object as? QueryStringEncodable {
41+
if let encodableObject = object as? any QueryStringEncodable {
6542
return encodableObject.encodeToQueryString(codableHelper: codableHelper)
6643
} else {
6744
return String(describing: object)
@@ -100,15 +77,6 @@ extension Date: QueryStringEncodable {
10077
func encodeToQueryString(codableHelper: CodableHelper) -> String {
10178
return codableHelper.dateFormatter.string(from: self)
10279
}
103-
}
104-
105-
extension QueryStringEncodable where Self: Encodable {
106-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
107-
guard let data = try? codableHelper.jsonEncoder.encode(self) else {
108-
fatalError("Could not encode to json: \(self)")
109-
}
110-
return data.encodeToQueryString(codableHelper: codableHelper)
111-
}
11280
}{{/useVapor}}{{#generateModelAdditionalProperties}}
11381

11482
extension String: @retroactive CodingKey {

modules/openapi-generator/src/main/resources/swift6/api.mustache

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,8 +301,7 @@ extension {{projectName}}API {
301301
{{/formParams}}
302302
]
303303

304-
let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams)
305-
let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters)
304+
let localVariableParameters = APIHelper.rejectNil(localVariableFormParams)
306305
{{/hasFormParams}}
307306
{{^hasFormParams}}
308307
let localVariableParameters: [String: any Sendable]? = nil

modules/openapi-generator/src/main/resources/swift6/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}}, Sendable, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{^isString}}{{^isInteger}}{{^isFloat}}{{^isDouble}}{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}}{{/isDouble}}{{/isFloat}}{{/isInteger}}{{/isString}}{{/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}}, Sendable, QueryStringEncodable, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{/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/swift6/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}}, Sendable, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{^isContainer}}{{^isString}}{{^isInteger}}{{^isFloat}}{{^isDouble}}{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}}{{/isDouble}}{{/isFloat}}{{/isInteger}}{{/isString}}{{/isContainer}}{{/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}}, Sendable, QueryStringEncodable, {{#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}} {
22
{{#allowableValues}}
33
{{#enumVars}}
44
case {{{name}}} = {{{value}}}

modules/openapi-generator/src/main/resources/swift6/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}}}: {{^useClasses}}Sendable, {{/useClasses}}{{#useClasses}}{{#readonlyProperties}}@unchecked Sendable, {{/readonlyProperties}}{{/useClasses}}{{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}}{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
2-
{{/objcCompatible}}{{#objcCompatible}}@objcMembers {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}} {
1+
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{^useClasses}}Sendable, {{/useClasses}}{{#useClasses}}{{#readonlyProperties}}@unchecked Sendable, {{/readonlyProperties}}{{/useClasses}}{{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
2+
{{/objcCompatible}}{{#objcCompatible}}@objcMembers {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable {
33
{{/objcCompatible}}
44

55
{{#allVars}}

modules/openapi-generator/src/main/resources/swift6/modelOneOf.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}}: {{^useClasses}}Sendable, {{/useClasses}}{{#useClasses}}{{#readonlyProperties}}Sendable, {{/readonlyProperties}}{{/useClasses}}{{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}}{{/useVapor}} {
1+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{^useClasses}}Sendable, {{/useClasses}}{{#useClasses}}{{#readonlyProperties}}Sendable, {{/readonlyProperties}}{{/useClasses}}{{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}}{{/useVapor}} {
22
{{#oneOf}}
33
case type{{#transformArrayType}}{{.}}{{/transformArrayType}}({{.}})
44
{{/oneOf}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift6ClientCodegenOptionsProvider.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public class Swift6ClientCodegenOptionsProvider implements OptionsProvider {
4848
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE = "true";
4949
public static final String HASHABLE_MODELS_VALUE = "true";
5050
public static final String IDENTIFIABLE_MODELS_VALUE = "true";
51-
public static final String USE_JSON_ENCODABLE_VALUE = "true";
5251
public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false";
5352
public static final String PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = "true";
5453
public static final String LIBRARY_VALUE = "alamofire";
@@ -99,7 +98,6 @@ public Map<String, String> createOptions() {
9998
GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE)
10099
.put(Swift6ClientCodegen.HASHABLE_MODELS, HASHABLE_MODELS_VALUE)
101100
.put(Swift6ClientCodegen.IDENTIFIABLE_MODELS, IDENTIFIABLE_MODELS_VALUE)
102-
.put(Swift6ClientCodegen.USE_JSON_ENCODABLE, USE_JSON_ENCODABLE_VALUE)
103101
.put(Swift6ClientCodegen.MAP_FILE_BINARY_TO_DATA, "false")
104102
.put(Swift6ClientCodegen.USE_CUSTOM_DATE_WITHOUT_TIME, "false")
105103
.put(Swift6ClientCodegen.VALIDATABLE, "true")

0 commit comments

Comments
 (0)