added patch

This commit is contained in:
Tony Tam 2014-06-10 10:36:46 -07:00
parent b78721826e
commit ce14c225e5
11 changed files with 230 additions and 136 deletions

View File

@ -42,6 +42,7 @@ object AndroidJavaPetstoreCodegen extends BasicAndroidJavaGenerator {
// supporting classes // supporting classes
override def supportingFiles = List( override def supportingFiles = List(
("apiInvoker.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replace(".", java.io.File.separator) + java.io.File.separator, "ApiInvoker.java"), ("apiInvoker.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replace(".", java.io.File.separator) + java.io.File.separator, "ApiInvoker.java"),
("httpPatch.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replace(".", java.io.File.separator) + java.io.File.separator, "HttpPatch.java"),
("jsonUtil.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replace(".", java.io.File.separator) + java.io.File.separator, "JsonUtil.java"), ("jsonUtil.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replace(".", java.io.File.separator) + java.io.File.separator, "JsonUtil.java"),
("apiException.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replace(".", java.io.File.separator) + java.io.File.separator, "ApiException.java"), ("apiException.mustache", destinationDir + java.io.File.separator + invokerPackage.get.replace(".", java.io.File.separator) + java.io.File.separator, "ApiException.java"),
("pom.mustache", "samples/client/petstore/android-java", "pom.xml") ("pom.mustache", "samples/client/petstore/android-java", "pom.xml")

View File

@ -207,7 +207,7 @@
<maven-plugin-version>1.0.0</maven-plugin-version> <maven-plugin-version>1.0.0</maven-plugin-version>
<junit-version>4.8.1</junit-version> <junit-version>4.8.1</junit-version>
<scala-test-version>1.6.1</scala-test-version> <scala-test-version>1.6.1</scala-test-version>
<httpclient-version>4.2.3</httpclient-version> <httpclient-version>4.0</httpclient-version>
<scala-maven-plugin-version>3.1.5</scala-maven-plugin-version> <scala-maven-plugin-version>3.1.5</scala-maven-plugin-version>
</properties> </properties>
</project> </project>

View File

@ -9,11 +9,18 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.apache.http.*; import org.apache.http.*;
import org.apache.http.client.*; import org.apache.http.client.*;
import org.apache.http.client.methods.*; import org.apache.http.client.methods.*;
import org.apache.http.conn.*;
import org.apache.http.conn.scheme.*;
import org.apache.http.conn.ssl.*;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.*; import org.apache.http.impl.client.*;
import org.apache.http.impl.conn.*;
import org.apache.http.params.*;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import java.io.File; import java.io.File;
import java.net.Socket;
import java.net.UnknownHostException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.Map; import java.util.Map;
@ -22,15 +29,50 @@ import java.util.List;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class ApiInvoker { public class ApiInvoker {
private static ApiInvoker INSTANCE = new ApiInvoker(); private static ApiInvoker INSTANCE = new ApiInvoker();
private Map<String, String> defaultHeaderMap = new HashMap<String, String>(); private Map<String, String> defaultHeaderMap = new HashMap<String, String>();
private HttpClient client = null; private HttpClient client = null;
private boolean ignoreSSLCertificates = false;
private ClientConnectionManager ignoreSSLConnectionManager;
public ApiInvoker() {
initConnectionManager();
}
public static ApiInvoker getInstance() { public static ApiInvoker getInstance() {
return INSTANCE; return INSTANCE;
} }
public void ignoreSSLCertificates(boolean ignoreSSLCertificates) {
this.ignoreSSLCertificates = ignoreSSLCertificates;
}
public void addDefaultHeader(String key, String value) { public void addDefaultHeader(String key, String value) {
defaultHeaderMap.put(key, value); defaultHeaderMap.put(key, value);
} }
@ -114,8 +156,11 @@ public class ApiInvoker {
} }
else if ("POST".equals(method)) { else if ("POST".equals(method)) {
HttpPost post = new HttpPost(url); HttpPost post = new HttpPost(url);
if (body != null) {
post.setHeader("Content-Type", contentType); post.setHeader("Content-Type", contentType);
post.setEntity(new StringEntity(serialize(body), "UTF-8")); post.setEntity(new StringEntity(serialize(body), "UTF-8"));
}
for(String key : headers.keySet()) { for(String key : headers.keySet()) {
post.setHeader(key, headers.get(key)); post.setHeader(key, headers.get(key));
} }
@ -139,6 +184,18 @@ public class ApiInvoker {
} }
response = client.execute(delete); response = client.execute(delete);
} }
else if ("PATCH".equals(method)) {
HttpPatch patch = new HttpPatch(url);
if (body != null) {
patch.setHeader("Content-Type", contentType);
patch.setEntity(new StringEntity(serialize(body), "UTF-8"));
}
for(String key : headers.keySet()) {
patch.setHeader(key, headers.get(key));
}
response = client.execute(patch);
}
int code = response.getStatusLine().getStatusCode(); int code = response.getStatusLine().getStatusCode();
String responseString = null; String responseString = null;
@ -167,8 +224,61 @@ public class ApiInvoker {
} }
private HttpClient getClient(String host) { private HttpClient getClient(String host) {
if(client == null) if (client == null) {
if (ignoreSSLCertificates && ignoreSSLConnectionManager != null) {
// Trust self signed certificates
client = new DefaultHttpClient(ignoreSSLConnectionManager, new BasicHttpParams());
} else {
client = new DefaultHttpClient(); client = new DefaultHttpClient();
}
}
return client; return client;
} }
private void initConnectionManager() {
try {
final SSLContext sslContext = SSLContext.getInstance("SSL");
// set up a TrustManager that trusts everything
TrustManager[] trustManagers = new TrustManager[] {
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {}
public void checkServerTrusted(X509Certificate[] certs, String authType) {}
}};
sslContext.init(null, trustManagers, new SecureRandom());
SSLSocketFactory sf = new SSLSocketFactory((KeyStore)null) {
private javax.net.ssl.SSLSocketFactory sslFactory = sslContext.getSocketFactory();
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
throws IOException, UnknownHostException {
return sslFactory.createSocket(socket, host, port, autoClose);
}
public Socket createSocket() throws IOException {
return sslFactory.createSocket();
}
};
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme httpsScheme = new Scheme("https", sf, 443);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(httpsScheme);
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
ignoreSSLConnectionManager = new SingleClientConnManager(new BasicHttpParams(), schemeRegistry);
} catch (NoSuchAlgorithmException e) {
// This will only be thrown if SSL isn't available for some reason.
} catch (KeyManagementException e) {
// This might be thrown when passing a key into init(), but no key is being passed.
} catch (GeneralSecurityException e) {
// This catches anything else that might go wrong.
// If anything goes wrong we default to the standard connection manager.
}
}
} }

View File

@ -2,9 +2,9 @@ package com.wordnik.petstore.api;
import com.wordnik.client.ApiException; import com.wordnik.client.ApiException;
import com.wordnik.client.ApiInvoker; import com.wordnik.client.ApiInvoker;
import java.io.File;
import com.wordnik.petstore.model.Pet; import com.wordnik.petstore.model.Pet;
import java.util.*; import java.util.*;
import java.io.File;
public class PetApi { public class PetApi {
String basePath = "http://petstore.swagger.wordnik.com/api"; String basePath = "http://petstore.swagger.wordnik.com/api";

View File

@ -4,6 +4,7 @@ import com.wordnik.client.ApiException;
import com.wordnik.client.ApiInvoker; import com.wordnik.client.ApiInvoker;
import com.wordnik.petstore.model.Order; import com.wordnik.petstore.model.Order;
import java.util.*; import java.util.*;
import java.io.File;
public class StoreApi { public class StoreApi {
String basePath = "http://petstore.swagger.wordnik.com/api"; String basePath = "http://petstore.swagger.wordnik.com/api";

View File

@ -4,6 +4,7 @@ import com.wordnik.client.ApiException;
import com.wordnik.client.ApiInvoker; import com.wordnik.client.ApiInvoker;
import com.wordnik.petstore.model.User; import com.wordnik.petstore.model.User;
import java.util.*; import java.util.*;
import java.io.File;
public class UserApi { public class UserApi {
String basePath = "http://petstore.swagger.wordnik.com/api"; String basePath = "http://petstore.swagger.wordnik.com/api";
@ -25,99 +26,6 @@ public class UserApi {
return basePath; return basePath;
} }
public void createUser (User body) throws ApiException {
// verify required params are set
if(body == null ) {
throw new ApiException(400, "missing required params");
}
// create path and map variables
String path = "/user".replaceAll("\\{format\\}","json");
// query params
Map<String, String> queryParams = new HashMap<String, String>();
Map<String, String> headerParams = new HashMap<String, String>();
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 void createUsersWithArrayInput (List<User> body) throws ApiException {
// verify required params are set
if(body == null ) {
throw new ApiException(400, "missing required params");
}
// create path and map variables
String path = "/user/createWithArray".replaceAll("\\{format\\}","json");
// query params
Map<String, String> queryParams = new HashMap<String, String>();
Map<String, String> headerParams = new HashMap<String, String>();
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 void createUsersWithListInput (List<User> body) throws ApiException {
// verify required params are set
if(body == null ) {
throw new ApiException(400, "missing required params");
}
// create path and map variables
String path = "/user/createWithList".replaceAll("\\{format\\}","json");
// query params
Map<String, String> queryParams = new HashMap<String, String>();
Map<String, String> headerParams = new HashMap<String, String>();
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 void updateUser (String username, User body) throws ApiException { public void updateUser (String username, User body) throws ApiException {
// verify required params are set // verify required params are set
if(username == null || body == null ) { if(username == null || body == null ) {
@ -273,5 +181,98 @@ public class UserApi {
} }
} }
} }
public void createUser (User body) throws ApiException {
// verify required params are set
if(body == null ) {
throw new ApiException(400, "missing required params");
}
// create path and map variables
String path = "/user".replaceAll("\\{format\\}","json");
// query params
Map<String, String> queryParams = new HashMap<String, String>();
Map<String, String> headerParams = new HashMap<String, String>();
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 void createUsersWithArrayInput (List<User> body) throws ApiException {
// verify required params are set
if(body == null ) {
throw new ApiException(400, "missing required params");
}
// create path and map variables
String path = "/user/createWithArray".replaceAll("\\{format\\}","json");
// query params
Map<String, String> queryParams = new HashMap<String, String>();
Map<String, String> headerParams = new HashMap<String, String>();
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 void createUsersWithListInput (List<User> body) throws ApiException {
// verify required params are set
if(body == null ) {
throw new ApiException(400, "missing required params");
}
// create path and map variables
String path = "/user/createWithList".replaceAll("\\{format\\}","json");
// query params
Map<String, String> queryParams = new HashMap<String, String>();
Map<String, String> headerParams = new HashMap<String, String>();
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;
}
}
}
} }

View File

@ -3,10 +3,8 @@ package com.wordnik.petstore.model;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
public class Category { public class Category {
/* Category unique identifier */
@JsonProperty("id") @JsonProperty("id")
private Long id = null; private Long id = null;
/* Name of the category */
@JsonProperty("name") @JsonProperty("name")
private String name = null; private String name = null;
public Long getId() { public Long getId() {

View File

@ -4,19 +4,15 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Date; import java.util.Date;
public class Order { public class Order {
/* Unique identifier for the order */
@JsonProperty("id") @JsonProperty("id")
private Long id = null; private Long id = null;
/* ID of pet being ordered */
@JsonProperty("petId") @JsonProperty("petId")
private Long petId = null; private Long petId = null;
/* Number of pets ordered */
@JsonProperty("quantity") @JsonProperty("quantity")
private Integer quantity = null; private Integer quantity = null;
/* Status of the order */ /* Order Status */
@JsonProperty("status") @JsonProperty("status")
private String status = null; private String status = null;
/* Date shipped, only if it has been */
@JsonProperty("shipDate") @JsonProperty("shipDate")
private Date shipDate = null; private Date shipDate = null;
public Long getId() { public Long getId() {

View File

@ -6,19 +6,15 @@ import java.util.*;
import com.wordnik.petstore.model.Category; import com.wordnik.petstore.model.Category;
import com.wordnik.petstore.model.Tag; import com.wordnik.petstore.model.Tag;
public class Pet { public class Pet {
/* Unique identifier for the Pet */ /* unique identifier for the pet */
@JsonProperty("id") @JsonProperty("id")
private Long id = null; private Long id = null;
/* Category the pet is in */
@JsonProperty("category") @JsonProperty("category")
private Category category = null; private Category category = null;
/* Friendly name of the pet */
@JsonProperty("name") @JsonProperty("name")
private String name = null; private String name = null;
/* Image URLs */
@JsonProperty("photoUrls") @JsonProperty("photoUrls")
private List<String> photoUrls = new ArrayList<String>(); private List<String> photoUrls = new ArrayList<String>();
/* Tags assigned to this pet */
@JsonProperty("tags") @JsonProperty("tags")
private List<Tag> tags = new ArrayList<Tag>(); private List<Tag> tags = new ArrayList<Tag>();
/* pet status in the store */ /* pet status in the store */

View File

@ -3,10 +3,8 @@ package com.wordnik.petstore.model;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
public class Tag { public class Tag {
/* Unique identifier for the tag */
@JsonProperty("id") @JsonProperty("id")
private Long id = null; private Long id = null;
/* Friendly name for the tag */
@JsonProperty("name") @JsonProperty("name")
private String name = null; private String name = null;
public Long getId() { public Long getId() {

View File

@ -3,25 +3,18 @@ package com.wordnik.petstore.model;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
public class User { public class User {
/* Unique identifier for the user */
@JsonProperty("id") @JsonProperty("id")
private Long id = null; private Long id = null;
/* Unique username */
@JsonProperty("username")
private String username = null;
/* First name of the user */
@JsonProperty("firstName") @JsonProperty("firstName")
private String firstName = null; private String firstName = null;
/* Last name of the user */ @JsonProperty("username")
private String username = null;
@JsonProperty("lastName") @JsonProperty("lastName")
private String lastName = null; private String lastName = null;
/* Email address of the user */
@JsonProperty("email") @JsonProperty("email")
private String email = null; private String email = null;
/* Password name of the user */
@JsonProperty("password") @JsonProperty("password")
private String password = null; private String password = null;
/* Phone number of the user */
@JsonProperty("phone") @JsonProperty("phone")
private String phone = null; private String phone = null;
/* User Status */ /* User Status */
@ -34,13 +27,6 @@ public class User {
this.id = id; this.id = id;
} }
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstName() { public String getFirstName() {
return firstName; return firstName;
} }
@ -48,6 +34,13 @@ public class User {
this.firstName = firstName; this.firstName = firstName;
} }
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getLastName() { public String getLastName() {
return lastName; return lastName;
} }
@ -88,8 +81,8 @@ public class User {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("class User {\n"); sb.append("class User {\n");
sb.append(" id: ").append(id).append("\n"); sb.append(" id: ").append(id).append("\n");
sb.append(" username: ").append(username).append("\n");
sb.append(" firstName: ").append(firstName).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(" lastName: ").append(lastName).append("\n");
sb.append(" email: ").append(email).append("\n"); sb.append(" email: ").append(email).append("\n");
sb.append(" password: ").append(password).append("\n"); sb.append(" password: ").append(password).append("\n");