From cd79ae1ab4a595eb391b5111d437948da7ffd152 Mon Sep 17 00:00:00 2001 From: Jason Gavris Date: Fri, 1 Jul 2016 10:25:36 -0400 Subject: [PATCH] [Swift] Add support for NSUUID --- .../swagger/codegen/languages/SwiftCodegen.java | 2 ++ .../src/main/resources/swift/Extensions.mustache | 6 ++++++ .../src/main/resources/swift/Models.mustache | 3 +++ .../io/swagger/codegen/swift/SwiftModelTest.java | 15 +++++++++++++-- .../Classes/Swaggers/Extensions.swift | 6 ++++++ .../PetstoreClient/Classes/Swaggers/Models.swift | 3 +++ 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java index f23cf72d502..214eca994ef 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java @@ -88,6 +88,7 @@ public SwiftCodegen() { Arrays.asList( "NSDate", "NSURL", // for file + "NSUUID", "Array", "Dictionary", "Set", @@ -131,6 +132,7 @@ public SwiftCodegen() { // mapped to String as a workaround typeMapping.put("binary", "String"); typeMapping.put("ByteArray", "String"); + typeMapping.put("UUID", "NSUUID"); importMapping = new HashMap(); diff --git a/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache b/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache index fce415ddcbf..7fbfa50b28d 100644 --- a/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache +++ b/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache @@ -73,6 +73,12 @@ extension NSDate: JSONEncodable { } } +extension NSUUID: JSONEncodable { + func encodeToJSON() -> AnyObject { + return self.UUIDString + } +} + {{#usePromiseKit}}extension RequestBuilder { public func execute() -> Promise> { let deferred = Promise>.pendingPromise() diff --git a/modules/swagger-codegen/src/main/resources/swift/Models.mustache b/modules/swagger-codegen/src/main/resources/swift/Models.mustache index 17b9c2cd276..4e858493e20 100644 --- a/modules/swagger-codegen/src/main/resources/swift/Models.mustache +++ b/modules/swagger-codegen/src/main/resources/swift/Models.mustache @@ -62,6 +62,9 @@ class Decoders { if T.self is Int64.Type && source is NSNumber { return source.longLongValue as! T; } + if T.self is NSUUID.Type && source is String { + return NSUUID(UUIDString: source as! String) as! T + } if source is T { return source as! T } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift/SwiftModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift/SwiftModelTest.java index eb2c18a40db..c925535403a 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift/SwiftModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift/SwiftModelTest.java @@ -18,6 +18,7 @@ public void simpleModelTest() { .property("id", new LongProperty()) .property("name", new StringProperty()) .property("createdAt", new DateTimeProperty()) + .property("uuid", new UUIDProperty()) .required("id") .required("name") .discriminator("test"); @@ -27,7 +28,7 @@ public void simpleModelTest() { Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); - Assert.assertEquals(cm.vars.size(), 3); + Assert.assertEquals(cm.vars.size(), 4); Assert.assertEquals(cm.discriminator,"test"); final CodegenProperty property1 = cm.vars.get(0); @@ -58,9 +59,19 @@ public void simpleModelTest() { Assert.assertEquals(property3.name, "createdAt"); Assert.assertNull(property3.defaultValue); Assert.assertEquals(property3.baseType, "NSDate"); - Assert.assertNull(property3.hasMore); + Assert.assertTrue(property3.hasMore); Assert.assertNull(property3.required); Assert.assertTrue(property3.isNotContainer); + + final CodegenProperty property4 = cm.vars.get(3); + Assert.assertEquals(property4.baseName, "uuid"); + Assert.assertEquals(property4.datatype, "NSUUID"); + Assert.assertEquals(property4.name, "uuid"); + Assert.assertNull(property4.defaultValue); + Assert.assertEquals(property4.baseType, "NSUUID"); + Assert.assertNull(property4.hasMore); + Assert.assertNull(property4.required); + Assert.assertTrue(property4.isNotContainer); } } diff --git a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift index 786e3218c80..f93d41600f4 100644 --- a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift +++ b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift @@ -72,4 +72,10 @@ extension NSDate: JSONEncodable { } } +extension NSUUID: JSONEncodable { + func encodeToJSON() -> AnyObject { + return self.UUIDString + } +} + diff --git a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Models.swift b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Models.swift index cad60a236a7..15a835a974e 100644 --- a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Models.swift +++ b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Models.swift @@ -62,6 +62,9 @@ class Decoders { if T.self is Int64.Type && source is NSNumber { return source.longLongValue as! T; } + if T.self is NSUUID.Type && source is String { + return NSUUID(UUIDString: source as! String) as! T + } if source is T { return source as! T }