You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/09/17 17:15:42 UTC
[3/8] camel git commit: CAMEL-7800: camel-swagger-java - work in
progress
CAMEL-7800: camel-swagger-java - work in progress
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5925c045
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5925c045
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5925c045
Branch: refs/heads/swagger
Commit: 5925c045dd5a4f21951845777c1581094471e711
Parents: 1364c95
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Sep 17 15:51:59 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 17 15:51:59 2015 +0200
----------------------------------------------------------------------
.../apache/camel/swagger/RestSwaggerReader.java | 40 +++++++++++++++++---
.../camel/swagger/RestSwaggerReaderTest.java | 29 +++++++++-----
.../src/test/resources/log4j.properties | 6 +--
3 files changed, 57 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/5925c045/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java
index 4a896a3..de2de46 100644
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java
+++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java
@@ -22,17 +22,26 @@ import java.util.Comparator;
import java.util.List;
import java.util.Locale;
-import io.swagger.config.SwaggerConfig;
+import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.models.Operation;
import io.swagger.models.Path;
import io.swagger.models.Swagger;
+import io.swagger.models.parameters.BodyParameter;
+import io.swagger.models.parameters.FormParameter;
+import io.swagger.models.parameters.HeaderParameter;
+import io.swagger.models.parameters.Parameter;
+import io.swagger.models.parameters.PathParameter;
+import io.swagger.models.parameters.QueryParameter;
import org.apache.camel.model.rest.RestDefinition;
+import org.apache.camel.model.rest.RestOperationParamDefinition;
+import org.apache.camel.model.rest.RestParamType;
import org.apache.camel.model.rest.VerbDefinition;
public class RestSwaggerReader {
- public Swagger read(RestDefinition rest) {
+ public Swagger read(RestDefinition rest, BeanConfig config) {
Swagger swagger = new Swagger();
+ config.configure(swagger);
List<VerbDefinition> verbs = new ArrayList<>(rest.getVerbs());
// must sort the verbs by uri so we group them together when an uri has multiple operations
@@ -45,12 +54,9 @@ public class RestSwaggerReader {
for (VerbDefinition verb : verbs) {
- // TODO: should be base path and a lot more
-
-
// the method must be in lower case
String method = verb.asVerb().toLowerCase(Locale.US);
-
+ // operation path is a key
String opPath = getPath(basePath, verb.getUri());
Operation op = new Operation();
@@ -71,6 +77,28 @@ public class RestSwaggerReader {
if (verb.getDescriptionText() != null) {
op.summary(verb.getDescriptionText());
}
+ for (RestOperationParamDefinition param : verb.getParams()) {
+ Parameter parameter = null;
+ if (param.getType().equals(RestParamType.body)) {
+ parameter = new BodyParameter();
+ } else if (param.getType().equals(RestParamType.form)) {
+ parameter = new FormParameter();
+ } else if (param.getType().equals(RestParamType.header)) {
+ parameter = new HeaderParameter();
+ } else if (param.getType().equals(RestParamType.path)) {
+ parameter = new PathParameter();
+ } else if (param.getType().equals(RestParamType.query)) {
+ parameter = new QueryParameter();
+ }
+
+ if (parameter != null) {
+ parameter.setName(param.getName());
+ parameter.setAccess(param.getAccess());
+ parameter.setDescription(param.getDescription());
+ parameter.setRequired(param.getRequired());
+ op.addParameter(parameter);
+ }
+ }
// add path
swagger.path(opPath, path);
http://git-wip-us.apache.org/repos/asf/camel/blob/5925c045/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java
index 2252479..6ee65ea 100644
--- a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java
@@ -24,6 +24,7 @@ import io.swagger.models.Swagger;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.model.rest.RestDefinition;
+import org.apache.camel.model.rest.RestParamType;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
@@ -42,9 +43,15 @@ public class RestSwaggerReaderTest extends CamelTestSupport {
@Override
public void configure() throws Exception {
rest("/hello")
- .get("/hi").to("log:hi")
- .get("/bye").to("log:bye")
- .post("/bye").to("log:bye");
+ .get("/hi/{name}").description("Saying hi")
+ .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam()
+ .to("log:hi")
+ .get("/bye/{name}").description("Saying bye")
+ .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam()
+ .to("log:bye")
+ .post("/bye").description("To update the greeting message")
+ .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").endParam()
+ .to("log:bye");
}
};
}
@@ -55,10 +62,12 @@ public class RestSwaggerReaderTest extends CamelTestSupport {
assertNotNull(rest);
BeanConfig config = new BeanConfig();
- config.setBasePath("http://localhost:8080/api");
+ config.setHost("localhost:8080");
+ config.setSchemes(new String[]{"http"});
+ config.setBasePath("/api");
RestSwaggerReader reader = new RestSwaggerReader();
- Swagger swagger = reader.read(rest);
+ Swagger swagger = reader.read(rest, config);
assertNotNull(swagger);
ObjectMapper mapper = new ObjectMapper();
@@ -68,10 +77,12 @@ public class RestSwaggerReaderTest extends CamelTestSupport {
log.info(json);
- assertTrue(json.contains("\"basePath\":\"http://localhost:8080/api\""));
- assertTrue(json.contains("\"resourcePath\":\"/hello\""));
- assertTrue(json.contains("\"method\":\"GET\""));
- assertTrue(json.contains("\"nickname\":\"getHelloHi\""));
+ assertTrue(json.contains("\"host\" : \"localhost:8080\""));
+ assertTrue(json.contains("\"basePath\" : \"/api\""));
+ assertTrue(json.contains("\"/hello//bye\""));
+ assertTrue(json.contains("\"summary\" : \"To update the greeting message\""));
+ assertTrue(json.contains("\"/hello//bye/{name}\""));
+ assertTrue(json.contains("\"/hello//hi/{name}\""));
context.stop();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/5925c045/components/camel-swagger-java/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/resources/log4j.properties b/components/camel-swagger-java/src/test/resources/log4j.properties
index 36983fa..6e040b0 100644
--- a/components/camel-swagger-java/src/test/resources/log4j.properties
+++ b/components/camel-swagger-java/src/test/resources/log4j.properties
@@ -18,11 +18,11 @@
#
# The logging properties used for testing.
#
-log4j.rootLogger=INFO, out
+log4j.rootLogger=INFO, file
# uncomment the following to enable camel debugging
-#log4j.logger.org.apache.camel.component.swagger=TRACE
-#log4j.logger.com.wordnik.swagger=DEBUG
+#log4j.logger.org.apache.camel.swagger=TRACE
+#log4j.logger.io.swagger=DEBUG
# CONSOLE appender not used by default
log4j.appender.out=org.apache.log4j.ConsoleAppender