Skip to content

Commit d4f1c4b

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

485 files changed

Lines changed: 827 additions & 1651 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: 13 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,52 +16,23 @@ extension QueryStringEncodable {
1616
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
1717
}
1818

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-
}
42-
43-
extension Decimal: QueryStringEncodable {
44-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
45-
}
46-
47-
extension String: QueryStringEncodable {
48-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
49-
}
50-
51-
extension URL: QueryStringEncodable {
52-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
53-
}
54-
55-
extension UUID: QueryStringEncodable {
56-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
57-
}
58-
59-
extension RawRepresentable where RawValue: QueryStringEncodable {
19+
extension Bool: QueryStringEncodable {}
20+
extension Float: QueryStringEncodable {}
21+
extension Int: QueryStringEncodable {}
22+
extension Int32: QueryStringEncodable {}
23+
extension Int64: QueryStringEncodable {}
24+
extension Double: QueryStringEncodable {}
25+
extension Decimal: QueryStringEncodable {}
26+
extension String: QueryStringEncodable {}
27+
extension URL: QueryStringEncodable {}
28+
extension UUID: QueryStringEncodable {}
29+
30+
extension RawRepresentable where Self: CaseIterable, RawValue: QueryStringEncodable {
6031
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: rawValue) }
6132
}
6233

6334
private func encodeIfPossible<T>(_ object: T, codableHelper: CodableHelper) -> String {
64-
if let encodableObject = object as? QueryStringEncodable {
35+
if let encodableObject = object as? any QueryStringEncodable {
6536
return encodableObject.encodeToQueryString(codableHelper: codableHelper)
6637
} else {
6738
return String(describing: object)
@@ -100,15 +71,6 @@ extension Date: QueryStringEncodable {
10071
func encodeToQueryString(codableHelper: CodableHelper) -> String {
10172
return codableHelper.dateFormatter.string(from: self)
10273
}
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-
}
11274
}{{/useVapor}}{{#generateModelAdditionalProperties}}
11375

11476
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)