diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java index 62f22ee2f44..47c34ad9031 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java @@ -34,7 +34,11 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { templateDir = "objc"; modelPackage = ""; - additionalProperties.put("projectName", "swaggerClient"); + String appName = System.getProperty("appName"); + if(appName == null) { + appName = "swaggerClient"; + } + additionalProperties.put("projectName", appName); defaultIncludes = new HashSet( Arrays.asList( @@ -44,6 +48,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { "NSObject", "NSArray", "NSNumber", + "NSDate", "NSDictionary", "NSMutableArray", "NSMutableDictionary") @@ -52,6 +57,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { Arrays.asList( "NSNumber", "NSString", + "NSDate", "NSObject", "bool") ); @@ -66,9 +72,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping = new HashMap(); typeMapping.put("enum", "NSString"); - typeMapping.put("Date", "SWGDate"); - typeMapping.put("DateTime", "SWGDate"); - // typeMapping.put("Date", "SWGDate"); + typeMapping.put("Date", "NSDate"); + typeMapping.put("DateTime", "NSDate"); typeMapping.put("boolean", "NSNumber"); typeMapping.put("string", "NSString"); typeMapping.put("integer", "NSNumber"); @@ -83,13 +88,13 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("object", "NSObject"); importMapping = new HashMap (); - importMapping.put("Date", "SWGDate"); foundationClasses = new HashSet ( Arrays.asList( "NSNumber", "NSObject", "NSString", + "NSDate", "NSDictionary") ); @@ -147,11 +152,45 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String getTypeDeclaration(Property p) { - String swaggerType = getSwaggerType(p); - if(languageSpecificPrimitives.contains(swaggerType) && !foundationClasses.contains(swaggerType)) - return toModelName(swaggerType); - else - return swaggerType + "*"; + if (p instanceof ArrayProperty) { + ArrayProperty ap = (ArrayProperty) p; + Property inner = ap.getItems(); + String innerType = getSwaggerType(inner); + + // In this codition, type of property p is array of primitive, + // return container type with pointer, e.g. `NSArray*' + if (languageSpecificPrimitives.contains(innerType)) + return getSwaggerType(p) + "*"; + + // In this codition, type of property p is array of model, + // return container type combine inner type with pointer, e.g. `NSArray*' + String innerTypeDeclaration = getTypeDeclaration(inner); + + if (innerTypeDeclaration.endsWith("*")) + innerTypeDeclaration = innerTypeDeclaration.substring(0, innerTypeDeclaration.length() - 1); + + return getSwaggerType(p) + "<" + innerTypeDeclaration + ">*"; + } + else { + String swaggerType = getSwaggerType(p); + + // In this codition, type of p is objective-c primitive type, e.g. `NSSNumber', + // return type of p with pointer, e.g. `NSNumber*' + if (languageSpecificPrimitives.contains(swaggerType) && + foundationClasses.contains(swaggerType)) { + return swaggerType + "*"; + } + // In this codition, type of p is c primitive type, e.g. `bool', + // return type of p, e.g. `bool' + else if (languageSpecificPrimitives.contains(swaggerType)) { + return swaggerType; + } + // In this codition, type of p is objective-c object type, e.g. `SWGPet', + // return type of p with pointer, e.g. `' + else { + return swaggerType + "*"; + } + } } @Override @@ -229,4 +268,4 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { public String escapeReservedWord(String name) { return "_" + name; } -} \ No newline at end of file +}