forked from loafle/openapi-generator-original
Updated PetStore sample for java client jersey2
This commit is contained in:
parent
0f67be5590
commit
a3024a3553
@ -124,6 +124,11 @@
|
||||
<artifactId>jersey-media-multipart</artifactId>
|
||||
<version>${jersey-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.media</groupId>
|
||||
<artifactId>jersey-media-json-jackson</artifactId>
|
||||
<version>2.22.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- JSON processing: jackson -->
|
||||
<dependency>
|
||||
|
@ -6,6 +6,7 @@ import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.client.Invocation;
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
import javax.ws.rs.core.Form;
|
||||
import javax.ws.rs.core.GenericType;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
@ -29,20 +30,18 @@ import java.util.TimeZone;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.File;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.text.ParseException;
|
||||
|
||||
import io.swagger.client.auth.Authentication;
|
||||
import io.swagger.client.auth.HttpBasicAuth;
|
||||
import io.swagger.client.auth.ApiKeyAuth;
|
||||
import io.swagger.client.auth.OAuth;
|
||||
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-09T16:27:55.818+08:00")
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-09T12:31:44.572-05:00")
|
||||
public class ApiClient {
|
||||
private Client client;
|
||||
private Map<String, Client> hostMap = new HashMap<String, Client>();
|
||||
@ -411,18 +410,39 @@ public class ApiClient {
|
||||
* Serialize the given Java object into string entity according the given
|
||||
* Content-Type (only JSON is supported for now).
|
||||
*/
|
||||
public Entity<String> serialize(Object obj, String contentType) throws ApiException {
|
||||
if (isJsonMime(contentType)) {
|
||||
return Entity.json(json.serialize(obj));
|
||||
public Entity<?> serialize(Object obj, Map<String, Object> formParams, String contentType) throws ApiException {
|
||||
Entity<?> entity = null;
|
||||
if (contentType.startsWith("multipart/form-data")) {
|
||||
MultiPart multiPart = new MultiPart();
|
||||
for (Entry<String, Object> param: formParams.entrySet()) {
|
||||
if (param.getValue() instanceof File) {
|
||||
File file = (File) param.getValue();
|
||||
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey())
|
||||
.fileName(file.getName()).size(file.length()).build();
|
||||
multiPart.bodyPart(new FormDataBodyPart(contentDisp, file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
|
||||
} else {
|
||||
throw new ApiException(400, "can not serialize object into Content-Type: " + contentType);
|
||||
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).build();
|
||||
multiPart.bodyPart(new FormDataBodyPart(contentDisp, parameterToString(param.getValue())));
|
||||
}
|
||||
}
|
||||
entity = Entity.entity(multiPart, MediaType.MULTIPART_FORM_DATA_TYPE);
|
||||
} else if (contentType.startsWith("application/x-www-form-urlencoded")) {
|
||||
Form form = new Form();
|
||||
for (Entry<String, Object> param: formParams.entrySet()) {
|
||||
form.param(param.getKey(), parameterToString(param.getValue()));
|
||||
}
|
||||
entity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE);
|
||||
} else {
|
||||
// We let jersey handle the serialization
|
||||
entity = Entity.entity(obj, contentType);
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserialize response body to Java object according to the Content-Type.
|
||||
*/
|
||||
public <T> T deserialize(Response response, TypeRef returnType) throws ApiException {
|
||||
public <T> T deserialize(Response response, GenericType<T> returnType) throws ApiException {
|
||||
String contentType = null;
|
||||
List<Object> contentTypes = response.getHeaders().get("Content-Type");
|
||||
if (contentTypes != null && !contentTypes.isEmpty())
|
||||
@ -430,24 +450,7 @@ public class ApiClient {
|
||||
if (contentType == null)
|
||||
throw new ApiException(500, "missing Content-Type in response");
|
||||
|
||||
String body;
|
||||
if (response.hasEntity())
|
||||
body = (String) response.readEntity(String.class);
|
||||
else
|
||||
body = "";
|
||||
|
||||
if (isJsonMime(contentType)) {
|
||||
return json.deserialize(body, returnType);
|
||||
} else if (returnType.getType().equals(String.class)) {
|
||||
// Expecting string, return the raw response body.
|
||||
return (T) body;
|
||||
} else {
|
||||
throw new ApiException(
|
||||
500,
|
||||
"Content type \"" + contentType + "\" is not supported for type: "
|
||||
+ returnType.getType()
|
||||
);
|
||||
}
|
||||
return response.readEntity(returnType);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -465,7 +468,7 @@ public class ApiClient {
|
||||
* @param returnType The return type into which to deserialize the response
|
||||
* @return The response body in type of string
|
||||
*/
|
||||
public <T> T invokeAPI(String path, String method, List<Pair> queryParams, Object body, Map<String, String> headerParams, Map<String, Object> formParams, String accept, String contentType, String[] authNames, TypeRef returnType) throws ApiException {
|
||||
public <T> T invokeAPI(String path, String method, List<Pair> queryParams, Object body, Map<String, String> headerParams, Map<String, Object> formParams, String accept, String contentType, String[] authNames, GenericType<T> returnType) throws ApiException {
|
||||
updateParamsForAuth(authNames, queryParams, headerParams);
|
||||
|
||||
WebTarget target = client.target(this.basePath).path(path);
|
||||
@ -496,50 +499,16 @@ public class ApiClient {
|
||||
}
|
||||
}
|
||||
|
||||
Entity<?> formEntity = null;
|
||||
|
||||
if (contentType.startsWith("multipart/form-data")) {
|
||||
MultiPart multiPart = new MultiPart();
|
||||
for (Entry<String, Object> param: formParams.entrySet()) {
|
||||
if (param.getValue() instanceof File) {
|
||||
File file = (File) param.getValue();
|
||||
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey())
|
||||
.fileName(file.getName()).size(file.length()).build();
|
||||
multiPart.bodyPart(new FormDataBodyPart(contentDisp, file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
|
||||
} else {
|
||||
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).build();
|
||||
multiPart.bodyPart(new FormDataBodyPart(contentDisp, parameterToString(param.getValue())));
|
||||
}
|
||||
}
|
||||
formEntity = Entity.entity(multiPart, MediaType.MULTIPART_FORM_DATA_TYPE);
|
||||
} else if (contentType.startsWith("application/x-www-form-urlencoded")) {
|
||||
Form form = new Form();
|
||||
for (Entry<String, Object> param: formParams.entrySet()) {
|
||||
form.param(param.getKey(), parameterToString(param.getValue()));
|
||||
}
|
||||
formEntity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE);
|
||||
}
|
||||
Entity<?> entity = serialize(body, formParams, contentType);
|
||||
|
||||
Response response = null;
|
||||
|
||||
if ("GET".equals(method)) {
|
||||
response = invocationBuilder.get();
|
||||
} else if ("POST".equals(method)) {
|
||||
if (formEntity != null) {
|
||||
response = invocationBuilder.post(formEntity);
|
||||
} else if (body == null) {
|
||||
response = invocationBuilder.post(null);
|
||||
} else {
|
||||
response = invocationBuilder.post(serialize(body, contentType));
|
||||
}
|
||||
response = invocationBuilder.post(entity);
|
||||
} else if ("PUT".equals(method)) {
|
||||
if (formEntity != null) {
|
||||
response = invocationBuilder.put(formEntity);
|
||||
} else if (body == null) {
|
||||
response = invocationBuilder.put(null);
|
||||
} else {
|
||||
response = invocationBuilder.put(serialize(body, contentType));
|
||||
}
|
||||
response = invocationBuilder.put(entity);
|
||||
} else if ("DELETE".equals(method)) {
|
||||
response = invocationBuilder.delete();
|
||||
} else {
|
||||
@ -578,6 +547,8 @@ public class ApiClient {
|
||||
private void buildClient() {
|
||||
final ClientConfig clientConfig = new ClientConfig();
|
||||
clientConfig.register(MultiPartFeature.class);
|
||||
clientConfig.register(json);
|
||||
clientConfig.register(org.glassfish.jersey.jackson.JacksonFeature.class);
|
||||
if (debugging) {
|
||||
clientConfig.register(LoggingFilter.class);
|
||||
}
|
||||
|
@ -6,10 +6,10 @@ import com.fasterxml.jackson.datatype.joda.*;
|
||||
|
||||
import java.text.DateFormat;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.ws.rs.ext.ContextResolver;
|
||||
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00")
|
||||
public class JSON {
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-09T12:31:44.572-05:00")
|
||||
public class JSON implements ContextResolver<ObjectMapper> {
|
||||
private ObjectMapper mapper;
|
||||
|
||||
public JSON() {
|
||||
@ -29,36 +29,8 @@ public class JSON {
|
||||
mapper.setDateFormat(dateFormat);
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialize the given Java object into JSON string.
|
||||
*/
|
||||
public String serialize(Object obj) throws ApiException {
|
||||
try {
|
||||
if (obj != null)
|
||||
return mapper.writeValueAsString(obj);
|
||||
else
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
throw new ApiException(400, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserialize the given JSON string to Java object.
|
||||
*
|
||||
* @param body The JSON string
|
||||
* @param returnType The type to deserialize inot
|
||||
* @return The deserialized Java object
|
||||
*/
|
||||
public <T> T deserialize(String body, TypeRef returnType) throws ApiException {
|
||||
JavaType javaType = mapper.constructType(returnType.getType());
|
||||
try {
|
||||
return mapper.readValue(body, javaType);
|
||||
} catch (IOException e) {
|
||||
if (returnType.getType().equals(String.class))
|
||||
return (T) body;
|
||||
else
|
||||
throw new ApiException(500, e.getMessage(), null, body);
|
||||
}
|
||||
@Override
|
||||
public ObjectMapper getContext(Class<?> type) {
|
||||
return mapper;
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +0,0 @@
|
||||
package io.swagger.client;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00")
|
||||
public class TypeRef<T> {
|
||||
private final Type type;
|
||||
|
||||
public TypeRef() {
|
||||
this.type = getGenericType(getClass());
|
||||
}
|
||||
|
||||
private static Type getGenericType(Class<?> klass) {
|
||||
Type superclass = klass.getGenericSuperclass();
|
||||
if (superclass instanceof Class) {
|
||||
throw new RuntimeException("No type parameter provided");
|
||||
}
|
||||
ParameterizedType parameterized = (ParameterizedType) superclass;
|
||||
return parameterized.getActualTypeArguments()[0];
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
@ -4,14 +4,15 @@ import io.swagger.client.ApiException;
|
||||
import io.swagger.client.ApiClient;
|
||||
import io.swagger.client.Configuration;
|
||||
import io.swagger.client.Pair;
|
||||
import io.swagger.client.TypeRef;
|
||||
|
||||
import javax.ws.rs.core.GenericType;
|
||||
|
||||
import io.swagger.client.model.Pet;
|
||||
import java.io.File;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00")
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-09T12:31:44.572-05:00")
|
||||
public class PetApi {
|
||||
private ApiClient apiClient;
|
||||
|
||||
@ -150,7 +151,7 @@ public class PetApi {
|
||||
String[] authNames = new String[] { "petstore_auth" };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<List<Pet>>() {};
|
||||
GenericType<List<Pet>> returnType = new GenericType<List<Pet>>() {};
|
||||
return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
@ -193,7 +194,7 @@ public class PetApi {
|
||||
String[] authNames = new String[] { "petstore_auth" };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<List<Pet>>() {};
|
||||
GenericType<List<Pet>> returnType = new GenericType<List<Pet>>() {};
|
||||
return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
@ -240,7 +241,7 @@ public class PetApi {
|
||||
String[] authNames = new String[] { "api_key" };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<Pet>() {};
|
||||
GenericType<Pet> returnType = new GenericType<Pet>() {};
|
||||
return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
|
@ -4,14 +4,15 @@ import io.swagger.client.ApiException;
|
||||
import io.swagger.client.ApiClient;
|
||||
import io.swagger.client.Configuration;
|
||||
import io.swagger.client.Pair;
|
||||
import io.swagger.client.TypeRef;
|
||||
|
||||
import javax.ws.rs.core.GenericType;
|
||||
|
||||
import java.util.Map;
|
||||
import io.swagger.client.model.Order;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00")
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-09T12:31:44.572-05:00")
|
||||
public class StoreApi {
|
||||
private ApiClient apiClient;
|
||||
|
||||
@ -67,7 +68,7 @@ public class StoreApi {
|
||||
String[] authNames = new String[] { "api_key" };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<Map<String, Integer>>() {};
|
||||
GenericType<Map<String, Integer>> returnType = new GenericType<Map<String, Integer>>() {};
|
||||
return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
@ -108,7 +109,7 @@ public class StoreApi {
|
||||
String[] authNames = new String[] { };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<Order>() {};
|
||||
GenericType<Order> returnType = new GenericType<Order>() {};
|
||||
return apiClient.invokeAPI(path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
@ -155,7 +156,7 @@ public class StoreApi {
|
||||
String[] authNames = new String[] { };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<Order>() {};
|
||||
GenericType<Order> returnType = new GenericType<Order>() {};
|
||||
return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
|
@ -4,14 +4,15 @@ import io.swagger.client.ApiException;
|
||||
import io.swagger.client.ApiClient;
|
||||
import io.swagger.client.Configuration;
|
||||
import io.swagger.client.Pair;
|
||||
import io.swagger.client.TypeRef;
|
||||
|
||||
import javax.ws.rs.core.GenericType;
|
||||
|
||||
import io.swagger.client.model.User;
|
||||
import java.util.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00")
|
||||
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-09T12:31:44.572-05:00")
|
||||
public class UserApi {
|
||||
private ApiClient apiClient;
|
||||
|
||||
@ -193,7 +194,7 @@ public class UserApi {
|
||||
String[] authNames = new String[] { };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<String>() {};
|
||||
GenericType<String> returnType = new GenericType<String>() {};
|
||||
return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
@ -279,7 +280,7 @@ public class UserApi {
|
||||
String[] authNames = new String[] { };
|
||||
|
||||
|
||||
TypeRef returnType = new TypeRef<User>() {};
|
||||
GenericType<User> returnType = new GenericType<User>() {};
|
||||
return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
|
||||
|
||||
}
|
||||
|
@ -4,9 +4,7 @@ import io.swagger.client.model.Order;
|
||||
|
||||
import java.lang.Exception;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.junit.*;
|
||||
@ -30,9 +28,8 @@ public class JSONTest {
|
||||
final String dateStr = "2015-11-07T14:11:05.267Z";
|
||||
order.setShipDate(dateFormat.parse(dateStr));
|
||||
|
||||
String str = json.serialize(order);
|
||||
TypeRef typeRef = new TypeRef<Order>() { };
|
||||
Order o = json.deserialize(str, typeRef);
|
||||
String str = json.getContext(null).writeValueAsString(order);
|
||||
Order o = json.getContext(null).readValue(str, Order.class);
|
||||
assertEquals(dateStr, dateFormat.format(o.getShipDate()));
|
||||
}
|
||||
|
||||
@ -44,9 +41,8 @@ public class JSONTest {
|
||||
order.setShipDate(dateFormat.parse(dateStr));
|
||||
|
||||
json.setDateFormat(dateFormat);
|
||||
String str = json.serialize(order);
|
||||
TypeRef typeRef = new TypeRef<Order>() { };
|
||||
Order o = json.deserialize(str, typeRef);
|
||||
String str = json.getContext(null).writeValueAsString(order);
|
||||
Order o = json.getContext(null).readValue(str, Order.class);
|
||||
assertEquals(dateStr, dateFormat.format(o.getShipDate()));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user