From 73ad5022514ed1b6954c9a9353533ea4fc98517f Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 3 Sep 2014 01:10:02 -0700 Subject: [PATCH] updated 2.0 support for objc --- .../swagger/codegen/CodegenOperation.java | 4 +- .../swagger/codegen/DefaultCodegen.java | 18 ++++++- .../codegen/languages/ObjcClientCodegen.java | 1 - src/main/resources/objc/api-body.mustache | 53 ++++++++----------- src/main/resources/objc/api-header.mustache | 19 +++---- 5 files changed, 48 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/wordnik/swagger/codegen/CodegenOperation.java b/src/main/java/com/wordnik/swagger/codegen/CodegenOperation.java index 0d23fa86e9a..9c12f229680 100644 --- a/src/main/java/com/wordnik/swagger/codegen/CodegenOperation.java +++ b/src/main/java/com/wordnik/swagger/codegen/CodegenOperation.java @@ -7,7 +7,9 @@ import java.util.*; public class CodegenOperation { - public String path, operationId, returnType, httpMethod, returnBaseType, returnContainer; + public Boolean hasParams, returnTypeIsPrimitive, returnSimpleType; + public String path, operationId, returnType, httpMethod, returnBaseType, returnContainer, + summary, notes; public List> consumes, produces; public List allParams = new ArrayList(); public List bodyParams = new ArrayList(); diff --git a/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java b/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java index f90ddb0897d..fc13d17d164 100644 --- a/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java +++ b/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java @@ -335,6 +335,8 @@ public class DefaultCodegen { operationId = "fixme"; op.path = path; op.operationId = operationId; + op.summary = operation.getSummary(); + op.notes = operation.getDescription(); Response methodResponse = null; @@ -387,13 +389,23 @@ public class DefaultCodegen { op.returnBaseType = innerProperty.datatype; } - else - op.returnBaseType = responseModel.datatype; + else { + op.returnBaseType = responseModel.complexType; + + } op.returnType = responseModel.datatype; if(responseModel.isContainer) op.returnContainer = responseModel.complexType; + else + op.returnSimpleType = true; + if (languageSpecificPrimitives().contains(op.returnBaseType) || op.returnBaseType == null) + op.returnTypeIsPrimitive = true; + } + if(op.returnBaseType == null) { + op.returnTypeIsPrimitive = true; + op.returnSimpleType = true; } List parameters = operation.getParameters(); @@ -477,6 +489,8 @@ public class DefaultCodegen { // legacy support op.nickname = operationId; + if(op.allParams.size() > 0) + op.hasParams = true; return op; } } \ No newline at end of file diff --git a/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java b/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java index a50afe77d69..e0c457dc2fe 100644 --- a/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java +++ b/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java @@ -76,7 +76,6 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { public String getSwaggerType(Property p) { String swaggerType = super.getSwaggerType(p); String type = null; - System.out.println("checking type mapping for " + swaggerType); if(typeMapping.containsKey(swaggerType)) { type = typeMapping.get(swaggerType); if(languageSpecificPrimitives.contains(type) && !foundationClasses.contains(type)) diff --git a/src/main/resources/objc/api-body.mustache b/src/main/resources/objc/api-body.mustache index 18571099c1e..02e25263d8e 100644 --- a/src/main/resources/objc/api-body.mustache +++ b/src/main/resources/objc/api-body.mustache @@ -69,17 +69,15 @@ static NSString * basePath = @"{{basePath}}"; NSString* requestContentType = @"application/json"; NSString* responseContentType = @"application/json"; - NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; {{#queryParams}}if({{paramName}} != nil) - queryParams[@"{{baseName}}"] = {{paramName}}; - {{/queryParams}} - NSMutableDictionary* headerParams = [[NSMutableDictionary alloc] init]; + queryParams[@"{{baseName}}"] = {{paramName}};{{/queryParams}} + NSMutableDictionary* headerParams = [[NSMutableDictionary alloc] init]; {{#headerParams}}if({{paramName}} != nil) - headerParams[@"{{baseName}}"] = {{paramName}}; - {{/headerParams}} + headerParams[@"{{baseName}}"] = {{paramName}};{{/headerParams}} id bodyDictionary = nil; - {{#bodyParam}} + {{#bodyParam}} if(body != nil && [body isKindOfClass:[NSArray class]]){ NSMutableArray * objs = [[NSMutableArray alloc] init]; for (id dict in (NSArray*)body) { @@ -170,22 +168,21 @@ static NSString * basePath = @"{{basePath}}"; {{#returnSimpleType}} {{#returnTypeIsPrimitive}} {{#returnBaseType}} - return [client stringWithCompletionBlock:requestUrl - method:@"{{httpMethod}}" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(nil, error); - return; - } - {{returnBaseType}} *result = data ? [[{{#instantiationType}}NSClassFromString(@"{{{instantiationType}}}") {{/instantiationType}}{{^instantiationType}}{{{returnBaseType}}} {{/instantiationType}} alloc]initWithString: data] : nil; - completionBlock(result, nil); - }]; - {{/returnBaseType}} + return [client stringWithCompletionBlock: requestUrl + method: @"{{httpMethod}}" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(nil, error); + return; + } + {{returnBaseType}} *result = data ? [[{{#instantiationType}}NSClassFromString(@"{{{instantiationType}}}") {{/instantiationType}}{{^instantiationType}}{{{returnBaseType}}} {{/instantiationType}} alloc]initWithString: data] : nil; + completionBlock(result, nil); + }];{{/returnBaseType}} {{^returnBaseType}} return [client stringWithCompletionBlock:requestUrl method:@"{{httpMethod}}" @@ -201,10 +198,8 @@ static NSString * basePath = @"{{basePath}}"; } completionBlock(nil); }]; - {{/returnBaseType}} - {{/returnTypeIsPrimitive}} - {{#returnBaseType}} - {{^returnTypeIsPrimitive}} + {{/returnBaseType}}{{/returnTypeIsPrimitive}} + {{#returnBaseType}}{{^returnTypeIsPrimitive}} return [client dictionary:requestUrl method:@"{{httpMethod}}" queryParams:queryParams @@ -226,9 +221,7 @@ static NSString * basePath = @"{{basePath}}"; {{#returnBaseType}}completionBlock(result , nil);{{/returnBaseType}} {{/returnBaseType}} }]; - {{/returnTypeIsPrimitive}} - {{/returnBaseType}} - {{/returnSimpleType}} + {{/returnTypeIsPrimitive}}{{/returnBaseType}}{{/returnSimpleType}} {{newline}} } diff --git a/src/main/resources/objc/api-header.mustache b/src/main/resources/objc/api-header.mustache index 6b2091aed21..a66461d8ec2 100644 --- a/src/main/resources/objc/api-header.mustache +++ b/src/main/resources/objc/api-header.mustache @@ -14,22 +14,15 @@ {{#operation}} /** - {{{summary}}} - {{#notes}} - {{{notes}}} - {{/notes}} + {{#summary}}{{{summary}}}{{/summary}} + {{#notes}}{{{notes}}}{{/notes}} - {{#allParams}} - @param {{paramName}} {{description}} + {{#allParams}}@param {{paramName}} {{description}} {{/allParams}} - */ --(NSNumber*) {{nickname}}WithCompletionBlock {{^allParams}}:{{/allParams}}{{#allParams}}{{#secondaryParam}} {{paramName}}{{/secondaryParam}}:({{{dataType}}}) {{paramName}} {{#hasMore}}{{newline}} {{/hasMore}}{{/allParams}} - {{#returnBaseType}}{{#hasParams}}{{newline}} completionHandler: {{/hasParams}}(void (^)({{returnType}} output, NSError* error))completionBlock;{{/returnBaseType}} - {{^returnBaseType}}{{#hasParams}}{{newline}} completionHandler: {{/hasParams}}(void (^)(NSError* error))completionBlock;{{/returnBaseType}} - -{{newline}} +-(NSNumber*) {{nickname}}WithCompletionBlock {{^allParams}}:{{/allParams}}{{#allParams}}{{#secondaryParam}} {{paramName}}{{/secondaryParam}}: ({{{dataType}}}) {{paramName}}{{/allParams}} +{{#returnBaseType}}{{#hasParams}} completionHandler: {{/hasParams}}(void (^)({{returnType}} output, NSError* error))completionBlock;{{/returnBaseType}} +{{^returnBaseType}}{{#hasParams}} completionHandler: {{/hasParams}}(void (^)(NSError* error))completionBlock;{{/returnBaseType}} {{/operation}} - {{/operations}} @end \ No newline at end of file