Skip to content

Commit 1e66f2f

Browse files
authored
[swift][client] fix xcode warning (#13647)
* [swift][client] fix xcode warning * [swift][client] fix xcode warning
1 parent 1235ccd commit 1e66f2f

File tree

23 files changed

+266
-146
lines changed

23 files changed

+266
-146
lines changed

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,20 @@ extension NullEncodable: Codable where Wrapped: Codable {
106106
}
107107
}
108108

109-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} final class RequestTask {
109+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} final class RequestTask{{#useAsyncAwait}}: @unchecked Sendable{{/useAsyncAwait}} {
110+
private var lock = NSRecursiveLock()
110111
{{#useAlamofire}}
111112
private var request: Request?
112113

113114
internal func set(request: Request) {
115+
lock.lock()
116+
defer { lock.unlock() }
114117
self.request = request
115118
}
116119

117120
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func cancel() {
121+
lock.lock()
122+
defer { lock.unlock() }
118123
request?.cancel()
119124
request = nil
120125
}
@@ -123,10 +128,14 @@ extension NullEncodable: Codable where Wrapped: Codable {
123128
private var task: URLSessionTask?
124129

125130
internal func set(task: URLSessionTask) {
131+
lock.lock()
132+
defer { lock.unlock() }
126133
self.task = task
127134
}
128135

129136
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func cancel() {
137+
lock.lock()
138+
defer { lock.unlock() }
130139
task?.cancel()
131140
task = nil
132141
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,8 @@ extension {{projectName}}API {
211211
{{/isDeprecated}}
212212
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
213213
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}[{{enumName}}_{{operationId}}]{{/isContainer}}{{^isContainer}}{{enumName}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) async throws{{#returnType}} -> {{{returnType}}}{{#returnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{/returnType}} {
214-
var requestTask: RequestTask?
214+
let requestBuilder = {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}})
215+
let requestTask = requestBuilder.requestTask
215216
return try await withTaskCancellationHandler {
216217
try Task.checkCancellation()
217218
return try await withCheckedThrowingContinuation { continuation in
@@ -220,7 +221,7 @@ extension {{projectName}}API {
220221
return
221222
}
222223

223-
requestTask = {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute { result in
224+
requestBuilder.execute { result in
224225
switch result {
225226
{{#returnType}}
226227
case let .success(response):
@@ -235,8 +236,8 @@ extension {{projectName}}API {
235236
}
236237
}
237238
}
238-
} onCancel: { [requestTask] in
239-
requestTask?.cancel()
239+
} onCancel: {
240+
requestTask.cancel()
240241
}
241242
}
242243
{{/useAsyncAwait}}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,18 @@ open class Response<T> {
107107
}
108108

109109
public final class RequestTask {
110+
private var lock = NSRecursiveLock()
110111
private var request: Request?
111112

112113
internal func set(request: Request) {
114+
lock.lock()
115+
defer { lock.unlock() }
113116
self.request = request
114117
}
115118

116119
public func cancel() {
120+
lock.lock()
121+
defer { lock.unlock() }
117122
request?.cancel()
118123
request = nil
119124
}

samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ open class AnotherFakeAPI {
2020
*/
2121
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2222
open class func call123testSpecialTags(body: Client) async throws -> Client {
23-
var requestTask: RequestTask?
23+
let requestBuilder = call123testSpecialTagsWithRequestBuilder(body: body)
24+
let requestTask = requestBuilder.requestTask
2425
return try await withTaskCancellationHandler {
2526
try Task.checkCancellation()
2627
return try await withCheckedThrowingContinuation { continuation in
@@ -29,7 +30,7 @@ open class AnotherFakeAPI {
2930
return
3031
}
3132

32-
requestTask = call123testSpecialTagsWithRequestBuilder(body: body).execute { result in
33+
requestBuilder.execute { result in
3334
switch result {
3435
case let .success(response):
3536
continuation.resume(returning: response.body)
@@ -38,8 +39,8 @@ open class AnotherFakeAPI {
3839
}
3940
}
4041
}
41-
} onCancel: { [requestTask] in
42-
requestTask?.cancel()
42+
} onCancel: {
43+
requestTask.cancel()
4344
}
4445
}
4546

0 commit comments

Comments
 (0)