Repository: cxf Updated Branches: refs/heads/master 1cdfc4a8c -> edae59057
Starting testing the pet shop resorce Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/edae5905 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/edae5905 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/edae5905 Branch: refs/heads/master Commit: edae59057fd9061ee332667e4f2e066d5cad1f31 Parents: 1cdfc4a Author: Sergey Beryozkin <sberyoz...@gmail.com> Authored: Fri Jul 21 11:43:13 2017 +0300 Committer: Sergey Beryozkin <sberyoz...@gmail.com> Committed: Fri Jul 21 11:43:13 2017 +0300 ---------------------------------------------------------------------- .../apache/cxf/jaxrs/swagger/SwaggerUtils.java | 38 +++++---- .../cxf/jaxrs/swagger/SwaggerUtilsTest.java | 89 ++++++++++++++++++++ 2 files changed, 110 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/edae5905/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUtils.java b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUtils.java index 5807e8d..8f7b80f 100644 --- a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUtils.java +++ b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUtils.java @@ -46,21 +46,21 @@ import org.apache.cxf.jaxrs.utils.ResourceUtils; public final class SwaggerUtils { private static final Logger LOG = LogUtils.getL7dLogger(ResourceUtils.class); - private static final Map<String, String> SWAGGER_TYPE_MAP; + private static final Map<String, Class<?>> SWAGGER_TYPE_MAP; static { SWAGGER_TYPE_MAP = new HashMap<>(); - SWAGGER_TYPE_MAP.put("string", "String"); - SWAGGER_TYPE_MAP.put("integer", "long"); - SWAGGER_TYPE_MAP.put("float", "float"); - SWAGGER_TYPE_MAP.put("double", "double"); - SWAGGER_TYPE_MAP.put("int", "int"); - SWAGGER_TYPE_MAP.put("long", "long"); - SWAGGER_TYPE_MAP.put("byte", "byte"); - SWAGGER_TYPE_MAP.put("boolean", "boolean"); - SWAGGER_TYPE_MAP.put("date", "java.util.Date"); - SWAGGER_TYPE_MAP.put("dateTime", "java.util.Date"); - SWAGGER_TYPE_MAP.put("File", "java.io.InputStream"); - SWAGGER_TYPE_MAP.put("file", "java.io.InputStream"); + SWAGGER_TYPE_MAP.put("string", String.class); + SWAGGER_TYPE_MAP.put("integer", long.class); + SWAGGER_TYPE_MAP.put("float", float.class); + SWAGGER_TYPE_MAP.put("double", double.class); + SWAGGER_TYPE_MAP.put("int", int.class); + SWAGGER_TYPE_MAP.put("long", long.class); + SWAGGER_TYPE_MAP.put("byte", byte.class); + SWAGGER_TYPE_MAP.put("boolean", boolean.class); + SWAGGER_TYPE_MAP.put("date", java.util.Date.class); + SWAGGER_TYPE_MAP.put("dateTime", java.util.Date.class); + SWAGGER_TYPE_MAP.put("File", java.io.InputStream.class); + SWAGGER_TYPE_MAP.put("file", java.io.InputStream.class); } private SwaggerUtils() { @@ -168,16 +168,20 @@ public final class SwaggerUtils { } private static void setJavaType(Parameter userParam, String typeName) { - String javaTypeName = SWAGGER_TYPE_MAP.get(typeName); - if (javaTypeName != null) { + Class<?> javaType = SWAGGER_TYPE_MAP.get(typeName); + if (javaType == null) { try { - userParam.setJavaType(ClassLoaderUtils.loadClass(javaTypeName, SwaggerUtils.class)); + // May work if the model has already been compiled + // TODO: need to know the package name + javaType = ClassLoaderUtils.loadClass(typeName, SwaggerUtils.class); } catch (Throwable t) { - // ignore - can be a reference to a JSON model class, etc + // ignore } } + userParam.setJavaType(javaType); } + private static String listToString(List<String> list) { if (list != null) { StringBuilder sb = new StringBuilder(); http://git-wip-us.apache.org/repos/asf/cxf/blob/edae5905/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java ---------------------------------------------------------------------- diff --git a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java index 68b3f32..a2dfcd7 100644 --- a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java +++ b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java @@ -32,6 +32,95 @@ import org.junit.Test; public class SwaggerUtilsTest extends Assert { @Test + public void testConvertSwaggerPetShopToUserApp() { + UserApplication ap = SwaggerUtils.getUserApplication("/swagger2petShop.json"); + assertNotNull(ap); + assertEquals("/v2", ap.getBasePath()); + Map<String, UserResource> map = ap.getResourcesAsMap(); + assertEquals(3, map.size()); + + UserResource store = map.get("store"); + verifyPetStoreResource(store); + + UserResource user = map.get("user"); + verifyPetUserResource(user); + + UserResource pet = map.get("pet"); + verifyPetResource(pet); + + + } + + + private void verifyPetStoreResource(UserResource ur) { + assertNotNull(ur); + assertEquals("/store", ur.getPath()); + assertEquals(4, ur.getOperations().size()); + //GET /store/inventory + UserOperation getInv = ur.getOperations().get(0); + assertEquals("getInventory", getInv.getName()); + assertEquals("/inventory", getInv.getPath()); + assertEquals("GET", getInv.getVerb()); + assertEquals("application/json", getInv.getProduces()); + assertNull(getInv.getConsumes()); + assertEquals(0, getInv.getParameters().size()); + //TODO: check 200 response type + + //POST /store/inventory + UserOperation placeOrder = ur.getOperations().get(1); + assertEquals("placeOrder", placeOrder.getName()); + assertEquals("/order", placeOrder.getPath()); + assertEquals("POST", placeOrder.getVerb()); + assertEquals("application/xml,application/json", placeOrder.getProduces()); + assertNull(placeOrder.getConsumes()); + assertEquals(1, placeOrder.getParameters().size()); + Parameter placeOrderParam1 = placeOrder.getParameters().get(0); + assertEquals("body", placeOrderParam1.getName()); + assertEquals(ParameterType.REQUEST_BODY, placeOrderParam1.getType()); + //TODO: check that placeOrderParam1 refers to Order model + //TODO: check 200 response type + + //GET /store/order/{orderId} + UserOperation getOrderById = ur.getOperations().get(2); + assertEquals("getOrderById", getOrderById.getName()); + assertEquals("/order/{orderId}", getOrderById.getPath()); + assertEquals("GET", getOrderById.getVerb()); + assertEquals("application/xml,application/json", getOrderById.getProduces()); + assertNull(getOrderById.getConsumes()); + assertEquals(1, getOrderById.getParameters().size()); + Parameter getOrderByIdParam1 = getOrderById.getParameters().get(0); + assertEquals("orderId", getOrderByIdParam1.getName()); + assertEquals(ParameterType.PATH, getOrderByIdParam1.getType()); + assertEquals(long.class, getOrderByIdParam1.getJavaType()); + //TODO: check 200 response type + + //DELETE /store/order/{orderId} + UserOperation deleteOrder = ur.getOperations().get(3); + assertEquals("deleteOrder", deleteOrder.getName()); + assertEquals("/order/{orderId}", deleteOrder.getPath()); + assertEquals("DELETE", deleteOrder.getVerb()); + assertEquals("application/xml,application/json", deleteOrder.getProduces()); + assertNull(deleteOrder.getConsumes()); + assertEquals(1, getOrderById.getParameters().size()); + Parameter deleteOrderParam1 = deleteOrder.getParameters().get(0); + assertEquals("orderId", deleteOrderParam1.getName()); + assertEquals(ParameterType.PATH, deleteOrderParam1.getType()); + assertEquals(long.class, deleteOrderParam1.getJavaType()); + //TODO: check 200 response type + + } + + private void verifyPetUserResource(UserResource ur) { + assertNotNull(ur); + + + } + + private void verifyPetResource(UserResource ur) { + assertNotNull(ur); + } + + @Test public void testConvertSwaggerToUserApp() { UserApplication ap = SwaggerUtils.getUserApplication("/swagger20.json"); assertNotNull(ap);