CAMEL-8545: camel-swagger-java to run outside servlet - 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/17ef02fe Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/17ef02fe Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/17ef02fe Branch: refs/heads/master Commit: 17ef02fe0ac73cff207d2576dee6082ed5b03b04 Parents: f3aed3e Author: Claus Ibsen <davscl...@apache.org> Authored: Wed Sep 23 11:28:02 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Sep 23 11:30:48 2015 +0200 ---------------------------------------------------------------------- .../camel/swagger/RestSwaggerProcessor.java | 18 +++++++++------- .../camel/swagger/RestSwaggerSupport.java | 22 +++++++++++++------- .../swagger/servlet/RestSwaggerServlet.java | 2 +- .../camel/example/cdi/UserRouteBuilder.java | 2 +- 4 files changed, 28 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/17ef02fe/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerProcessor.java ---------------------------------------------------------------------- diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerProcessor.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerProcessor.java index 58d3205..a83fe25 100644 --- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerProcessor.java +++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerProcessor.java @@ -48,7 +48,7 @@ public class RestSwaggerProcessor implements Processor { @Override public void process(Exchange exchange) throws Exception { - String contextId; + String contextId = exchange.getContext().getName(); String route = exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class); RestApiResponseAdapter adapter = new ExchangeRestApiResponseAdapter(exchange); @@ -56,30 +56,34 @@ public class RestSwaggerProcessor implements Processor { try { // render list of camel contexts as root if (route == null || route.equals("") || route.equals("/")) { - support.renderCamelContexts(adapter, contextIdPattern); + support.renderCamelContexts(adapter, contextId, contextIdPattern); } else { // first part is the camel context if (route.startsWith("/")) { route = route.substring(1); } // the remainder is the route part - contextId = route.split("/")[0]; + String name = route.split("/")[0]; if (route.startsWith(contextId)) { - route = route.substring(contextId.length()); + route = route.substring(name.length()); } boolean match = true; if (contextIdPattern != null) { - match = EndpointHelper.matchPattern(contextId, contextIdPattern); + if ("#name#".equals(contextIdPattern)) { + match = name.equals(contextId); + } else { + match = EndpointHelper.matchPattern(name, contextIdPattern); + } if (LOG.isDebugEnabled()) { - LOG.debug("Match contextId: {} with pattern: {} -> {}", new Object[]{contextId, contextIdPattern, match}); + LOG.debug("Match contextId: {} with pattern: {} -> {}", new Object[]{name, contextIdPattern, match}); } } if (!match) { adapter.noContent(); } else { - support.renderResourceListing(adapter, swaggerConfig, contextId, route); + support.renderResourceListing(adapter, swaggerConfig, name, route); } } } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/camel/blob/17ef02fe/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java ---------------------------------------------------------------------- diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java index 5e9513d..b3d33c3 100644 --- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java +++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java @@ -198,7 +198,7 @@ public class RestSwaggerSupport { /** * Renders a list of available CamelContexts in the JVM */ - public void renderCamelContexts(RestApiResponseAdapter response, String contextIdPattern) throws Exception { + public void renderCamelContexts(RestApiResponseAdapter response, String contextId, String contextIdPattern) throws Exception { LOG.trace("renderCamelContexts"); if (cors) { @@ -214,12 +214,20 @@ public class RestSwaggerSupport { List<String> contexts = findCamelContexts(); // filter non matched CamelContext's - Iterator<String> it = contexts.iterator(); - while (it.hasNext()) { - String name = it.next(); - boolean match = EndpointHelper.matchPattern(name, contextIdPattern); - if (!match) { - it.remove(); + if (contextIdPattern != null) { + Iterator<String> it = contexts.iterator(); + while (it.hasNext()) { + String name = it.next(); + + boolean match; + if ("#name#".equals(contextIdPattern)) { + match = name.equals(contextId); + } else { + match = EndpointHelper.matchPattern(name, contextIdPattern); + } + if (!match) { + it.remove(); + } } } http://git-wip-us.apache.org/repos/asf/camel/blob/17ef02fe/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java ---------------------------------------------------------------------- diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java index a1381ce..345efc9 100644 --- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java +++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java @@ -77,7 +77,7 @@ public class RestSwaggerServlet extends HttpServlet { // render list of camel contexts as root if (route == null || route.equals("") || route.equals("/")) { - swagger.renderCamelContexts(adapter, null); + swagger.renderCamelContexts(adapter, null, null); } else { // first part is the camel context if (route.startsWith("/")) { http://git-wip-us.apache.org/repos/asf/camel/blob/17ef02fe/examples/camel-example-swagger-cdi/src/main/java/org/apache/camel/example/cdi/UserRouteBuilder.java ---------------------------------------------------------------------- diff --git a/examples/camel-example-swagger-cdi/src/main/java/org/apache/camel/example/cdi/UserRouteBuilder.java b/examples/camel-example-swagger-cdi/src/main/java/org/apache/camel/example/cdi/UserRouteBuilder.java index c7657d9..f037444 100644 --- a/examples/camel-example-swagger-cdi/src/main/java/org/apache/camel/example/cdi/UserRouteBuilder.java +++ b/examples/camel-example-swagger-cdi/src/main/java/org/apache/camel/example/cdi/UserRouteBuilder.java @@ -39,7 +39,7 @@ public class UserRouteBuilder extends RouteBuilder { .dataFormatProperty("prettyPrint", "true") // setup context path and port number that netty will use .contextPath("/rest").port(8080) - // add swagger api-doc out of the box, and only allow to docs for this CamelContext + // add swagger api-doc out of the box, and only allow the docs for this CamelContext (#name#) .apiContextPath("/api-doc").apiContextIdPattern("#name#") .apiProperty("api.title", "User API").apiProperty("api.version", "1.2.3") // and enable CORS