From c64f352ba68072b82f323d27cc476ea39c0b95ee Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 1 Dec 2015 17:44:07 +0800 Subject: [PATCH] escape objc special word with var --- .../codegen/languages/ObjcClientCodegen.java | 13 +++++++++++++ .../src/test/resources/2_0/petstore.json | 8 ++++++++ .../client/petstore/objc/SwaggerClient/SWGOrder.h | 4 ++++ .../client/petstore/objc/SwaggerClient/SWGOrder.m | 4 ++-- .../client/petstore/objc/SwaggerClient/SWGPetApi.m | 2 +- 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 4555aa5f216..7037ee06f9b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -34,6 +34,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { protected String authorEmail = "apiteam@swagger.io"; protected String license = "MIT"; protected String gitRepoURL = "https://github.com/swagger-api/swagger-codegen"; + protected String[] specialWords = {"new", "copy"}; public ObjcClientCodegen() { super(); @@ -86,6 +87,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("object", "NSObject"); typeMapping.put("file", "NSURL"); + // ref: http://www.tutorialspoint.com/objective_c/objective_c_basic_syntax.htm reservedWords = new HashSet( Arrays.asList( @@ -375,6 +377,12 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { return name; } + // if name starting with special word, escape with '_' + for(int i =0; i < specialWords.length; i++) { + if (name.matches("(?i:^" + specialWords[i] + ".*)")) + name = escapeSpecialWord(name); + } + // camelize (lower first character) the variable name // e.g. `pet_id` to `petId` name = camelize(name, true); @@ -384,6 +392,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { name = escapeReservedWord(name); } + return name; } @@ -397,6 +406,10 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { return "_" + name; } + public String escapeSpecialWord(String name) { + return "var_" + name; + } + @Override public String toOperationId(String operationId) { // throw exception if method name is empty diff --git a/modules/swagger-codegen/src/test/resources/2_0/petstore.json b/modules/swagger-codegen/src/test/resources/2_0/petstore.json index 66762d74b2b..7c0a3bf67ab 100644 --- a/modules/swagger-codegen/src/test/resources/2_0/petstore.json +++ b/modules/swagger-codegen/src/test/resources/2_0/petstore.json @@ -944,6 +944,14 @@ "type": "integer", "format": "int64" }, + "CopyPassword": { + "type": "integer", + "format": "int64" + }, + "newPassword": { + "type": "integer", + "format": "int64" + }, "petId": { "type": "integer", "format": "int64" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGOrder.h b/samples/client/petstore/objc/SwaggerClient/SWGOrder.h index 48a7cf0d6c1..25f881d95c3 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGOrder.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGOrder.h @@ -17,6 +17,10 @@ @property(nonatomic) NSNumber* _id; +@property(nonatomic) NSNumber* varCopyPassword; + +@property(nonatomic) NSNumber* varNewPassword; + @property(nonatomic) NSNumber* petId; @property(nonatomic) NSNumber* quantity; diff --git a/samples/client/petstore/objc/SwaggerClient/SWGOrder.m b/samples/client/petstore/objc/SwaggerClient/SWGOrder.m index 83fe5741cd7..a120708e22c 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGOrder.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGOrder.m @@ -8,7 +8,7 @@ */ + (JSONKeyMapper *)keyMapper { - return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"petId": @"petId", @"quantity": @"quantity", @"shipDate": @"shipDate", @"status": @"status", @"complete": @"complete" }]; + return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"CopyPassword": @"varCopyPassword", @"newPassword": @"varNewPassword", @"petId": @"petId", @"quantity": @"quantity", @"shipDate": @"shipDate", @"status": @"status", @"complete": @"complete" }]; } /** @@ -18,7 +18,7 @@ */ + (BOOL)propertyIsOptional:(NSString *)propertyName { - NSArray *optionalProperties = @[@"_id", @"petId", @"quantity", @"shipDate", @"status", @"complete"]; + NSArray *optionalProperties = @[@"_id", @"varCopyPassword", @"varNewPassword", @"petId", @"quantity", @"shipDate", @"status", @"complete"]; if ([optionalProperties containsObject:propertyName]) { return YES; diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m index 156700c9a76..bff6c3765b1 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m @@ -450,7 +450,7 @@ static SWGPetApi* singletonAPI = nil; NSString *requestContentType = [SWGApiClient selectHeaderContentType:@[]]; // Authentication setting - NSArray *authSettings = @[@"api_key", @"petstore_auth"]; + NSArray *authSettings = @[@"api_key"]; id bodyParam = nil; NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init];