You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2017/07/24 12:36:07 UTC
cxf git commit: Renaming SwaggerUtils to SwaggerParseUtils,
moving it to swagger.parse subpackage,
introducing ParseConfiguration (to be enhanced)
Repository: cxf
Updated Branches:
refs/heads/master d3214b660 -> f33f5f5bf
Renaming SwaggerUtils to SwaggerParseUtils, moving it to swagger.parse subpackage, introducing ParseConfiguration (to be enhanced)
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f33f5f5b
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f33f5f5b
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f33f5f5b
Branch: refs/heads/master
Commit: f33f5f5bff7a3e399252eb4ac100b95bbcee3945
Parents: d3214b6
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Mon Jul 24 15:35:51 2017 +0300
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Mon Jul 24 15:35:51 2017 +0300
----------------------------------------------------------------------
.../apache/cxf/jaxrs/swagger/SwaggerUtils.java | 199 ---------
.../jaxrs/swagger/parse/ParseConfiguration.java | 47 +++
.../jaxrs/swagger/parse/SwaggerParseUtils.java | 203 +++++++++
.../cxf/jaxrs/swagger/SwaggerUtilsTest.java | 410 -------------------
.../swagger/parse/SwaggerParseUtilsTest.java | 410 +++++++++++++++++++
.../AbstractSwagger2ServiceDescriptionTest.java | 4 +-
6 files changed, 662 insertions(+), 611 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/f33f5f5b/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
deleted file mode 100644
index 8f7b80f..0000000
--- a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUtils.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Logger;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
-import org.apache.cxf.common.classloader.ClassLoaderUtils;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.helpers.CastUtils;
-import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter;
-import org.apache.cxf.jaxrs.model.Parameter;
-import org.apache.cxf.jaxrs.model.ParameterType;
-import org.apache.cxf.jaxrs.model.UserApplication;
-import org.apache.cxf.jaxrs.model.UserOperation;
-import org.apache.cxf.jaxrs.model.UserResource;
-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, Class<?>> SWAGGER_TYPE_MAP;
- static {
- SWAGGER_TYPE_MAP = new HashMap<>();
- 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() {
-
- }
- public static UserApplication getUserApplication(String loc) {
- return getUserApplication(loc, BusFactory.getThreadDefaultBus());
- }
- public static UserApplication getUserApplication(String loc, Bus bus) {
- try {
- InputStream is = ResourceUtils.getResourceStream(loc, bus);
- if (is == null) {
- return null;
- }
- return getUserApplicationFromStream(is);
- } catch (Exception ex) {
- LOG.warning("Problem with processing a user model at " + loc);
- }
- return null;
- }
- public static UserApplication getUserApplicationFromStream(InputStream is) throws IOException {
- return getUserApplicationFromJson(IOUtils.readStringFromStream(is));
- }
- public static UserApplication getUserApplicationFromJson(String json) {
- JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
- Map<String, Object> map = reader.fromJson(json);
-
- UserApplication app = new UserApplication();
- String relativePath = (String)map.get("basePath");
- app.setBasePath(StringUtils.isEmpty(relativePath) ? "/" : relativePath);
-
-
- Map<String, List<UserOperation>> userOpsMap = new LinkedHashMap<String, List<UserOperation>>();
- Set<String> tags = new HashSet<>();
- List<Map<String, Object>> tagsProp = CastUtils.cast((List<?>)map.get("tags"));
- if (tagsProp != null) {
- for (Map<String, Object> tagProp : tagsProp) {
- tags.add((String)tagProp.get("name"));
- }
- } else {
- tags.add("");
- }
- for (String tag : tags) {
- userOpsMap.put(tag, new LinkedList<UserOperation>());
- }
-
-
- Map<String, Map<String, Object>> paths = CastUtils.cast((Map<?, ?>)map.get("paths"));
- for (Map.Entry<String, Map<String, Object>> pathEntry : paths.entrySet()) {
- String operPath = pathEntry.getKey();
-
- Map<String, Object> operations = pathEntry.getValue();
- for (Map.Entry<String, Object> operEntry : operations.entrySet()) {
-
- UserOperation userOp = new UserOperation();
- userOp.setVerb(operEntry.getKey().toUpperCase());
-
- Map<String, Object> oper = CastUtils.cast((Map<?, ?>)operEntry.getValue());
- List<String> opTags = CastUtils.cast((List<?>)oper.get("tags"));
- String opTag = opTags == null ? "" : opTags.get(0);
-
- String realOpPath = operPath.equals("/" + opTag) ? "/" : operPath.substring(opTag.length() + 1);
- userOp.setPath(realOpPath);
-
- userOp.setName((String)oper.get("operationId"));
- List<String> opProduces = CastUtils.cast((List<?>)oper.get("produces"));
- userOp.setProduces(listToString(opProduces));
-
- List<String> opConsumes = CastUtils.cast((List<?>)oper.get("consumes"));
- userOp.setConsumes(listToString(opConsumes));
-
- List<Parameter> userOpParams = new LinkedList<Parameter>();
- List<Map<String, Object>> params = CastUtils.cast((List<?>)oper.get("parameters"));
- for (Map<String, Object> param : params) {
- String name = (String)param.get("name");
- //"query", "header", "path", "formData" or "body"
- String paramType = (String)param.get("in");
- ParameterType pType = "body".equals(paramType) ? ParameterType.REQUEST_BODY
- : "formData".equals(paramType)
- ? ParameterType.FORM : ParameterType.valueOf(paramType.toUpperCase());
- Parameter userParam = new Parameter(pType, name);
-
- setJavaType(userParam, (String)param.get("type"));
- userOpParams.add(userParam);
- }
- if (!userOpParams.isEmpty()) {
- userOp.setParameters(userOpParams);
- }
- userOpsMap.get(opTag).add(userOp);
-
- }
- }
-
- List<UserResource> resources = new LinkedList<UserResource>();
-
- for (Map.Entry<String, List<UserOperation>> entry : userOpsMap.entrySet()) {
- UserResource ur = new UserResource();
- ur.setPath("/" + entry.getKey());
- ur.setOperations(entry.getValue());
- ur.setName(entry.getKey());
- resources.add(ur);
- }
-
- app.setResources(resources);
- return app;
- }
-
- private static void setJavaType(Parameter userParam, String typeName) {
- Class<?> javaType = SWAGGER_TYPE_MAP.get(typeName);
- if (javaType == null) {
- try {
- // 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
- }
- }
-
- userParam.setJavaType(javaType);
- }
-
- private static String listToString(List<String> list) {
- if (list != null) {
- StringBuilder sb = new StringBuilder();
- for (String s : list) {
- if (sb.length() > 0) {
- sb.append(',');
- }
- sb.append(s);
- }
- return sb.toString();
- } else {
- return null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/f33f5f5b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/ParseConfiguration.java
----------------------------------------------------------------------
diff --git a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/ParseConfiguration.java b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/ParseConfiguration.java
new file mode 100644
index 0000000..18e5b67
--- /dev/null
+++ b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/ParseConfiguration.java
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxrs.swagger.parse;
+
+import org.apache.cxf.Bus;
+
+public class ParseConfiguration {
+ private String docLocation;
+ private Bus bus;
+
+ public ParseConfiguration() {
+ }
+
+ public ParseConfiguration(String docLocation, Bus bus) {
+ this.docLocation = docLocation;
+ this.bus = bus;
+ }
+
+ public String getDocLocation() {
+ return docLocation;
+ }
+ public void setDocLocation(String docLocation) {
+ this.docLocation = docLocation;
+ }
+ public Bus getBus() {
+ return bus;
+ }
+ public void setBus(Bus bus) {
+ this.bus = bus;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/f33f5f5b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtils.java
----------------------------------------------------------------------
diff --git a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtils.java b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtils.java
new file mode 100644
index 0000000..d728bdf
--- /dev/null
+++ b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtils.java
@@ -0,0 +1,203 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxrs.swagger.parse;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter;
+import org.apache.cxf.jaxrs.model.Parameter;
+import org.apache.cxf.jaxrs.model.ParameterType;
+import org.apache.cxf.jaxrs.model.UserApplication;
+import org.apache.cxf.jaxrs.model.UserOperation;
+import org.apache.cxf.jaxrs.model.UserResource;
+import org.apache.cxf.jaxrs.utils.ResourceUtils;
+
+public final class SwaggerParseUtils {
+ private static final Logger LOG = LogUtils.getL7dLogger(ResourceUtils.class);
+ private static final Map<String, Class<?>> SWAGGER_TYPE_MAP;
+ static {
+ SWAGGER_TYPE_MAP = new HashMap<>();
+ 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 SwaggerParseUtils() {
+
+ }
+ public static UserApplication getUserApplication(String loc) {
+ return getUserApplication(loc, BusFactory.getThreadDefaultBus());
+ }
+ public static UserApplication getUserApplication(String loc, Bus bus) {
+ return getUserApplication(new ParseConfiguration(loc, bus));
+ }
+ public static UserApplication getUserApplication(ParseConfiguration cfg) {
+ try {
+ InputStream is = ResourceUtils.getResourceStream(cfg.getDocLocation(),
+ cfg.getBus());
+ if (is == null) {
+ return null;
+ }
+ return getUserApplicationFromStream(is);
+ } catch (Exception ex) {
+ LOG.warning("Problem with processing a user model at " + cfg.getDocLocation());
+ }
+ return null;
+ }
+ public static UserApplication getUserApplicationFromStream(InputStream is) throws IOException {
+ return getUserApplicationFromJson(IOUtils.readStringFromStream(is));
+ }
+ public static UserApplication getUserApplicationFromJson(String json) {
+ JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
+ Map<String, Object> map = reader.fromJson(json);
+
+ UserApplication app = new UserApplication();
+ String relativePath = (String)map.get("basePath");
+ app.setBasePath(StringUtils.isEmpty(relativePath) ? "/" : relativePath);
+
+
+ Map<String, List<UserOperation>> userOpsMap = new LinkedHashMap<String, List<UserOperation>>();
+ Set<String> tags = new HashSet<>();
+ List<Map<String, Object>> tagsProp = CastUtils.cast((List<?>)map.get("tags"));
+ if (tagsProp != null) {
+ for (Map<String, Object> tagProp : tagsProp) {
+ tags.add((String)tagProp.get("name"));
+ }
+ } else {
+ tags.add("");
+ }
+ for (String tag : tags) {
+ userOpsMap.put(tag, new LinkedList<UserOperation>());
+ }
+
+
+ Map<String, Map<String, Object>> paths = CastUtils.cast((Map<?, ?>)map.get("paths"));
+ for (Map.Entry<String, Map<String, Object>> pathEntry : paths.entrySet()) {
+ String operPath = pathEntry.getKey();
+
+ Map<String, Object> operations = pathEntry.getValue();
+ for (Map.Entry<String, Object> operEntry : operations.entrySet()) {
+
+ UserOperation userOp = new UserOperation();
+ userOp.setVerb(operEntry.getKey().toUpperCase());
+
+ Map<String, Object> oper = CastUtils.cast((Map<?, ?>)operEntry.getValue());
+ List<String> opTags = CastUtils.cast((List<?>)oper.get("tags"));
+ String opTag = opTags == null ? "" : opTags.get(0);
+
+ String realOpPath = operPath.equals("/" + opTag) ? "/" : operPath.substring(opTag.length() + 1);
+ userOp.setPath(realOpPath);
+
+ userOp.setName((String)oper.get("operationId"));
+ List<String> opProduces = CastUtils.cast((List<?>)oper.get("produces"));
+ userOp.setProduces(listToString(opProduces));
+
+ List<String> opConsumes = CastUtils.cast((List<?>)oper.get("consumes"));
+ userOp.setConsumes(listToString(opConsumes));
+
+ List<Parameter> userOpParams = new LinkedList<Parameter>();
+ List<Map<String, Object>> params = CastUtils.cast((List<?>)oper.get("parameters"));
+ for (Map<String, Object> param : params) {
+ String name = (String)param.get("name");
+ //"query", "header", "path", "formData" or "body"
+ String paramType = (String)param.get("in");
+ ParameterType pType = "body".equals(paramType) ? ParameterType.REQUEST_BODY
+ : "formData".equals(paramType)
+ ? ParameterType.FORM : ParameterType.valueOf(paramType.toUpperCase());
+ Parameter userParam = new Parameter(pType, name);
+
+ setJavaType(userParam, (String)param.get("type"));
+ userOpParams.add(userParam);
+ }
+ if (!userOpParams.isEmpty()) {
+ userOp.setParameters(userOpParams);
+ }
+ userOpsMap.get(opTag).add(userOp);
+
+ }
+ }
+
+ List<UserResource> resources = new LinkedList<UserResource>();
+
+ for (Map.Entry<String, List<UserOperation>> entry : userOpsMap.entrySet()) {
+ UserResource ur = new UserResource();
+ ur.setPath("/" + entry.getKey());
+ ur.setOperations(entry.getValue());
+ ur.setName(entry.getKey());
+ resources.add(ur);
+ }
+
+ app.setResources(resources);
+ return app;
+ }
+
+ private static void setJavaType(Parameter userParam, String typeName) {
+ Class<?> javaType = SWAGGER_TYPE_MAP.get(typeName);
+ if (javaType == null) {
+ try {
+ // May work if the model has already been compiled
+ // TODO: need to know the package name
+ javaType = ClassLoaderUtils.loadClass(typeName, SwaggerParseUtils.class);
+ } catch (Throwable t) {
+ // ignore
+ }
+ }
+
+ userParam.setJavaType(javaType);
+ }
+
+ private static String listToString(List<String> list) {
+ if (list != null) {
+ StringBuilder sb = new StringBuilder();
+ for (String s : list) {
+ if (sb.length() > 0) {
+ sb.append(',');
+ }
+ sb.append(s);
+ }
+ return sb.toString();
+ } else {
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/f33f5f5b/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
deleted file mode 100644
index d7c017a..0000000
--- a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
+++ /dev/null
@@ -1,410 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import java.io.InputStream;
-import java.util.Map;
-
-import org.apache.cxf.jaxrs.model.Parameter;
-import org.apache.cxf.jaxrs.model.ParameterType;
-import org.apache.cxf.jaxrs.model.UserApplication;
-import org.apache.cxf.jaxrs.model.UserOperation;
-import org.apache.cxf.jaxrs.model.UserResource;
-
-import org.junit.Assert;
-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 pet = map.get("pet");
- verifyPetResource(pet);
-
- UserResource user = map.get("user");
- verifyPetUserResource(user);
-
- UserResource store = map.get("store");
- verifyPetStoreResource(store);
-
- }
- //CHECKSTYLE:OFF
- private void verifyPetResource(UserResource ur) {
- assertNotNull(ur);
- assertEquals("/pet", ur.getPath());
- assertEquals(8, ur.getOperations().size());
- //POST /pet
- UserOperation addPet = ur.getOperations().get(0);
- assertEquals("addPet", addPet.getName());
- assertEquals("/", addPet.getPath());
- assertEquals("POST", addPet.getVerb());
- assertEquals("application/xml,application/json", addPet.getProduces());
- assertEquals("application/json,application/xml", addPet.getConsumes());
- assertEquals(1, addPet.getParameters().size());
- Parameter addPetParam1 = addPet.getParameters().get(0);
- assertEquals("body", addPetParam1.getName());
- assertEquals(ParameterType.REQUEST_BODY, addPetParam1.getType());
- //TODO: check that addPetParam1 refers to Pet model
- //TODO: check default response type: JAX-RS Response ?
-
- //PUT /pet
- UserOperation putPet = ur.getOperations().get(1);
- assertEquals("updatePet", putPet.getName());
- assertEquals("/", putPet.getPath());
- assertEquals("PUT", putPet.getVerb());
- assertEquals("application/xml,application/json", addPet.getProduces());
- assertEquals("application/json,application/xml", addPet.getConsumes());
- assertEquals(1, putPet.getParameters().size());
- Parameter putPetParam1 = putPet.getParameters().get(0);
- assertEquals("body", putPetParam1.getName());
- assertEquals(ParameterType.REQUEST_BODY, putPetParam1.getType());
- //TODO: check that putPetParam1 refers to Pet model
- //TODO: check default response type: JAX-RS Response ?
-
- //GET /pet/findByStatus
- UserOperation findPetsByStatus = ur.getOperations().get(2);
- assertEquals("findPetsByStatus", findPetsByStatus.getName());
- assertEquals("/findByStatus", findPetsByStatus.getPath());
- assertEquals("GET", findPetsByStatus.getVerb());
- assertEquals("application/xml,application/json", findPetsByStatus.getProduces());
- assertNull(findPetsByStatus.getConsumes());
- assertEquals(1, findPetsByStatus.getParameters().size());
- Parameter findPetsByStatusParam1 = findPetsByStatus.getParameters().get(0);
- assertEquals("status", findPetsByStatusParam1.getName());
- assertEquals(ParameterType.QUERY, findPetsByStatusParam1.getType());
- //TODO: check that findPetsByStatusParam1 refers to List of String
- //TODO: check that response refers to List of Pets
-
- //GET /pet/findByTag
- UserOperation findPetsByTags = ur.getOperations().get(3);
- assertEquals("findPetsByTags", findPetsByTags.getName());
- assertEquals("/findByTags", findPetsByTags.getPath());
- assertEquals("GET", findPetsByTags.getVerb());
- assertEquals("application/xml,application/json", findPetsByTags.getProduces());
- assertNull(findPetsByTags.getConsumes());
- assertEquals(1, findPetsByTags.getParameters().size());
- Parameter findPetsByTagsParam1 = findPetsByTags.getParameters().get(0);
- assertEquals("tags", findPetsByTagsParam1.getName());
- assertEquals(ParameterType.QUERY, findPetsByTagsParam1.getType());
- //TODO: check that findPetsByTagsParam1 refers to List of String
- //TODO: check that response refers to List of Pets
-
- //GET /pet/{petId}
- UserOperation getPetById = ur.getOperations().get(4);
- assertEquals("getPetById", getPetById.getName());
- assertEquals("/{petId}", getPetById.getPath());
- assertEquals("GET", getPetById.getVerb());
- assertEquals("application/xml,application/json", getPetById.getProduces());
- assertNull(getPetById.getConsumes());
- assertEquals(1, getPetById.getParameters().size());
- Parameter getPetByIdParam1 = getPetById.getParameters().get(0);
- assertEquals("petId", getPetByIdParam1.getName());
- assertEquals(ParameterType.PATH, getPetByIdParam1.getType());
- assertEquals(long.class, getPetByIdParam1.getJavaType());
-
- //POST /pet/{petId}
- UserOperation updatePetWithForm = ur.getOperations().get(5);
- assertEquals("updatePetWithForm", updatePetWithForm.getName());
- assertEquals("/{petId}", updatePetWithForm.getPath());
- assertEquals("POST", updatePetWithForm.getVerb());
- assertEquals("application/xml,application/json", updatePetWithForm.getProduces());
- assertEquals("application/x-www-form-urlencoded", updatePetWithForm.getConsumes());
- assertEquals(3, updatePetWithForm.getParameters().size());
- Parameter updatePetWithFormParam1 = updatePetWithForm.getParameters().get(0);
- assertEquals("petId", updatePetWithFormParam1.getName());
- assertEquals(ParameterType.PATH, updatePetWithFormParam1.getType());
- assertEquals(long.class, updatePetWithFormParam1.getJavaType());
- Parameter updatePetWithFormParam2 = updatePetWithForm.getParameters().get(1);
- assertEquals("name", updatePetWithFormParam2.getName());
- assertEquals(ParameterType.FORM, updatePetWithFormParam2.getType());
- assertEquals(String.class, updatePetWithFormParam2.getJavaType());
- Parameter updatePetWithFormParam3 = updatePetWithForm.getParameters().get(2);
- assertEquals("status", updatePetWithFormParam3.getName());
- assertEquals(ParameterType.FORM, updatePetWithFormParam3.getType());
- assertEquals(String.class, updatePetWithFormParam3.getJavaType());
-
- //DELETE /pet/{petId}
- UserOperation deletePet = ur.getOperations().get(6);
- assertEquals("deletePet", deletePet.getName());
- assertEquals("/{petId}", deletePet.getPath());
- assertEquals("DELETE", deletePet.getVerb());
- assertEquals("application/xml,application/json", deletePet.getProduces());
- assertNull(deletePet.getConsumes());
- assertEquals(2, deletePet.getParameters().size());
- Parameter deletePetParam1 = deletePet.getParameters().get(0);
- assertEquals("api_key", deletePetParam1.getName());
- assertEquals(ParameterType.HEADER, deletePetParam1.getType());
- assertEquals(String.class, deletePetParam1.getJavaType());
- Parameter deletePetParam2 = deletePet.getParameters().get(1);
- assertEquals("petId", deletePetParam2.getName());
- assertEquals(ParameterType.PATH, deletePetParam2.getType());
- assertEquals(long.class, deletePetParam2.getJavaType());
-
- //POST /pet/{petId}/uploadImage
- UserOperation uploadFile = ur.getOperations().get(7);
- assertEquals("uploadFile", uploadFile.getName());
- assertEquals("/{petId}/uploadImage", uploadFile.getPath());
- assertEquals("POST", uploadFile.getVerb());
- assertEquals("application/json", uploadFile.getProduces());
- assertEquals("multipart/form-data", uploadFile.getConsumes());
- assertEquals(3, uploadFile.getParameters().size());
- Parameter uploadFileParam1 = uploadFile.getParameters().get(0);
- assertEquals("petId", uploadFileParam1.getName());
- assertEquals(ParameterType.PATH, uploadFileParam1.getType());
- assertEquals(long.class, uploadFileParam1.getJavaType());
- Parameter uploadFileParam2 = uploadFile.getParameters().get(1);
- assertEquals("additionalMetadata", uploadFileParam2.getName());
- assertEquals(ParameterType.FORM, uploadFileParam2.getType());
- assertEquals(String.class, uploadFileParam2.getJavaType());
- Parameter uploadFileParam3 = uploadFile.getParameters().get(2);
- assertEquals("file", uploadFileParam3.getName());
- assertEquals(ParameterType.FORM, uploadFileParam3.getType());
- assertEquals(InputStream.class, uploadFileParam3.getJavaType());
-
- }
- //CHECKSTYLE:ON
- //CHECKSTYLE:OFF
- private void verifyPetUserResource(UserResource ur) {
- assertNotNull(ur);
- assertEquals("/user", ur.getPath());
- assertEquals(8, ur.getOperations().size());
- //POST /user
- UserOperation createUser = ur.getOperations().get(0);
- assertEquals("createUser", createUser.getName());
- assertEquals("/", createUser.getPath());
- assertEquals("POST", createUser.getVerb());
- assertEquals("application/xml,application/json", createUser.getProduces());
- assertNull(createUser.getConsumes());
- assertEquals(1, createUser.getParameters().size());
- Parameter createUserParam1 = createUser.getParameters().get(0);
- assertEquals("body", createUserParam1.getName());
- assertEquals(ParameterType.REQUEST_BODY, createUserParam1.getType());
- //TODO: check that createUserParam1 refers to User model
- //TODO: check default response type: JAX-RS Response ?
-
- //POST /user/createWithArray
- UserOperation createWithArray = ur.getOperations().get(1);
- assertEquals("createUsersWithArrayInput", createWithArray.getName());
- assertEquals("/createWithArray", createWithArray.getPath());
- assertEquals("POST", createUser.getVerb());
- assertEquals("application/xml,application/json", createUser.getProduces());
- assertNull(createWithArray.getConsumes());
- assertEquals(1, createUser.getParameters().size());
- Parameter createWithArrayParam1 = createUser.getParameters().get(0);
- assertEquals("body", createWithArrayParam1.getName());
- assertEquals(ParameterType.REQUEST_BODY, createWithArrayParam1.getType());
- //TODO: check that createUserParam1 refers to an array of User model
- //TODO: check default response type: JAX-RS Response ?
-
- //POST /user/createWithList
- UserOperation createWithList = ur.getOperations().get(2);
- assertEquals("createUsersWithListInput", createWithList.getName());
- assertEquals("/createWithList", createWithList.getPath());
- assertEquals("POST", createWithList.getVerb());
- assertEquals("application/xml,application/json", createWithList.getProduces());
- assertNull(createWithList.getConsumes());
- assertEquals(1, createWithList.getParameters().size());
- Parameter createWithListParam1 = createWithList.getParameters().get(0);
- assertEquals("body", createWithListParam1.getName());
- assertEquals(ParameterType.REQUEST_BODY, createWithListParam1.getType());
- //TODO: check that createUserParam1 refers to an array of User model
- //TODO: check default response type: JAX-RS Response ?
-
- //GET /user/login
- UserOperation loginUser = ur.getOperations().get(3);
- assertEquals("loginUser", loginUser.getName());
- assertEquals("/login", loginUser.getPath());
- assertEquals("GET", loginUser.getVerb());
- assertEquals("application/xml,application/json", loginUser.getProduces());
- assertNull(loginUser.getConsumes());
- assertEquals(2, loginUser.getParameters().size());
- Parameter loginUserParam1 = loginUser.getParameters().get(0);
- assertEquals("username", loginUserParam1.getName());
- assertEquals(ParameterType.QUERY, loginUserParam1.getType());
- assertEquals(String.class, loginUserParam1.getJavaType());
- Parameter loginUserParam2 = loginUser.getParameters().get(1);
- assertEquals("password", loginUserParam2.getName());
- assertEquals(ParameterType.QUERY, loginUserParam2.getType());
- assertEquals(String.class, loginUserParam2.getJavaType());
- //TODO: check 200 response type
-
- //GET /user/logout
- UserOperation logoutUser = ur.getOperations().get(4);
- assertEquals("logoutUser", logoutUser.getName());
- assertEquals("/logout", logoutUser.getPath());
- assertEquals("GET", loginUser.getVerb());
- assertEquals("application/xml,application/json", logoutUser.getProduces());
- assertNull(logoutUser.getConsumes());
- assertEquals(0, logoutUser.getParameters().size());
- //TODO: check 200 response type
-
- //GET /user/{username}
- UserOperation getUserByName = ur.getOperations().get(5);
- assertEquals("getUserByName", getUserByName.getName());
- assertEquals("/{username}", getUserByName.getPath());
- assertEquals("GET", getUserByName.getVerb());
- assertEquals("application/xml,application/json", getUserByName.getProduces());
- assertNull(getUserByName.getConsumes());
- assertEquals(1, getUserByName.getParameters().size());
- Parameter getUserByNameParam1 = getUserByName.getParameters().get(0);
- assertEquals("username", getUserByNameParam1.getName());
- assertEquals(ParameterType.PATH, getUserByNameParam1.getType());
- assertEquals(String.class, getUserByNameParam1.getJavaType());
- //TODO: check 200 response type
-
- //PUT /user/{username}
- UserOperation updateUser = ur.getOperations().get(6);
- assertEquals("updateUser", updateUser.getName());
- assertEquals("/{username}", updateUser.getPath());
- assertEquals("PUT", updateUser.getVerb());
- assertEquals("application/xml,application/json", updateUser.getProduces());
- assertNull(updateUser.getConsumes());
- assertEquals(2, updateUser.getParameters().size());
- Parameter updateUserParam1 = updateUser.getParameters().get(0);
- assertEquals("username", updateUserParam1.getName());
- assertEquals(ParameterType.PATH, updateUserParam1.getType());
- assertEquals(String.class, updateUserParam1.getJavaType());
- Parameter updateUserParam2 = updateUser.getParameters().get(1);
- assertEquals("body", updateUserParam2.getName());
- assertEquals(ParameterType.REQUEST_BODY, updateUserParam2.getType());
- //TODO: check that createUserParam1 refers to an array of User model
- //TODO: check 200 response type
-
- //DELETE /user/{username}
- UserOperation deleteUser = ur.getOperations().get(7);
- assertEquals("deleteUser", deleteUser.getName());
- assertEquals("/{username}", deleteUser.getPath());
- assertEquals("DELETE", deleteUser.getVerb());
- assertEquals("application/xml,application/json", deleteUser.getProduces());
- assertNull(deleteUser.getConsumes());
- assertEquals(1, deleteUser.getParameters().size());
- Parameter deleteUserParam1 = deleteUser.getParameters().get(0);
- assertEquals("username", deleteUserParam1.getName());
- assertEquals(ParameterType.PATH, deleteUserParam1.getType());
- assertEquals(String.class, deleteUserParam1.getJavaType());
-
- }
- //CHECKSTYLE:ON
- 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
-
- }
-
-
- @Test
- public void testConvertSwaggerToUserApp() {
- UserApplication ap = SwaggerUtils.getUserApplication("/swagger20.json");
- assertNotNull(ap);
- assertEquals("/services/helloservice", ap.getBasePath());
- Map<String, UserResource> map = ap.getResourcesAsMap();
- assertEquals(2, map.size());
-
- UserResource ur = map.get("sayHello");
- assertNotNull(ur);
- assertEquals("/sayHello", ur.getPath());
- assertEquals(1, ur.getOperations().size());
- UserOperation op = ur.getOperations().get(0);
- assertEquals("sayHello", op.getName());
- assertEquals("/{a}", op.getPath());
- assertEquals("GET", op.getVerb());
- assertEquals("text/plain", op.getProduces());
-
- assertEquals(1, op.getParameters().size());
- Parameter param1 = op.getParameters().get(0);
- assertEquals("a", param1.getName());
- assertEquals(ParameterType.PATH, param1.getType());
- assertEquals(String.class, param1.getJavaType());
-
- UserResource ur2 = map.get("sayHello2");
- assertNotNull(ur2);
- assertEquals("/sayHello2", ur2.getPath());
- assertEquals(1, ur2.getOperations().size());
- UserOperation op2 = ur2.getOperations().get(0);
- assertEquals("sayHello", op2.getName());
- assertEquals("/{a}", op2.getPath());
- assertEquals("GET", op2.getVerb());
- assertEquals("text/plain", op2.getProduces());
-
- assertEquals(1, op2.getParameters().size());
- Parameter param2 = op.getParameters().get(0);
- assertEquals("a", param2.getName());
- assertEquals(ParameterType.PATH, param2.getType());
- assertEquals(String.class, param2.getJavaType());
-
- }
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/f33f5f5b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtilsTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtilsTest.java b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtilsTest.java
new file mode 100644
index 0000000..34361a8
--- /dev/null
+++ b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/parse/SwaggerParseUtilsTest.java
@@ -0,0 +1,410 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxrs.swagger.parse;
+
+import java.io.InputStream;
+import java.util.Map;
+
+import org.apache.cxf.jaxrs.model.Parameter;
+import org.apache.cxf.jaxrs.model.ParameterType;
+import org.apache.cxf.jaxrs.model.UserApplication;
+import org.apache.cxf.jaxrs.model.UserOperation;
+import org.apache.cxf.jaxrs.model.UserResource;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SwaggerParseUtilsTest extends Assert {
+
+ @Test
+ public void testConvertSwaggerPetShopToUserApp() {
+ UserApplication ap = SwaggerParseUtils.getUserApplication("/swagger2petShop.json");
+ assertNotNull(ap);
+ assertEquals("/v2", ap.getBasePath());
+ Map<String, UserResource> map = ap.getResourcesAsMap();
+ assertEquals(3, map.size());
+
+ UserResource pet = map.get("pet");
+ verifyPetResource(pet);
+
+ UserResource user = map.get("user");
+ verifyPetUserResource(user);
+
+ UserResource store = map.get("store");
+ verifyPetStoreResource(store);
+
+ }
+ //CHECKSTYLE:OFF
+ private void verifyPetResource(UserResource ur) {
+ assertNotNull(ur);
+ assertEquals("/pet", ur.getPath());
+ assertEquals(8, ur.getOperations().size());
+ //POST /pet
+ UserOperation addPet = ur.getOperations().get(0);
+ assertEquals("addPet", addPet.getName());
+ assertEquals("/", addPet.getPath());
+ assertEquals("POST", addPet.getVerb());
+ assertEquals("application/xml,application/json", addPet.getProduces());
+ assertEquals("application/json,application/xml", addPet.getConsumes());
+ assertEquals(1, addPet.getParameters().size());
+ Parameter addPetParam1 = addPet.getParameters().get(0);
+ assertEquals("body", addPetParam1.getName());
+ assertEquals(ParameterType.REQUEST_BODY, addPetParam1.getType());
+ //TODO: check that addPetParam1 refers to Pet model
+ //TODO: check default response type: JAX-RS Response ?
+
+ //PUT /pet
+ UserOperation putPet = ur.getOperations().get(1);
+ assertEquals("updatePet", putPet.getName());
+ assertEquals("/", putPet.getPath());
+ assertEquals("PUT", putPet.getVerb());
+ assertEquals("application/xml,application/json", addPet.getProduces());
+ assertEquals("application/json,application/xml", addPet.getConsumes());
+ assertEquals(1, putPet.getParameters().size());
+ Parameter putPetParam1 = putPet.getParameters().get(0);
+ assertEquals("body", putPetParam1.getName());
+ assertEquals(ParameterType.REQUEST_BODY, putPetParam1.getType());
+ //TODO: check that putPetParam1 refers to Pet model
+ //TODO: check default response type: JAX-RS Response ?
+
+ //GET /pet/findByStatus
+ UserOperation findPetsByStatus = ur.getOperations().get(2);
+ assertEquals("findPetsByStatus", findPetsByStatus.getName());
+ assertEquals("/findByStatus", findPetsByStatus.getPath());
+ assertEquals("GET", findPetsByStatus.getVerb());
+ assertEquals("application/xml,application/json", findPetsByStatus.getProduces());
+ assertNull(findPetsByStatus.getConsumes());
+ assertEquals(1, findPetsByStatus.getParameters().size());
+ Parameter findPetsByStatusParam1 = findPetsByStatus.getParameters().get(0);
+ assertEquals("status", findPetsByStatusParam1.getName());
+ assertEquals(ParameterType.QUERY, findPetsByStatusParam1.getType());
+ //TODO: check that findPetsByStatusParam1 refers to List of String
+ //TODO: check that response refers to List of Pets
+
+ //GET /pet/findByTag
+ UserOperation findPetsByTags = ur.getOperations().get(3);
+ assertEquals("findPetsByTags", findPetsByTags.getName());
+ assertEquals("/findByTags", findPetsByTags.getPath());
+ assertEquals("GET", findPetsByTags.getVerb());
+ assertEquals("application/xml,application/json", findPetsByTags.getProduces());
+ assertNull(findPetsByTags.getConsumes());
+ assertEquals(1, findPetsByTags.getParameters().size());
+ Parameter findPetsByTagsParam1 = findPetsByTags.getParameters().get(0);
+ assertEquals("tags", findPetsByTagsParam1.getName());
+ assertEquals(ParameterType.QUERY, findPetsByTagsParam1.getType());
+ //TODO: check that findPetsByTagsParam1 refers to List of String
+ //TODO: check that response refers to List of Pets
+
+ //GET /pet/{petId}
+ UserOperation getPetById = ur.getOperations().get(4);
+ assertEquals("getPetById", getPetById.getName());
+ assertEquals("/{petId}", getPetById.getPath());
+ assertEquals("GET", getPetById.getVerb());
+ assertEquals("application/xml,application/json", getPetById.getProduces());
+ assertNull(getPetById.getConsumes());
+ assertEquals(1, getPetById.getParameters().size());
+ Parameter getPetByIdParam1 = getPetById.getParameters().get(0);
+ assertEquals("petId", getPetByIdParam1.getName());
+ assertEquals(ParameterType.PATH, getPetByIdParam1.getType());
+ assertEquals(long.class, getPetByIdParam1.getJavaType());
+
+ //POST /pet/{petId}
+ UserOperation updatePetWithForm = ur.getOperations().get(5);
+ assertEquals("updatePetWithForm", updatePetWithForm.getName());
+ assertEquals("/{petId}", updatePetWithForm.getPath());
+ assertEquals("POST", updatePetWithForm.getVerb());
+ assertEquals("application/xml,application/json", updatePetWithForm.getProduces());
+ assertEquals("application/x-www-form-urlencoded", updatePetWithForm.getConsumes());
+ assertEquals(3, updatePetWithForm.getParameters().size());
+ Parameter updatePetWithFormParam1 = updatePetWithForm.getParameters().get(0);
+ assertEquals("petId", updatePetWithFormParam1.getName());
+ assertEquals(ParameterType.PATH, updatePetWithFormParam1.getType());
+ assertEquals(long.class, updatePetWithFormParam1.getJavaType());
+ Parameter updatePetWithFormParam2 = updatePetWithForm.getParameters().get(1);
+ assertEquals("name", updatePetWithFormParam2.getName());
+ assertEquals(ParameterType.FORM, updatePetWithFormParam2.getType());
+ assertEquals(String.class, updatePetWithFormParam2.getJavaType());
+ Parameter updatePetWithFormParam3 = updatePetWithForm.getParameters().get(2);
+ assertEquals("status", updatePetWithFormParam3.getName());
+ assertEquals(ParameterType.FORM, updatePetWithFormParam3.getType());
+ assertEquals(String.class, updatePetWithFormParam3.getJavaType());
+
+ //DELETE /pet/{petId}
+ UserOperation deletePet = ur.getOperations().get(6);
+ assertEquals("deletePet", deletePet.getName());
+ assertEquals("/{petId}", deletePet.getPath());
+ assertEquals("DELETE", deletePet.getVerb());
+ assertEquals("application/xml,application/json", deletePet.getProduces());
+ assertNull(deletePet.getConsumes());
+ assertEquals(2, deletePet.getParameters().size());
+ Parameter deletePetParam1 = deletePet.getParameters().get(0);
+ assertEquals("api_key", deletePetParam1.getName());
+ assertEquals(ParameterType.HEADER, deletePetParam1.getType());
+ assertEquals(String.class, deletePetParam1.getJavaType());
+ Parameter deletePetParam2 = deletePet.getParameters().get(1);
+ assertEquals("petId", deletePetParam2.getName());
+ assertEquals(ParameterType.PATH, deletePetParam2.getType());
+ assertEquals(long.class, deletePetParam2.getJavaType());
+
+ //POST /pet/{petId}/uploadImage
+ UserOperation uploadFile = ur.getOperations().get(7);
+ assertEquals("uploadFile", uploadFile.getName());
+ assertEquals("/{petId}/uploadImage", uploadFile.getPath());
+ assertEquals("POST", uploadFile.getVerb());
+ assertEquals("application/json", uploadFile.getProduces());
+ assertEquals("multipart/form-data", uploadFile.getConsumes());
+ assertEquals(3, uploadFile.getParameters().size());
+ Parameter uploadFileParam1 = uploadFile.getParameters().get(0);
+ assertEquals("petId", uploadFileParam1.getName());
+ assertEquals(ParameterType.PATH, uploadFileParam1.getType());
+ assertEquals(long.class, uploadFileParam1.getJavaType());
+ Parameter uploadFileParam2 = uploadFile.getParameters().get(1);
+ assertEquals("additionalMetadata", uploadFileParam2.getName());
+ assertEquals(ParameterType.FORM, uploadFileParam2.getType());
+ assertEquals(String.class, uploadFileParam2.getJavaType());
+ Parameter uploadFileParam3 = uploadFile.getParameters().get(2);
+ assertEquals("file", uploadFileParam3.getName());
+ assertEquals(ParameterType.FORM, uploadFileParam3.getType());
+ assertEquals(InputStream.class, uploadFileParam3.getJavaType());
+
+ }
+ //CHECKSTYLE:ON
+ //CHECKSTYLE:OFF
+ private void verifyPetUserResource(UserResource ur) {
+ assertNotNull(ur);
+ assertEquals("/user", ur.getPath());
+ assertEquals(8, ur.getOperations().size());
+ //POST /user
+ UserOperation createUser = ur.getOperations().get(0);
+ assertEquals("createUser", createUser.getName());
+ assertEquals("/", createUser.getPath());
+ assertEquals("POST", createUser.getVerb());
+ assertEquals("application/xml,application/json", createUser.getProduces());
+ assertNull(createUser.getConsumes());
+ assertEquals(1, createUser.getParameters().size());
+ Parameter createUserParam1 = createUser.getParameters().get(0);
+ assertEquals("body", createUserParam1.getName());
+ assertEquals(ParameterType.REQUEST_BODY, createUserParam1.getType());
+ //TODO: check that createUserParam1 refers to User model
+ //TODO: check default response type: JAX-RS Response ?
+
+ //POST /user/createWithArray
+ UserOperation createWithArray = ur.getOperations().get(1);
+ assertEquals("createUsersWithArrayInput", createWithArray.getName());
+ assertEquals("/createWithArray", createWithArray.getPath());
+ assertEquals("POST", createUser.getVerb());
+ assertEquals("application/xml,application/json", createUser.getProduces());
+ assertNull(createWithArray.getConsumes());
+ assertEquals(1, createUser.getParameters().size());
+ Parameter createWithArrayParam1 = createUser.getParameters().get(0);
+ assertEquals("body", createWithArrayParam1.getName());
+ assertEquals(ParameterType.REQUEST_BODY, createWithArrayParam1.getType());
+ //TODO: check that createUserParam1 refers to an array of User model
+ //TODO: check default response type: JAX-RS Response ?
+
+ //POST /user/createWithList
+ UserOperation createWithList = ur.getOperations().get(2);
+ assertEquals("createUsersWithListInput", createWithList.getName());
+ assertEquals("/createWithList", createWithList.getPath());
+ assertEquals("POST", createWithList.getVerb());
+ assertEquals("application/xml,application/json", createWithList.getProduces());
+ assertNull(createWithList.getConsumes());
+ assertEquals(1, createWithList.getParameters().size());
+ Parameter createWithListParam1 = createWithList.getParameters().get(0);
+ assertEquals("body", createWithListParam1.getName());
+ assertEquals(ParameterType.REQUEST_BODY, createWithListParam1.getType());
+ //TODO: check that createUserParam1 refers to an array of User model
+ //TODO: check default response type: JAX-RS Response ?
+
+ //GET /user/login
+ UserOperation loginUser = ur.getOperations().get(3);
+ assertEquals("loginUser", loginUser.getName());
+ assertEquals("/login", loginUser.getPath());
+ assertEquals("GET", loginUser.getVerb());
+ assertEquals("application/xml,application/json", loginUser.getProduces());
+ assertNull(loginUser.getConsumes());
+ assertEquals(2, loginUser.getParameters().size());
+ Parameter loginUserParam1 = loginUser.getParameters().get(0);
+ assertEquals("username", loginUserParam1.getName());
+ assertEquals(ParameterType.QUERY, loginUserParam1.getType());
+ assertEquals(String.class, loginUserParam1.getJavaType());
+ Parameter loginUserParam2 = loginUser.getParameters().get(1);
+ assertEquals("password", loginUserParam2.getName());
+ assertEquals(ParameterType.QUERY, loginUserParam2.getType());
+ assertEquals(String.class, loginUserParam2.getJavaType());
+ //TODO: check 200 response type
+
+ //GET /user/logout
+ UserOperation logoutUser = ur.getOperations().get(4);
+ assertEquals("logoutUser", logoutUser.getName());
+ assertEquals("/logout", logoutUser.getPath());
+ assertEquals("GET", loginUser.getVerb());
+ assertEquals("application/xml,application/json", logoutUser.getProduces());
+ assertNull(logoutUser.getConsumes());
+ assertEquals(0, logoutUser.getParameters().size());
+ //TODO: check 200 response type
+
+ //GET /user/{username}
+ UserOperation getUserByName = ur.getOperations().get(5);
+ assertEquals("getUserByName", getUserByName.getName());
+ assertEquals("/{username}", getUserByName.getPath());
+ assertEquals("GET", getUserByName.getVerb());
+ assertEquals("application/xml,application/json", getUserByName.getProduces());
+ assertNull(getUserByName.getConsumes());
+ assertEquals(1, getUserByName.getParameters().size());
+ Parameter getUserByNameParam1 = getUserByName.getParameters().get(0);
+ assertEquals("username", getUserByNameParam1.getName());
+ assertEquals(ParameterType.PATH, getUserByNameParam1.getType());
+ assertEquals(String.class, getUserByNameParam1.getJavaType());
+ //TODO: check 200 response type
+
+ //PUT /user/{username}
+ UserOperation updateUser = ur.getOperations().get(6);
+ assertEquals("updateUser", updateUser.getName());
+ assertEquals("/{username}", updateUser.getPath());
+ assertEquals("PUT", updateUser.getVerb());
+ assertEquals("application/xml,application/json", updateUser.getProduces());
+ assertNull(updateUser.getConsumes());
+ assertEquals(2, updateUser.getParameters().size());
+ Parameter updateUserParam1 = updateUser.getParameters().get(0);
+ assertEquals("username", updateUserParam1.getName());
+ assertEquals(ParameterType.PATH, updateUserParam1.getType());
+ assertEquals(String.class, updateUserParam1.getJavaType());
+ Parameter updateUserParam2 = updateUser.getParameters().get(1);
+ assertEquals("body", updateUserParam2.getName());
+ assertEquals(ParameterType.REQUEST_BODY, updateUserParam2.getType());
+ //TODO: check that createUserParam1 refers to an array of User model
+ //TODO: check 200 response type
+
+ //DELETE /user/{username}
+ UserOperation deleteUser = ur.getOperations().get(7);
+ assertEquals("deleteUser", deleteUser.getName());
+ assertEquals("/{username}", deleteUser.getPath());
+ assertEquals("DELETE", deleteUser.getVerb());
+ assertEquals("application/xml,application/json", deleteUser.getProduces());
+ assertNull(deleteUser.getConsumes());
+ assertEquals(1, deleteUser.getParameters().size());
+ Parameter deleteUserParam1 = deleteUser.getParameters().get(0);
+ assertEquals("username", deleteUserParam1.getName());
+ assertEquals(ParameterType.PATH, deleteUserParam1.getType());
+ assertEquals(String.class, deleteUserParam1.getJavaType());
+
+ }
+ //CHECKSTYLE:ON
+ 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
+
+ }
+
+
+ @Test
+ public void testConvertSwaggerToUserApp() {
+ UserApplication ap = SwaggerParseUtils.getUserApplication("/swagger20.json");
+ assertNotNull(ap);
+ assertEquals("/services/helloservice", ap.getBasePath());
+ Map<String, UserResource> map = ap.getResourcesAsMap();
+ assertEquals(2, map.size());
+
+ UserResource ur = map.get("sayHello");
+ assertNotNull(ur);
+ assertEquals("/sayHello", ur.getPath());
+ assertEquals(1, ur.getOperations().size());
+ UserOperation op = ur.getOperations().get(0);
+ assertEquals("sayHello", op.getName());
+ assertEquals("/{a}", op.getPath());
+ assertEquals("GET", op.getVerb());
+ assertEquals("text/plain", op.getProduces());
+
+ assertEquals(1, op.getParameters().size());
+ Parameter param1 = op.getParameters().get(0);
+ assertEquals("a", param1.getName());
+ assertEquals(ParameterType.PATH, param1.getType());
+ assertEquals(String.class, param1.getJavaType());
+
+ UserResource ur2 = map.get("sayHello2");
+ assertNotNull(ur2);
+ assertEquals("/sayHello2", ur2.getPath());
+ assertEquals(1, ur2.getOperations().size());
+ UserOperation op2 = ur2.getOperations().get(0);
+ assertEquals("sayHello", op2.getName());
+ assertEquals("/{a}", op2.getPath());
+ assertEquals("GET", op2.getVerb());
+ assertEquals("text/plain", op2.getProduces());
+
+ assertEquals(1, op2.getParameters().size());
+ Parameter param2 = op.getParameters().get(0);
+ assertEquals("a", param2.getName());
+ assertEquals(ParameterType.PATH, param2.getType());
+ assertEquals(String.class, param2.getJavaType());
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/f33f5f5b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java
index 1c2529e..70bac6d 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java
@@ -45,7 +45,7 @@ import org.apache.cxf.jaxrs.model.UserApplication;
import org.apache.cxf.jaxrs.model.UserOperation;
import org.apache.cxf.jaxrs.model.UserResource;
import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
-import org.apache.cxf.jaxrs.swagger.SwaggerUtils;
+import org.apache.cxf.jaxrs.swagger.parse.SwaggerParseUtils;
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
@@ -120,7 +120,7 @@ public abstract class AbstractSwagger2ServiceDescriptionTest extends AbstractBus
final WebClient client = createWebClient("/swagger.json");
try {
String swaggerJson = client.get(String.class);
- UserApplication ap = SwaggerUtils.getUserApplicationFromJson(swaggerJson);
+ UserApplication ap = SwaggerParseUtils.getUserApplicationFromJson(swaggerJson);
assertNotNull(ap);
List<UserResource> urs = ap.getResources();