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/23 11:35:51 UTC

[15/16] camel git commit: CAMEL-8545: camel-swagger-java to run outside servlet - work in progress

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 <da...@apache.org>
Authored: Wed Sep 23 11:28:02 2015 +0200
Committer: Claus Ibsen <da...@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