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/18 15:42:48 UTC
[1/3] camel git commit: CAMEL-7800: camel-swagger-java - work in
progress
Repository: camel
Updated Branches:
refs/heads/swagger 112c58e54 -> 89f50bcd3
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/3e0fb3c5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3e0fb3c5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3e0fb3c5
Branch: refs/heads/swagger
Commit: 3e0fb3c58f178aaad3bd371050cbd9c9fe789bfc
Parents: 112c58e
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Sep 18 15:27:53 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Sep 18 15:27:53 2015 +0200
----------------------------------------------------------------------
.../RestSwaggerApiDeclarationServlet.java | 28 ++++++------------
.../apache/camel/swagger/RestSwaggerReader.java | 30 +++++++++++++++-----
.../swagger/RestSwaggerReaderModelTest.java | 5 +---
.../camel/swagger/RestSwaggerReaderTest.java | 6 +---
.../src/main/resources/camel-config-xml.xml | 15 ++++++++++
5 files changed, 49 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/3e0fb3c5/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerApiDeclarationServlet.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerApiDeclarationServlet.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerApiDeclarationServlet.java
index 68d621b..dc1b938 100644
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerApiDeclarationServlet.java
+++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerApiDeclarationServlet.java
@@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
+import io.swagger.core.filter.SpecFilter;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.models.Contact;
import io.swagger.models.Info;
@@ -144,21 +145,14 @@ public abstract class RestSwaggerApiDeclarationServlet extends HttpServlet {
route = route.substring(contextId.length());
}
-
- // TODO: implement these
- if (!route.equals("") && !route.equals("/")) {
- // render overview if the route is empty or is the root path
- // renderApiDeclaration(request, response, contextId, route);
- } else {
- renderResourceListing(request, response, contextId);
- }
+ renderResourceListing(request, response, contextId, route);
}
} catch (Exception e) {
LOG.warn("Error rendering swagger due " + e.getMessage(), e);
}
}
- private void renderResourceListing(HttpServletRequest request, HttpServletResponse response, String contextId) throws Exception {
+ private void renderResourceListing(HttpServletRequest request, HttpServletResponse response, String contextId, String route) throws Exception {
LOG.trace("renderResourceListing");
if (cors) {
@@ -169,17 +163,13 @@ public abstract class RestSwaggerApiDeclarationServlet extends HttpServlet {
List<RestDefinition> rests = getRestDefinitions(contextId);
if (rests != null) {
+ // read the rest-dsl into swagger model
+ Swagger swagger = reader.read(rests, route, swaggerConfig, new DefaultClassResolver());
- // TODO: combine the rests
-
- for (RestDefinition rest : rests) {
- Swagger swagger = reader.read(rest, swaggerConfig, new DefaultClassResolver());
-
- ObjectMapper mapper = new ObjectMapper();
- mapper.enable(SerializationFeature.INDENT_OUTPUT);
- mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
- mapper.writeValue(response.getOutputStream(), swagger);
- }
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.enable(SerializationFeature.INDENT_OUTPUT);
+ mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ mapper.writeValue(response.getOutputStream(), swagger);
} else {
response.setStatus(204);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/3e0fb3c5/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 1ad8c1f..fcfb057 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
@@ -50,6 +50,7 @@ import org.apache.camel.model.rest.RestOperationResponseMsgDefinition;
import org.apache.camel.model.rest.RestParamType;
import org.apache.camel.model.rest.VerbDefinition;
import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.util.ObjectHelper;
/**
* A Camel REST-DSL swagger reader that parse the rest-dsl into a swagger model representation.
@@ -57,16 +58,35 @@ import org.apache.camel.spi.ClassResolver;
public class RestSwaggerReader {
/**
- * Read the REST-DSL definition and parse that as a Swagger model representation
+ * Read the REST-DSL definition's and parse that as a Swagger model representation
*
- * @param rest the rest-dsl
+ * @param rests the rest-dsl
+ * @param route optional route path to filter the rest-dsl to only include from the chose route
* @param config the swagger configuration
* @param classResolver class resolver to use
* @return the swagger model
*/
- public Swagger read(RestDefinition rest, BeanConfig config, ClassResolver classResolver) {
+ public Swagger read(List<RestDefinition> rests, String route, BeanConfig config, ClassResolver classResolver) {
Swagger swagger = new Swagger();
+ for (RestDefinition rest : rests) {
+
+ if (ObjectHelper.isNotEmpty(route) && !route.equals("/")) {
+ // filter by route
+ if (!rest.getPath().equals(route)) {
+ continue;
+ }
+ }
+
+ parse(swagger, rest, classResolver);
+ }
+
+ // configure before returning
+ swagger = config.configure(swagger);
+ return swagger;
+ }
+
+ private void parse(Swagger swagger, RestDefinition rest, ClassResolver classResolver) {
List<VerbDefinition> verbs = new ArrayList<>(rest.getVerbs());
// must sort the verbs by uri so we group them together when an uri has multiple operations
Collections.sort(verbs, new VerbOrdering());
@@ -207,10 +227,6 @@ public class RestSwaggerReader {
// add path
swagger.path(opPath, path);
}
-
- // configure before returning
- swagger = config.configure(swagger);
- return swagger;
}
private Model asModel(String typeName, Swagger swagger) {
http://git-wip-us.apache.org/repos/asf/camel/blob/3e0fb3c5/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
index 301421f..4d26438 100644
--- a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
@@ -65,9 +65,6 @@ public class RestSwaggerReaderModelTest extends CamelTestSupport {
@Test
public void testReaderRead() throws Exception {
- RestDefinition rest = context.getRestDefinitions().get(0);
- assertNotNull(rest);
-
BeanConfig config = new BeanConfig();
config.setHost("localhost:8080");
config.setSchemes(new String[]{"http"});
@@ -77,7 +74,7 @@ public class RestSwaggerReaderModelTest extends CamelTestSupport {
config.setLicenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html");
RestSwaggerReader reader = new RestSwaggerReader();
- Swagger swagger = reader.read(rest, config, new DefaultClassResolver());
+ Swagger swagger = reader.read(context.getRestDefinitions(), null, config, new DefaultClassResolver());
assertNotNull(swagger);
ObjectMapper mapper = new ObjectMapper();
http://git-wip-us.apache.org/repos/asf/camel/blob/3e0fb3c5/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 b7c9de3..20becb4 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,7 +24,6 @@ import io.swagger.models.Swagger;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultClassResolver;
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;
@@ -60,16 +59,13 @@ public class RestSwaggerReaderTest extends CamelTestSupport {
@Test
public void testReaderRead() throws Exception {
- RestDefinition rest = context.getRestDefinitions().get(0);
- assertNotNull(rest);
-
BeanConfig config = new BeanConfig();
config.setHost("localhost:8080");
config.setSchemes(new String[]{"http"});
config.setBasePath("/api");
RestSwaggerReader reader = new RestSwaggerReader();
- Swagger swagger = reader.read(rest, config, new DefaultClassResolver());
+ Swagger swagger = reader.read(context.getRestDefinitions(), null, config, new DefaultClassResolver());
assertNotNull(swagger);
ObjectMapper mapper = new ObjectMapper();
http://git-wip-us.apache.org/repos/asf/camel/blob/3e0fb3c5/examples/camel-example-swagger-java/src/main/resources/camel-config-xml.xml
----------------------------------------------------------------------
diff --git a/examples/camel-example-swagger-java/src/main/resources/camel-config-xml.xml b/examples/camel-example-swagger-java/src/main/resources/camel-config-xml.xml
index be888b4..ecdeed7 100755
--- a/examples/camel-example-swagger-java/src/main/resources/camel-config-xml.xml
+++ b/examples/camel-example-swagger-java/src/main/resources/camel-config-xml.xml
@@ -75,6 +75,21 @@
</get>
</rest>
+ <!-- defines the rest services using the context-path /echo -->
+ <rest path="/echo" consumes="application/text" produces="application/text">
+ <description>Echo rest service</description>
+
+ <get uri="/ping">
+ <description>A ping service</description>
+ <route>
+ <transform>
+ <constant>pong</constant>
+ </transform>
+ </route>
+ </get>
+
+ </rest>
+
</camelContext>
</beans>
\ No newline at end of file
[2/3] camel git commit: CAMEL-7800: camel-swagger-java - work in
progress
Posted by da...@apache.org.
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/9bfc912d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9bfc912d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9bfc912d
Branch: refs/heads/swagger
Commit: 9bfc912d871bfd1d0dd7b252340a637194d31b22
Parents: 3e0fb3c
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Sep 18 15:37:03 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Sep 18 15:37:03 2015 +0200
----------------------------------------------------------------------
.../org/apache/camel/swagger/RestSwaggerReader.java | 13 +++++++++++++
1 file changed, 13 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/9bfc912d/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 fcfb057..ae9c46f 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
@@ -33,6 +33,7 @@ import io.swagger.models.Path;
import io.swagger.models.RefModel;
import io.swagger.models.Response;
import io.swagger.models.Swagger;
+import io.swagger.models.Tag;
import io.swagger.models.parameters.BodyParameter;
import io.swagger.models.parameters.FormParameter;
import io.swagger.models.parameters.HeaderParameter;
@@ -50,6 +51,7 @@ import org.apache.camel.model.rest.RestOperationResponseMsgDefinition;
import org.apache.camel.model.rest.RestParamType;
import org.apache.camel.model.rest.VerbDefinition;
import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.util.FileUtil;
import org.apache.camel.util.ObjectHelper;
/**
@@ -91,6 +93,15 @@ public class RestSwaggerReader {
// must sort the verbs by uri so we group them together when an uri has multiple operations
Collections.sort(verbs, new VerbOrdering());
+ String pathAsTag = FileUtil.stripLeadingSeparator(rest.getPath());
+ String summary = rest.getDescriptionText();
+
+ // add rest as tag
+ Tag tag = new Tag();
+ tag.description(summary);
+ tag.name(pathAsTag);
+ swagger.addTag(tag);
+
// gather all types in use
Set<String> types = new LinkedHashSet<>();
for (VerbDefinition verb : verbs) {
@@ -129,6 +140,8 @@ public class RestSwaggerReader {
String opPath = SwaggerHelper.buildUrl(basePath, verb.getUri());
Operation op = new Operation();
+ // group in the same tag
+ op.addTag(pathAsTag);
Path path = swagger.getPath(opPath);
if (path == null) {
[3/3] camel git commit: CAMEL-7800: camel-swagger-java - work in
progress
Posted by da...@apache.org.
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/89f50bcd
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/89f50bcd
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/89f50bcd
Branch: refs/heads/swagger
Commit: 89f50bcd354db9585566b60a73683c4ea0fbd489
Parents: 9bfc912
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Sep 18 15:42:57 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Sep 18 15:42:57 2015 +0200
----------------------------------------------------------------------
.../apache/camel/model/rest/RestDefinition.java | 22 ++++++++++++++++++++
.../apache/camel/swagger/RestSwaggerReader.java | 3 ++-
.../swagger/RestSwaggerReaderModelTest.java | 2 +-
3 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/89f50bcd/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
index 4c5c044..9e1a34d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
@@ -52,6 +52,9 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
private String path;
@XmlAttribute
+ private String tag;
+
+ @XmlAttribute
private String consumes;
@XmlAttribute
@@ -85,6 +88,17 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
this.path = path;
}
+ public String getTag() {
+ return tag;
+ }
+
+ /**
+ * To configure a special tag for the operations within this rest definition.
+ */
+ public void setTag(String tag) {
+ this.tag = tag;
+ }
+
public String getConsumes() {
return consumes;
}
@@ -173,6 +187,14 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
return this;
}
+ /**
+ * To set the tag to use of this REST service
+ */
+ public RestDefinition tag(String tag) {
+ setTag(tag);
+ return this;
+ }
+
public RestDefinition get() {
return addVerb("get", null);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/89f50bcd/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 ae9c46f..d5eac90 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
@@ -93,7 +93,8 @@ public class RestSwaggerReader {
// must sort the verbs by uri so we group them together when an uri has multiple operations
Collections.sort(verbs, new VerbOrdering());
- String pathAsTag = FileUtil.stripLeadingSeparator(rest.getPath());
+ // we need to group the operations within the same tag, so use the path as default if not configured
+ String pathAsTag = rest.getTag() != null ? rest.getTag() : FileUtil.stripLeadingSeparator(rest.getPath());
String summary = rest.getDescriptionText();
// add rest as tag
http://git-wip-us.apache.org/repos/asf/camel/blob/89f50bcd/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
index 4d26438..d6293f5 100644
--- a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
@@ -44,7 +44,7 @@ public class RestSwaggerReaderModelTest extends CamelTestSupport {
@Override
public void configure() throws Exception {
// this user REST service is json only
- rest("/user").description("User rest service")
+ rest("/user").tag("dude").description("User rest service")
.consumes("application/json").produces("application/json")
.get("/{id}").description("Find user by id").outType(User.class)