Skip to content

Commit a56d9e9

Browse files
authored
Merge branch 'master' into typescript-date-format
2 parents 1c3984a + 46c4663 commit a56d9e9

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

modules/swagger-codegen/src/main/resources/swift4/AlamofireImplementations.mustache

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ class AlamofireRequestBuilderFactory: RequestBuilderFactory {
2020
// Store manager to retain its reference
2121
private var managerStore: [String: Alamofire.SessionManager] = [:]
2222

23+
// Sync queue to manage safe access to the store manager
24+
private let syncQueue = DispatchQueue(label: "thread-safe-sync-queue", attributes: .concurrent)
25+
2326
open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
2427
required public init(method: String, URLString: String, parameters: [String : Any]?, isBody: Bool, headers: [String : String] = [:]) {
2528
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers)
@@ -58,7 +61,9 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
5861
let managerId:String = UUID().uuidString
5962
// Create a new manager for each request to customize its request header
6063
let manager = createSessionManager()
61-
managerStore[managerId] = manager
64+
syncQueue.async(flags: .barrier) {
65+
managerStore[managerId] = manager
66+
}
6267

6368
let encoding:ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding()
6469

@@ -112,7 +117,9 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
112117
}
113118

114119
let cleanupRequest = {
115-
_ = managerStore.removeValue(forKey: managerId)
120+
syncQueue.async(flags: .barrier) {
121+
_ = managerStore.removeValue(forKey: managerId)
122+
}
116123
}
117124

118125
let validatedRequest = request.validate()
@@ -314,7 +321,9 @@ open class AlamofireDecodableRequestBuilder<T:Decodable>: AlamofireRequestBuilde
314321
}
315322

316323
let cleanupRequest = {
317-
_ = managerStore.removeValue(forKey: managerId)
324+
syncQueue.async(flags: .barrier) {
325+
_ = managerStore.removeValue(forKey: managerId)
326+
}
318327
}
319328

320329
let validatedRequest = request.validate()

modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/CodegenIgnoreProcessorTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.io.IOException;
1313
import java.nio.file.Files;
1414
import java.nio.file.Path;
15+
import java.util.concurrent.ConcurrentLinkedQueue;
1516

1617
public class CodegenIgnoreProcessorTest {
1718

@@ -25,6 +26,7 @@ public class CodegenIgnoreProcessorTest {
2526
private String outputDir;
2627
private File target;
2728
private Path temp;
29+
private static final ConcurrentLinkedQueue<Path> tempQueue = new ConcurrentLinkedQueue<>();
2830

2931
private CodegenIgnoreProcessorTest(String filename, String ignoreDefinition, String description) throws IOException {
3032
this.filename = filename;
@@ -51,6 +53,7 @@ private void prepareTestFiles() throws IOException {
5153
// NOTE: Each test needs its own directory because .swagger-codegen-ignore needs to exist at the root.
5254
temp = Files.createTempDirectory(getClass().getSimpleName());
5355
this.outputDir = temp.toFile().getAbsolutePath();
56+
tempQueue.add(temp);
5457

5558
target = new File(this.outputDir, this.filename);
5659

@@ -73,9 +76,11 @@ private void prepareTestFiles() throws IOException {
7376

7477
@AfterTest
7578
public void afterTest() throws IOException {
76-
if(temp != null && temp.toFile().exists() && temp.toFile().isDirectory()) {
77-
FileUtils.deleteDirectory(temp.toFile());
78-
}
79+
Path t;
80+
while ((t = tempQueue.poll()) != null)
81+
if(t != null && t.toFile().exists() && t.toFile().isDirectory()) {
82+
FileUtils.deleteDirectory(t.toFile());
83+
}
7984
}
8085

8186
@Test

0 commit comments

Comments
 (0)