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/55627269 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/55627269 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/55627269 Branch: refs/heads/master Commit: 55627269cebce448d5703c6ab300d230bc070184 Parents: 356bf4a Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Sep 24 08:42:02 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Sep 24 08:42:02 2015 +0200 ---------------------------------------------------------------------- .../swagger/servlet/RestSwaggerServlet.java | 44 ++++++++++++-------- .../src/main/webapp/WEB-INF/web.xml | 10 ++++- 2 files changed, 35 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/55627269/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 35f53c8..48b7ee5 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 @@ -54,11 +54,11 @@ public class RestSwaggerServlet extends HttpServlet { private final ClassResolver classResolver = new DefaultClassResolver(); private volatile boolean initDone; - private String contextIdPattern; - private boolean contextIdListing; + private String apiContextIdPattern; + private boolean apiContextIdListing; - public String getContextIdPattern() { - return contextIdPattern; + public String getApiContextIdPattern() { + return apiContextIdPattern; } /** @@ -66,22 +66,22 @@ public class RestSwaggerServlet extends HttpServlet { * <p/> * The pattern uses the rules from {@link org.apache.camel.util.EndpointHelper#matchPattern(String, String)} * - * @param contextIdPattern the pattern + * @param apiContextIdPattern the pattern */ - public void setContextIdPattern(String contextIdPattern) { - this.contextIdPattern = contextIdPattern; + public void setApiContextIdPattern(String apiContextIdPattern) { + this.apiContextIdPattern = apiContextIdPattern; } - public boolean isContextIdListing() { - return contextIdListing; + public boolean isApiContextIdListing() { + return apiContextIdListing; } /** * Sets whether listing of all available CamelContext's with REST services in the JVM is enabled. If enabled it allows to discover * these contexts, if <tt>false</tt> then only if there is exactly one CamelContext then its used. */ - public void setContextIdListing(boolean contextIdListing) { - this.contextIdListing = contextIdListing; + public void setApiContextIdListing(boolean apiContextIdListing) { + this.apiContextIdListing = apiContextIdListing; } @Override @@ -95,6 +95,16 @@ public class RestSwaggerServlet extends HttpServlet { parameters.put(name, value); } support.initSwagger(swaggerConfig, parameters); + + // allow to configure these options from the servlet config as well + Object pattern = parameters.remove("apiContextIdPattern"); + if (pattern != null) { + apiContextIdPattern = pattern.toString(); + } + Object listing = parameters.remove("apiContextIdListing"); + if (listing != null) { + apiContextIdListing = Boolean.valueOf(listing.toString()); + } } @Override @@ -111,8 +121,8 @@ public class RestSwaggerServlet extends HttpServlet { try { // render list of camel contexts as root - if (contextIdListing && (ObjectHelper.isEmpty(route) || route.equals("/"))) { - support.renderCamelContexts(adapter, contextId, contextIdPattern); + if (apiContextIdListing && (ObjectHelper.isEmpty(route) || route.equals("/"))) { + support.renderCamelContexts(adapter, contextId, apiContextIdPattern); } else { String name = null; if (ObjectHelper.isNotEmpty(route)) { @@ -136,15 +146,15 @@ public class RestSwaggerServlet extends HttpServlet { boolean match = false; if (name != null) { match = true; - if (contextIdPattern != null) { - if ("#name#".equals(contextIdPattern)) { + if (apiContextIdPattern != null) { + if ("#name#".equals(apiContextIdPattern)) { // always match as we do not know what is the current CamelContext in a plain servlet match = true; } else { - match = EndpointHelper.matchPattern(name, contextIdPattern); + match = EndpointHelper.matchPattern(name, apiContextIdPattern); } if (LOG.isDebugEnabled()) { - LOG.debug("Match contextId: {} with pattern: {} -> {}", new Object[]{name, contextIdPattern, match}); + LOG.debug("Match contextId: {} with pattern: {} -> {}", new Object[]{name, apiContextIdPattern, match}); } } } http://git-wip-us.apache.org/repos/asf/camel/blob/55627269/examples/camel-example-swagger-java/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/examples/camel-example-swagger-java/src/main/webapp/WEB-INF/web.xml b/examples/camel-example-swagger-java/src/main/webapp/WEB-INF/web.xml index cfde29f..ad45c0d 100755 --- a/examples/camel-example-swagger-java/src/main/webapp/WEB-INF/web.xml +++ b/examples/camel-example-swagger-java/src/main/webapp/WEB-INF/web.xml @@ -43,9 +43,15 @@ <!-- to setup Camel Swagger servlet --> <servlet> - <servlet-name>ApiDeclarationServlet</servlet-name> + <servlet-name>SwaggerServlet</servlet-name> <servlet-class>org.apache.camel.swagger.servlet.RestSwaggerServlet</servlet-class> <init-param> + <!-- enable context id listing so we can list all the CamelContexts in the JVM that has REST services + which we then will be able to show --> + <param-name>apiContextIdListing</param-name> + <param-value>true</param-value> + </init-param> + <init-param> <!-- we specify the base.path using relative notation, that means the actual path will be calculated at runtime as http://server:port/contextpath/rest --> <param-name>base.path</param-name> @@ -78,7 +84,7 @@ <!-- swagger api declaration --> <servlet-mapping> - <servlet-name>ApiDeclarationServlet</servlet-name> + <servlet-name>SwaggerServlet</servlet-name> <url-pattern>/api-docs/*</url-pattern> </servlet-mapping>