From 8bf042b15367719bb223a48802da90f53f0c07d6 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 5 Mar 2014 07:54:03 -0800 Subject: [PATCH] updated sample with form param support --- .../petstore/java/JavaPetstoreCodegen.scala | 2 +- samples/client/petstore/java/pom.xml | 18 +- .../java/com/wordnik/client/ApiInvoker.java | 41 +- .../java/com/wordnik/client/JsonUtil.java | 3 + .../java/com/wordnik/petstore/api/PetApi.java | 125 ++++--- .../com/wordnik/petstore/api/StoreApi.java | 82 ++-- .../com/wordnik/petstore/api/UserApi.java | 354 ++++++++++-------- src/main/resources/Java/api.mustache | 12 +- src/main/resources/Java/apiInvoker.mustache | 41 +- 9 files changed, 421 insertions(+), 257 deletions(-) diff --git a/samples/client/petstore/java/JavaPetstoreCodegen.scala b/samples/client/petstore/java/JavaPetstoreCodegen.scala index bd9b068c12..3afebc87f4 100644 --- a/samples/client/petstore/java/JavaPetstoreCodegen.scala +++ b/samples/client/petstore/java/JavaPetstoreCodegen.scala @@ -20,7 +20,7 @@ object JavaPetstoreCodegen extends BasicJavaGenerator { def main(args: Array[String]) = generateClient(args) // location of templates - override def templateDir = "Java" + override def templateDir = "src/main/resources/Java" // where to write generated code override def destinationDir = "samples/client/petstore/java/src/main/java" diff --git a/samples/client/petstore/java/pom.xml b/samples/client/petstore/java/pom.xml index 76835a9802..51011d6406 100644 --- a/samples/client/petstore/java/pom.xml +++ b/samples/client/petstore/java/pom.xml @@ -1,10 +1,10 @@ 4.0.0 - com.wordnik.client - api-client + com.wordnik + swagger-petstore jar - api-client + swagger-petstore 1.0.0 scm:git:git@github.com:wordnik/swagger-mustache.git @@ -178,6 +178,17 @@ ${jackson-version} compile + + com.fasterxml.jackson.datatype + jackson-datatype-joda + 2.1.5 + + + joda-time + joda-time + ${jodatime-version} + compile + @@ -203,6 +214,7 @@ 1.7 2.1.4 + 2.3 2.9.1-1 4.8.1 1.0.0 diff --git a/samples/client/petstore/java/src/main/java/com/wordnik/client/ApiInvoker.java b/samples/client/petstore/java/src/main/java/com/wordnik/client/ApiInvoker.java index de64ba9f1e..0a163d80d4 100644 --- a/samples/client/petstore/java/src/main/java/com/wordnik/client/ApiInvoker.java +++ b/samples/client/petstore/java/src/main/java/com/wordnik/client/ApiInvoker.java @@ -19,6 +19,8 @@ import java.util.Map; import java.util.HashMap; import java.util.List; import java.io.IOException; +import java.net.URLEncoder; +import java.io.UnsupportedEncodingException; public class ApiInvoker { private static ApiInvoker INSTANCE = new ApiInvoker(); @@ -34,7 +36,12 @@ public class ApiInvoker { } public String escapeString(String str) { - return str; + try{ + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } + catch(UnsupportedEncodingException e) { + return str; + } } public static Object deserialize(String json, String containerType, Class cls) throws ApiException { @@ -71,7 +78,7 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { Client client = getClient(host); StringBuilder b = new StringBuilder(); @@ -107,19 +114,41 @@ public class ApiInvoker { if(body == null) response = builder.post(ClientResponse.class, serialize(body)); else - response = builder.type("application/json").post(ClientResponse.class, serialize(body)); + response = builder.type(contentType).post(ClientResponse.class, serialize(body)); } else if ("PUT".equals(method)) { if(body == null) response = builder.put(ClientResponse.class, serialize(body)); - else - response = builder.type("application/json").put(ClientResponse.class, serialize(body)); + else { + if("application/x-www-form-urlencoded".equals(contentType)) { + StringBuilder formParamBuilder = new StringBuilder(); + + // encode the form params + for(String key : headerParams.keySet()) { + String value = headerParams.get(key); + if(value != null && !"".equals(value.trim())) { + if(formParamBuilder.length() > 0) { + formParamBuilder.append("&"); + } + try { + formParamBuilder.append(URLEncoder.encode(key, "utf8")).append("=").append(URLEncoder.encode(value, "utf8")); + } + catch (Exception e) { + // move on to next + } + } + } + response = builder.type(contentType).put(ClientResponse.class, formParamBuilder.toString()); + } + else + response = builder.type(contentType).put(ClientResponse.class, serialize(body)); + } } else if ("DELETE".equals(method)) { if(body == null) response = builder.delete(ClientResponse.class, serialize(body)); else - response = builder.type("application/json").delete(ClientResponse.class, serialize(body)); + response = builder.type(contentType).delete(ClientResponse.class, serialize(body)); } else { throw new ApiException(500, "unknown method type " + method); diff --git a/samples/client/petstore/java/src/main/java/com/wordnik/client/JsonUtil.java b/samples/client/petstore/java/src/main/java/com/wordnik/client/JsonUtil.java index 4dc919306d..da0fca7816 100644 --- a/samples/client/petstore/java/src/main/java/com/wordnik/client/JsonUtil.java +++ b/samples/client/petstore/java/src/main/java/com/wordnik/client/JsonUtil.java @@ -5,6 +5,8 @@ import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.core.JsonGenerator.Feature; +import com.fasterxml.jackson.datatype.joda.*; + public class JsonUtil { public static ObjectMapper mapper; @@ -12,6 +14,7 @@ public class JsonUtil { mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + mapper.registerModule(new JodaModule()); } public static ObjectMapper getJsonMapper() { diff --git a/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/PetApi.java b/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/PetApi.java index 9dfa392ded..9fa2290e63 100644 --- a/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/PetApi.java +++ b/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/PetApi.java @@ -22,33 +22,6 @@ public class PetApi { return basePath; } - public void uploadFile (String additionalMetadata, File body) throws ApiException { - // create path and map variables - String path = "/pet/uploadImage".replaceAll("\\{format\\}","json"); - - // query params - Map queryParams = new HashMap(); - Map headerParams = new HashMap(); - - String contentType = "application/json"; - - try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); - if(response != null){ - return ; - } - else { - return ; - } - } catch (ApiException ex) { - if(ex.getCode() == 404) { - return ; - } - else { - throw ex; - } - } - } public Pet getPetById (Long petId) throws ApiException { // verify required params are set if(petId == null ) { @@ -60,11 +33,15 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, formParams, contentType); if(response != null){ return (Pet) ApiInvoker.deserialize(response, "", Pet.class); } @@ -91,11 +68,15 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams, formParams, contentType); if(response != null){ return ; } @@ -122,11 +103,15 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json","application/xml"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "PATCH", queryParams, body, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "PATCH", queryParams, body, headerParams, formParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "Array", Pet.class); } @@ -153,11 +138,49 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + formParams.put("name", name); + formParams.put("status", status); + String[] contentTypes = { + "application/x-www-form-urlencoded"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, null, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, null, headerParams, formParams, contentType); + if(response != null){ + return ; + } + else { + return ; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return ; + } + else { + throw ex; + } + } + } + public void uploadFile (String additionalMetadata, File body) throws ApiException { + // create path and map variables + String path = "/pet/uploadImage".replaceAll("\\{format\\}","json"); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + formParams.put("additionalMetadata", additionalMetadata); + String[] contentTypes = { + "multipart/form-data"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, formParams, contentType); if(response != null){ return ; } @@ -184,11 +207,15 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json","application/xml"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, formParams, contentType); if(response != null){ return ; } @@ -215,11 +242,15 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams, formParams, contentType); if(response != null){ return ; } @@ -246,13 +277,17 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); if(!"null".equals(String.valueOf(status))) queryParams.put("status", String.valueOf(status)); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, formParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "Array", Pet.class); } @@ -279,13 +314,17 @@ public class PetApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); if(!"null".equals(String.valueOf(tags))) queryParams.put("tags", String.valueOf(tags)); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, formParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "Array", Pet.class); } diff --git a/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/StoreApi.java b/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/StoreApi.java index 3d60b1a7c0..b855953090 100644 --- a/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/StoreApi.java +++ b/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/StoreApi.java @@ -21,37 +21,6 @@ public class StoreApi { return basePath; } - public void deleteOrder (String orderId) throws ApiException { - // verify required params are set - if(orderId == null ) { - throw new ApiException(400, "missing required params"); - } - // create path and map variables - String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); - - // query params - Map queryParams = new HashMap(); - Map headerParams = new HashMap(); - - String contentType = "application/json"; - - try { - String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams, contentType); - if(response != null){ - return ; - } - else { - return ; - } - } catch (ApiException ex) { - if(ex.getCode() == 404) { - return ; - } - else { - throw ex; - } - } - } public Order getOrderById (String orderId) throws ApiException { // verify required params are set if(orderId == null ) { @@ -63,11 +32,15 @@ public class StoreApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, formParams, contentType); if(response != null){ return (Order) ApiInvoker.deserialize(response, "", Order.class); } @@ -83,6 +56,41 @@ public class StoreApi { } } } + public void deleteOrder (String orderId) throws ApiException { + // verify required params are set + if(orderId == null ) { + throw new ApiException(400, "missing required params"); + } + // create path and map variables + String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams, formParams, contentType); + if(response != null){ + return ; + } + else { + return ; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return ; + } + else { + throw ex; + } + } + } public void placeOrder (Order body) throws ApiException { // verify required params are set if(body == null ) { @@ -94,11 +102,15 @@ public class StoreApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, formParams, contentType); if(response != null){ return ; } diff --git a/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/UserApi.java b/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/UserApi.java index 7d788f3932..158bfa5abc 100644 --- a/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/UserApi.java +++ b/samples/client/petstore/java/src/main/java/com/wordnik/petstore/api/UserApi.java @@ -21,161 +21,6 @@ public class UserApi { return basePath; } - public void deleteUser (String username) throws ApiException { - // verify required params are set - if(username == null ) { - throw new ApiException(400, "missing required params"); - } - // create path and map variables - String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); - - // query params - Map queryParams = new HashMap(); - Map headerParams = new HashMap(); - - String contentType = "application/json"; - - try { - String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams, contentType); - if(response != null){ - return ; - } - else { - return ; - } - } catch (ApiException ex) { - if(ex.getCode() == 404) { - return ; - } - else { - throw ex; - } - } - } - public User getUserByName (String username) throws ApiException { - // verify required params are set - if(username == null ) { - throw new ApiException(400, "missing required params"); - } - // create path and map variables - String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); - - // query params - Map queryParams = new HashMap(); - Map headerParams = new HashMap(); - - String contentType = "application/json"; - - try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); - if(response != null){ - return (User) ApiInvoker.deserialize(response, "", User.class); - } - else { - return null; - } - } catch (ApiException ex) { - if(ex.getCode() == 404) { - return null; - } - else { - throw ex; - } - } - } - public void updateUser (String username, User body) throws ApiException { - // verify required params are set - if(username == null || body == null ) { - throw new ApiException(400, "missing required params"); - } - // create path and map variables - String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); - - // query params - Map queryParams = new HashMap(); - Map headerParams = new HashMap(); - - String contentType = "application/json"; - - try { - String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams, contentType); - if(response != null){ - return ; - } - else { - return ; - } - } catch (ApiException ex) { - if(ex.getCode() == 404) { - return ; - } - else { - throw ex; - } - } - } - public String loginUser (String username, String password) throws ApiException { - // verify required params are set - if(username == null || password == null ) { - throw new ApiException(400, "missing required params"); - } - // create path and map variables - String path = "/user/login".replaceAll("\\{format\\}","json"); - - // query params - Map queryParams = new HashMap(); - Map headerParams = new HashMap(); - - if(!"null".equals(String.valueOf(username))) - queryParams.put("username", String.valueOf(username)); - if(!"null".equals(String.valueOf(password))) - queryParams.put("password", String.valueOf(password)); - String contentType = "application/json"; - - try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); - if(response != null){ - return (String) ApiInvoker.deserialize(response, "", String.class); - } - else { - return null; - } - } catch (ApiException ex) { - if(ex.getCode() == 404) { - return null; - } - else { - throw ex; - } - } - } - public void logoutUser () throws ApiException { - // create path and map variables - String path = "/user/logout".replaceAll("\\{format\\}","json"); - - // query params - Map queryParams = new HashMap(); - Map headerParams = new HashMap(); - - String contentType = "application/json"; - - try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); - if(response != null){ - return ; - } - else { - return ; - } - } catch (ApiException ex) { - if(ex.getCode() == 404) { - return ; - } - else { - throw ex; - } - } - } public void createUser (User body) throws ApiException { // verify required params are set if(body == null ) { @@ -187,11 +32,15 @@ public class UserApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, formParams, contentType); if(response != null){ return ; } @@ -218,11 +67,15 @@ public class UserApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, formParams, contentType); if(response != null){ return ; } @@ -249,11 +102,190 @@ public class UserApi { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); - String contentType = "application/json"; + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, formParams, contentType); + if(response != null){ + return ; + } + else { + return ; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return ; + } + else { + throw ex; + } + } + } + public void updateUser (String username, User body) throws ApiException { + // verify required params are set + if(username == null || body == null ) { + throw new ApiException(400, "missing required params"); + } + // create path and map variables + String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams, formParams, contentType); + if(response != null){ + return ; + } + else { + return ; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return ; + } + else { + throw ex; + } + } + } + public void deleteUser (String username) throws ApiException { + // verify required params are set + if(username == null ) { + throw new ApiException(400, "missing required params"); + } + // create path and map variables + String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams, formParams, contentType); + if(response != null){ + return ; + } + else { + return ; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return ; + } + else { + throw ex; + } + } + } + public User getUserByName (String username) throws ApiException { + // verify required params are set + if(username == null ) { + throw new ApiException(400, "missing required params"); + } + // create path and map variables + String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, formParams, contentType); + if(response != null){ + return (User) ApiInvoker.deserialize(response, "", User.class); + } + else { + return null; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return null; + } + else { + throw ex; + } + } + } + public String loginUser (String username, String password) throws ApiException { + // verify required params are set + if(username == null || password == null ) { + throw new ApiException(400, "missing required params"); + } + // create path and map variables + String path = "/user/login".replaceAll("\\{format\\}","json"); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + if(!"null".equals(String.valueOf(username))) + queryParams.put("username", String.valueOf(username)); + if(!"null".equals(String.valueOf(password))) + queryParams.put("password", String.valueOf(password)); + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, formParams, contentType); + if(response != null){ + return (String) ApiInvoker.deserialize(response, "", String.class); + } + else { + return null; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return null; + } + else { + throw ex; + } + } + } + public void logoutUser () throws ApiException { + // create path and map variables + String path = "/user/logout".replaceAll("\\{format\\}","json"); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + String[] contentTypes = { + "application/json"}; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, formParams, contentType); if(response != null){ return ; } diff --git a/src/main/resources/Java/api.mustache b/src/main/resources/Java/api.mustache index 5ae03eca40..0dcca27202 100644 --- a/src/main/resources/Java/api.mustache +++ b/src/main/resources/Java/api.mustache @@ -39,6 +39,7 @@ public class {{classname}} { // query params Map queryParams = new HashMap(); Map headerParams = new HashMap(); + Map formParams = new HashMap(); {{#queryParams}}if(!"null".equals(String.valueOf({{paramName}}))) queryParams.put("{{baseName}}", String.valueOf({{paramName}})); @@ -47,10 +48,17 @@ public class {{classname}} { {{#headerParams}}headerParams.put("{{baseName}}", {{paramName}}); {{/headerParams}} - String contentType = "application/json"; + {{#formParams}}formParams.put("{{baseName}}", {{paramName}}); + {{/formParams}} + + String[] contentTypes = { + {{#consumes}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/consumes}} + }; + + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; try { - String response = apiInvoker.invokeAPI(basePath, path, "{{httpMethod}}", queryParams, {{#bodyParam}}{{bodyParam}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}, headerParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "{{httpMethod}}", queryParams, {{#bodyParam}}{{bodyParam}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}, headerParams, formParams, contentType); if(response != null){ return {{#returnType}}({{{returnType}}}) ApiInvoker.deserialize(response, "{{returnContainer}}", {{returnBaseType}}.class){{/returnType}}; } diff --git a/src/main/resources/Java/apiInvoker.mustache b/src/main/resources/Java/apiInvoker.mustache index bdeb632f74..007c2ee40d 100644 --- a/src/main/resources/Java/apiInvoker.mustache +++ b/src/main/resources/Java/apiInvoker.mustache @@ -19,6 +19,8 @@ import java.util.Map; import java.util.HashMap; import java.util.List; import java.io.IOException; +import java.net.URLEncoder; +import java.io.UnsupportedEncodingException; public class ApiInvoker { private static ApiInvoker INSTANCE = new ApiInvoker(); @@ -34,7 +36,12 @@ public class ApiInvoker { } public String escapeString(String str) { - return str; + try{ + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } + catch(UnsupportedEncodingException e) { + return str; + } } public static Object deserialize(String json, String containerType, Class cls) throws ApiException { @@ -71,7 +78,7 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { Client client = getClient(host); StringBuilder b = new StringBuilder(); @@ -107,19 +114,41 @@ public class ApiInvoker { if(body == null) response = builder.post(ClientResponse.class, serialize(body)); else - response = builder.type("application/json").post(ClientResponse.class, serialize(body)); + response = builder.type(contentType).post(ClientResponse.class, serialize(body)); } else if ("PUT".equals(method)) { if(body == null) response = builder.put(ClientResponse.class, serialize(body)); - else - response = builder.type("application/json").put(ClientResponse.class, serialize(body)); + else { + if("application/x-www-form-urlencoded".equals(contentType)) { + StringBuilder formParamBuilder = new StringBuilder(); + + // encode the form params + for(String key : headerParams.keySet()) { + String value = headerParams.get(key); + if(value != null && !"".equals(value.trim())) { + if(formParamBuilder.length() > 0) { + formParamBuilder.append("&"); + } + try { + formParamBuilder.append(URLEncoder.encode(key, "utf8")).append("=").append(URLEncoder.encode(value, "utf8")); + } + catch (Exception e) { + // move on to next + } + } + } + response = builder.type(contentType).put(ClientResponse.class, formParamBuilder.toString()); + } + else + response = builder.type(contentType).put(ClientResponse.class, serialize(body)); + } } else if ("DELETE".equals(method)) { if(body == null) response = builder.delete(ClientResponse.class, serialize(body)); else - response = builder.type("application/json").delete(ClientResponse.class, serialize(body)); + response = builder.type(contentType).delete(ClientResponse.class, serialize(body)); } else { throw new ApiException(500, "unknown method type " + method);