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);

Reply via email to