From 4a50bb31831de4e1f22fca4812c26fbfe9de373b Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Sat, 17 Aug 2013 10:10:37 -0700 Subject: [PATCH] updated to 1.2 spec support --- samples/client/petstore/csharp/compile.bat | 4 +- .../src/Com/Wordnik/Petstore/Api/PetApi.cs | 101 ++++++++++-- .../src/Com/Wordnik/Petstore/Api/StoreApi.cs | 34 +++- .../src/Com/Wordnik/Petstore/Api/UserApi.cs | 153 ++++++++++++------ .../Com/Wordnik/Petstore/Model/Category.cs | 8 +- .../src/Com/Wordnik/Petstore/Model/Order.cs | 22 +-- .../src/Com/Wordnik/Petstore/Model/Pet.cs | 24 +-- .../src/Com/Wordnik/Petstore/Model/Tag.cs | 8 +- .../src/Com/Wordnik/Petstore/Model/User.cs | 36 ++--- .../UserInterfaceState.xcuserstate | Bin 40847 -> 40923 bytes .../codegen/BasicCSharpGenerator.scala | 12 +- src/test/scala/BasicCSharpGeneratorTest.scala | 7 + 12 files changed, 286 insertions(+), 123 deletions(-) diff --git a/samples/client/petstore/csharp/compile.bat b/samples/client/petstore/csharp/compile.bat index 13a6e91643ee..c62b990f5c5d 100644 --- a/samples/client/petstore/csharp/compile.bat +++ b/samples/client/petstore/csharp/compile.bat @@ -1,2 +1,2 @@ -SET CSCPATH=C:\windows\microsoft.net\Framework\v4.0.30319 -%CSCPATH%\csc /reference:bin/Newtonsoft.Json.dll /target:library /out:bin/Com.Wordnik.Petstore.dll /recurse:src\*.cs +SET CSCPATH=%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319 +%CSCPATH%\csc /reference:bin/Newtonsoft.Json.dll /target:library /out:bin/Com.Wordnik.Petstore.dll /recurse:src\*.cs /doc:bin/Com.Wordnik.Petstore.xml diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/PetApi.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/PetApi.cs index ede61e78a283..b8139909921d 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/PetApi.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/PetApi.cs @@ -11,26 +11,34 @@ return apiInvoker; } + // Sets the endpoint base url for the services being accessed public void setBasePath(string basePath) { this.basePath = basePath; } + // Gets the endpoint base url for the services being accessed public String getBasePath() { return basePath; } - public Pet getPetById (string Petid) { + /// + /// Find pet by ID Returns a pet based on ID + /// + /// ID of pet that needs to be fetched + /// + public Pet getPetById (string petId) { // create path and map variables - var path = "/pet.{format}/{petId}".Replace("{format}","json").Replace("{" + "Petid" + "}", apiInvoker.escapeString(Petid.ToString())); + var path = "/pet/{petId}".Replace("{format}","json").Replace("{" + "petId" + "}", apiInvoker.escapeString(petId.ToString())); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Petid == null ) { + if (petId == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); if(response != null){ @@ -48,9 +56,49 @@ } } } + /// + /// Deletes a pet + /// + /// Pet id to delete + /// + public void deletePet (string petId) { + // create path and map variables + var path = "/pet/{petId}".Replace("{format}","json").Replace("{" + "petId" + "}", apiInvoker.escapeString(petId.ToString())); + + // query params + var queryParams = new Dictionary(); + var headerParams = new Dictionary(); + + // verify required params are set + if (petId == null ) { + throw new ApiException(400, "missing required params"); + } + string paramStr = null; + try { + var response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams); + if(response != null){ + return ; + } + else { + return ; + } + } catch (ApiException ex) { + if(ex.ErrorCode == 404) { + return ; + } + else { + throw ex; + } + } + } + /// + /// Add a new pet to the store + /// + /// Pet object that needs to be added to the store + /// public void addPet (Pet body) { // create path and map variables - var path = "/pet.{format}".Replace("{format}","json"); + var path = "/pet".Replace("{format}","json"); // query params var queryParams = new Dictionary(); @@ -60,6 +108,7 @@ if (body == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); if(response != null){ @@ -77,9 +126,14 @@ } } } + /// + /// Update an existing pet + /// + /// Pet object that needs to be updated in the store + /// public void updatePet (Pet body) { // create path and map variables - var path = "/pet.{format}".Replace("{format}","json"); + var path = "/pet".Replace("{format}","json"); // query params var queryParams = new Dictionary(); @@ -89,6 +143,7 @@ if (body == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams); if(response != null){ @@ -106,20 +161,28 @@ } } } - public List findPetsByStatus (string Status) { + /// + /// Finds Pets by status Multiple status values can be provided with comma seperated strings + /// + /// Status values that need to be considered for filter + /// + public List findPetsByStatus (string status) { // create path and map variables - var path = "/pet.{format}/findByStatus".Replace("{format}","json"); + var path = "/pet/findByStatus".Replace("{format}","json"); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Status == null ) { + if (status == null ) { throw new ApiException(400, "missing required params"); } - if (Status != null) - queryParams.Add("Status", Status); + string paramStr = null; + if (status != null){ + paramStr = (status != null && status is DateTime) ? ((DateTime)(object)status).ToString("u") : Convert.ToString(status); + queryParams.Add("status", paramStr); + } try { var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); if(response != null){ @@ -137,20 +200,28 @@ } } } - public List findPetsByTags (string Tags) { + /// + /// Finds Pets by tags Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. + /// + /// Tags to filter by + /// + public List findPetsByTags (string tags) { // create path and map variables - var path = "/pet.{format}/findByTags".Replace("{format}","json"); + var path = "/pet/findByTags".Replace("{format}","json"); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Tags == null ) { + if (tags == null ) { throw new ApiException(400, "missing required params"); } - if (Tags != null) - queryParams.Add("Tags", Tags); + string paramStr = null; + if (tags != null){ + paramStr = (tags != null && tags is DateTime) ? ((DateTime)(object)tags).ToString("u") : Convert.ToString(tags); + queryParams.Add("tags", paramStr); + } try { var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); if(response != null){ diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/StoreApi.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/StoreApi.cs index 90ed1f5d6c18..22c36a411caf 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/StoreApi.cs @@ -11,26 +11,34 @@ return apiInvoker; } + // Sets the endpoint base url for the services being accessed public void setBasePath(string basePath) { this.basePath = basePath; } + // Gets the endpoint base url for the services being accessed public String getBasePath() { return basePath; } - public Order getOrderById (string Orderid) { + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5. Anything above 5 or nonintegers will generate API errors + /// + /// ID of pet that needs to be fetched + /// + public Order getOrderById (string orderId) { // create path and map variables - var path = "/store.{format}/order/{orderId}".Replace("{format}","json").Replace("{" + "Orderid" + "}", apiInvoker.escapeString(Orderid.ToString())); + var path = "/store/order/{orderId}".Replace("{format}","json").Replace("{" + "orderId" + "}", apiInvoker.escapeString(orderId.ToString())); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Orderid == null ) { + if (orderId == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); if(response != null){ @@ -48,18 +56,24 @@ } } } - public void deleteOrder (string Orderid) { + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// ID of the order that needs to be deleted + /// + public void deleteOrder (string orderId) { // create path and map variables - var path = "/store.{format}/order/{orderId}".Replace("{format}","json").Replace("{" + "Orderid" + "}", apiInvoker.escapeString(Orderid.ToString())); + var path = "/store/order/{orderId}".Replace("{format}","json").Replace("{" + "orderId" + "}", apiInvoker.escapeString(orderId.ToString())); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Orderid == null ) { + if (orderId == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams); if(response != null){ @@ -77,9 +91,14 @@ } } } + /// + /// Place an order for a pet + /// + /// order placed for purchasing the pet + /// public void placeOrder (Order body) { // create path and map variables - var path = "/store.{format}/order".Replace("{format}","json"); + var path = "/store/order".Replace("{format}","json"); // query params var queryParams = new Dictionary(); @@ -89,6 +108,7 @@ if (body == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); if(response != null){ diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/UserApi.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/UserApi.cs index 74b92228eddc..d94ce91baad9 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/UserApi.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Api/UserApi.cs @@ -11,46 +11,24 @@ return apiInvoker; } + // Sets the endpoint base url for the services being accessed public void setBasePath(string basePath) { this.basePath = basePath; } + // Gets the endpoint base url for the services being accessed public String getBasePath() { return basePath; } - public void createUsersWithArrayInput (List body) { - // create path and map variables - var path = "/user.{format}/createWithArray".Replace("{format}","json"); - - // query params - var queryParams = new Dictionary(); - var headerParams = new Dictionary(); - - // verify required params are set - if (body == null ) { - throw new ApiException(400, "missing required params"); - } - try { - var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); - if(response != null){ - return ; - } - else { - return ; - } - } catch (ApiException ex) { - if(ex.ErrorCode == 404) { - return ; - } - else { - throw ex; - } - } - } + /// + /// Create user This can only be done by the logged in user. + /// + /// Created user object + /// public void createUser (User body) { // create path and map variables - var path = "/user.{format}".Replace("{format}","json"); + var path = "/user".Replace("{format}","json"); // query params var queryParams = new Dictionary(); @@ -60,6 +38,7 @@ if (body == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); if(response != null){ @@ -77,9 +56,14 @@ } } } - public void createUsersWithListInput (List body) { + /// + /// Creates list of users with given input array + /// + /// List of user object + /// + public void createUsersWithArrayInput (array body) { // create path and map variables - var path = "/user.{format}/createWithList".Replace("{format}","json"); + var path = "/user/createWithArray".Replace("{format}","json"); // query params var queryParams = new Dictionary(); @@ -89,6 +73,7 @@ if (body == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); if(response != null){ @@ -106,18 +91,60 @@ } } } - public void updateUser (string Username, User body) { + /// + /// Creates list of users with given list input + /// + /// List of user object + /// + public void createUsersWithListInput (array body) { // create path and map variables - var path = "/user.{format}/{username}".Replace("{format}","json").Replace("{" + "Username" + "}", apiInvoker.escapeString(Username.ToString())); + var path = "/user/createWithList".Replace("{format}","json"); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Username == null || body == null ) { + if (body == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; + try { + var response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); + if(response != null){ + return ; + } + else { + return ; + } + } catch (ApiException ex) { + if(ex.ErrorCode == 404) { + return ; + } + else { + throw ex; + } + } + } + /// + /// Updated user This can only be done by the logged in user. + /// + /// name that need to be deleted + /// Updated user object + /// + public void updateUser (string username, User body) { + // create path and map variables + var path = "/user/{username}".Replace("{format}","json").Replace("{" + "username" + "}", apiInvoker.escapeString(username.ToString())); + + // query params + var queryParams = new Dictionary(); + var headerParams = new Dictionary(); + + // verify required params are set + if (username == null || body == null ) { + throw new ApiException(400, "missing required params"); + } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams); if(response != null){ @@ -135,18 +162,24 @@ } } } - public void deleteUser (string Username) { + /// + /// Delete user This can only be done by the logged in user. + /// + /// The name that needs to be deleted + /// + public void deleteUser (string username) { // create path and map variables - var path = "/user.{format}/{username}".Replace("{format}","json").Replace("{" + "Username" + "}", apiInvoker.escapeString(Username.ToString())); + var path = "/user/{username}".Replace("{format}","json").Replace("{" + "username" + "}", apiInvoker.escapeString(username.ToString())); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Username == null ) { + if (username == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams); if(response != null){ @@ -164,18 +197,24 @@ } } } - public User getUserByName (string Username) { + /// + /// Get user by user name + /// + /// The name that needs to be fetched. Use user1 for testing. + /// + public User getUserByName (string username) { // create path and map variables - var path = "/user.{format}/{username}".Replace("{format}","json").Replace("{" + "Username" + "}", apiInvoker.escapeString(Username.ToString())); + var path = "/user/{username}".Replace("{format}","json").Replace("{" + "username" + "}", apiInvoker.escapeString(username.ToString())); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Username == null ) { + if (username == null ) { throw new ApiException(400, "missing required params"); } + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); if(response != null){ @@ -193,22 +232,33 @@ } } } - public string loginUser (string Username, string Password) { + /// + /// Logs user into the system + /// + /// The user name for login + /// The password for login in clear text + /// + public string loginUser (string username, string password) { // create path and map variables - var path = "/user.{format}/login".Replace("{format}","json"); + var path = "/user/login".Replace("{format}","json"); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); // verify required params are set - if (Username == null || Password == null ) { + if (username == null || password == null ) { throw new ApiException(400, "missing required params"); } - if (Username != null) - queryParams.Add("Username", Username); - if (Password != null) - queryParams.Add("Password", Password); + string paramStr = null; + if (username != null){ + paramStr = (username != null && username is DateTime) ? ((DateTime)(object)username).ToString("u") : Convert.ToString(username); + queryParams.Add("username", paramStr); + } + if (password != null){ + paramStr = (password != null && password is DateTime) ? ((DateTime)(object)password).ToString("u") : Convert.ToString(password); + queryParams.Add("password", paramStr); + } try { var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); if(response != null){ @@ -226,14 +276,19 @@ } } } + /// + /// Logs out current logged in user session + /// + /// public void logoutUser () { // create path and map variables - var path = "/user.{format}/logout".Replace("{format}","json"); + var path = "/user/logout".Replace("{format}","json"); // query params var queryParams = new Dictionary(); var headerParams = new Dictionary(); + string paramStr = null; try { var response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); if(response != null){ diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Category.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Category.cs index 48285458f916..29dafc577371 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Category.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Category.cs @@ -5,15 +5,15 @@ using System.Collections.Generic; namespace Com.Wordnik.Petstore.Model { public class Category { - public long Id { get; set; } + public string name { get; set; } - public string Name { get; set; } + public long id { get; set; } public override string ToString() { var sb = new StringBuilder(); sb.Append("class Category {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" name: ").Append(name).Append("\n"); + sb.Append(" id: ").Append(id).Append("\n"); sb.Append("}\n"); return sb.ToString(); } diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Order.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Order.cs index a3bf7af3a886..72b65ad42061 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Order.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Order.cs @@ -5,25 +5,25 @@ using System.Collections.Generic; namespace Com.Wordnik.Petstore.Model { public class Order { - public long Id { get; set; } - - public long Petid { get; set; } + public long id { get; set; } /* Order Status */ - public string Status { get; set; } + public string status { get; set; } - public int Quantity { get; set; } + public long petId { get; set; } - public DateTime Shipdate { get; set; } + public int quantity { get; set; } + + public DateTime shipDate { get; set; } public override string ToString() { var sb = new StringBuilder(); sb.Append("class Order {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Petid: ").Append(Petid).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); - sb.Append(" Quantity: ").Append(Quantity).Append("\n"); - sb.Append(" Shipdate: ").Append(Shipdate).Append("\n"); + sb.Append(" id: ").Append(id).Append("\n"); + sb.Append(" status: ").Append(status).Append("\n"); + sb.Append(" petId: ").Append(petId).Append("\n"); + sb.Append(" quantity: ").Append(quantity).Append("\n"); + sb.Append(" shipDate: ").Append(shipDate).Append("\n"); sb.Append("}\n"); return sb.ToString(); } diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Pet.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Pet.cs index 7fe96a64ddc8..92acc0f980df 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Pet.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Pet.cs @@ -5,28 +5,28 @@ using System.Collections.Generic; namespace Com.Wordnik.Petstore.Model { public class Pet { - public List Tags { get; set; } + public string name { get; set; } - public long Id { get; set; } + public long id { get; set; } - public Category Category { get; set; } + public List tags { get; set; } /* pet status in the store */ - public string Status { get; set; } + public string status { get; set; } - public string Name { get; set; } + public List photoUrls { get; set; } - public List Photourls { get; set; } + public Category category { get; set; } public override string ToString() { var sb = new StringBuilder(); sb.Append("class Pet {\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Category: ").Append(Category).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" Photourls: ").Append(Photourls).Append("\n"); + sb.Append(" name: ").Append(name).Append("\n"); + sb.Append(" id: ").Append(id).Append("\n"); + sb.Append(" tags: ").Append(tags).Append("\n"); + sb.Append(" status: ").Append(status).Append("\n"); + sb.Append(" photoUrls: ").Append(photoUrls).Append("\n"); + sb.Append(" category: ").Append(category).Append("\n"); sb.Append("}\n"); return sb.ToString(); } diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Tag.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Tag.cs index c73dc74c47ae..64daaa61c723 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Tag.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/Tag.cs @@ -5,15 +5,15 @@ using System.Collections.Generic; namespace Com.Wordnik.Petstore.Model { public class Tag { - public long Id { get; set; } + public string name { get; set; } - public string Name { get; set; } + public long id { get; set; } public override string ToString() { var sb = new StringBuilder(); sb.Append("class Tag {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" name: ").Append(name).Append("\n"); + sb.Append(" id: ").Append(id).Append("\n"); sb.Append("}\n"); return sb.ToString(); } diff --git a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/User.cs b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/User.cs index f3032e9a7bba..bbbd6eaccc36 100644 --- a/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/User.cs +++ b/samples/client/petstore/csharp/src/Com/Wordnik/Petstore/Model/User.cs @@ -5,34 +5,34 @@ using System.Collections.Generic; namespace Com.Wordnik.Petstore.Model { public class User { - public long Id { get; set; } + public long id { get; set; } - public string Lastname { get; set; } + public string firstName { get; set; } - public string Phone { get; set; } + public string username { get; set; } - public string Username { get; set; } + public string lastName { get; set; } - public string Email { get; set; } + public string email { get; set; } + + public string password { get; set; } + + public string phone { get; set; } /* User Status */ - public int Userstatus { get; set; } - - public string Firstname { get; set; } - - public string Password { get; set; } + public int userStatus { get; set; } public override string ToString() { var sb = new StringBuilder(); sb.Append("class User {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Lastname: ").Append(Lastname).Append("\n"); - sb.Append(" Phone: ").Append(Phone).Append("\n"); - sb.Append(" Username: ").Append(Username).Append("\n"); - sb.Append(" Email: ").Append(Email).Append("\n"); - sb.Append(" Userstatus: ").Append(Userstatus).Append("\n"); - sb.Append(" Firstname: ").Append(Firstname).Append("\n"); - sb.Append(" Password: ").Append(Password).Append("\n"); + sb.Append(" id: ").Append(id).Append("\n"); + sb.Append(" firstName: ").Append(firstName).Append("\n"); + sb.Append(" username: ").Append(username).Append("\n"); + sb.Append(" lastName: ").Append(lastName).Append("\n"); + sb.Append(" email: ").Append(email).Append("\n"); + sb.Append(" password: ").Append(password).Append("\n"); + sb.Append(" phone: ").Append(phone).Append("\n"); + sb.Append(" userStatus: ").Append(userStatus).Append("\n"); sb.Append("}\n"); return sb.ToString(); } diff --git a/samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.xcworkspace/xcuserdata/tony.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.xcworkspace/xcuserdata/tony.xcuserdatad/UserInterfaceState.xcuserstate index 41ba9f81d474deef90ff47b822e85bdf61368c76..eb26dbf4ea27f0836a132d0e1e63daac57e4b965 100644 GIT binary patch delta 20773 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

G_#wy>RHyTcBJ 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 delta 20465 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 SB!ud}MKjfZfB8M8*Z%{WA_43G diff --git a/src/main/scala/com/wordnik/swagger/codegen/BasicCSharpGenerator.scala b/src/main/scala/com/wordnik/swagger/codegen/BasicCSharpGenerator.scala index 8836c2562235..dcc787d83751 100644 --- a/src/main/scala/com/wordnik/swagger/codegen/BasicCSharpGenerator.scala +++ b/src/main/scala/com/wordnik/swagger/codegen/BasicCSharpGenerator.scala @@ -45,6 +45,7 @@ class BasicCSharpGenerator extends BasicGenerator { * variable declarations. */ override def typeMapping = Map( + "array" -> "List", "boolean" -> "bool", "string" -> "string", "int" -> "int", @@ -97,7 +98,16 @@ class BasicCSharpGenerator extends BasicGenerator { override def processResponseDeclaration(responseClass: String): Option[String] = { responseClass match { case "void" => None - case e: String => Some(typeMapping.getOrElse(e, e.replaceAll("\\[", "<").replaceAll("\\]", ">"))) + case e: String => { + val ComplexTypeMatcher = "(.*)\\[(.*)\\].*".r + val t = e match { + case ComplexTypeMatcher(container, inner) => { + e.replaceAll(container, typeMapping.getOrElse(container, container)) + } + case _ => e + } + Some(typeMapping.getOrElse(t, t.replaceAll("\\[", "<").replaceAll("\\]", ">"))) + } } } diff --git a/src/test/scala/BasicCSharpGeneratorTest.scala b/src/test/scala/BasicCSharpGeneratorTest.scala index 2307fd152cc2..d29e03985e88 100644 --- a/src/test/scala/BasicCSharpGeneratorTest.scala +++ b/src/test/scala/BasicCSharpGeneratorTest.scala @@ -38,4 +38,11 @@ class BasicCSharpGeneratorTest extends FlatSpec with ShouldMatchers { it should "perserve the name date" in { config.toVarName("date") should be ("date") } + + /* + * arrays look nice + */ + it should "process a string array" in { + config.processResponseDeclaration("array[string]") should be (Some("List")) + } }