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 2016/03/14 20:17:45 UTC

[1/8] camel git commit: added support to exclude a route from documentation

Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x 7ad4fe372 -> 31929b025
  refs/heads/master f647d33ab -> ab101cb4e


added support to exclude a route from documentation


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5b0714bc
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5b0714bc
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5b0714bc

Branch: refs/heads/camel-2.16.x
Commit: 5b0714bcb23b97241d00b1c3f349e6c2b0ccc3ca
Parents: 7ad4fe3
Author: Simion Hantig <si...@hgdata.com>
Authored: Mon Mar 14 12:10:27 2016 +0200
Committer: Simion Hantig <si...@hgdata.com>
Committed: Mon Mar 14 12:16:08 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/model/rest/RestDefinition.java  |  6 ++++++
 .../java/org/apache/camel/model/rest/VerbDefinition.java  | 10 ++++++++++
 .../java/org/apache/camel/swagger/RestSwaggerReader.java  |  7 ++++++-
 3 files changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5b0714bc/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 41f6fe3..176d31d 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
@@ -497,6 +497,12 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         return this;
     }
 
+    public RestDefinition excludeFromDocs() {
+        VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
+        verb.setExcludeFromDocs(true);
+        return this;
+    }
+
     public RouteDefinition route() {
         // add to last verb
         if (getVerbs().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/camel/blob/5b0714bc/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
index 8d1e686..d3a9aba 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
@@ -98,6 +98,8 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
     private RestDefinition rest;
     @XmlAttribute
     private String routeId;
+    @XmlAttribute
+    private Boolean excludeFromDocs;
 
     @Override
     public String getLabel() {
@@ -369,6 +371,14 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         return rest.verb(verb, uri);
     }
 
+    public Boolean getExcludeFromDocs() {
+        return excludeFromDocs;
+    }
+
+    public void setExcludeFromDocs(Boolean excludeFromDocs) {
+        this.excludeFromDocs = excludeFromDocs;
+    }
+
     public String asVerb() {
         // we do not want the jaxb model to repeat itself, by outputting <get method="get">
         // so we defer the verb from the instance type

http://git-wip-us.apache.org/repos/asf/camel/blob/5b0714bc/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 29b2e72..36e306c 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
@@ -116,6 +116,9 @@ public class RestSwaggerReader {
         // gather all types in use
         Set<String> types = new LinkedHashSet<>();
         for (VerbDefinition verb : verbs) {
+            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+                continue;
+            }
             String type = verb.getType();
             if (ObjectHelper.isNotEmpty(type)) {
                 if (type.endsWith("[]")) {
@@ -156,7 +159,9 @@ public class RestSwaggerReader {
         String basePath = rest.getPath();
 
         for (VerbDefinition verb : verbs) {
-
+            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+                continue;
+            }
             // the method must be in lower case
             String method = verb.asVerb().toLowerCase(Locale.US);
             // operation path is a key


[2/8] camel git commit: added support to exclude a route from documentation

Posted by da...@apache.org.
added support to exclude a route from documentation


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8f1c63f7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8f1c63f7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8f1c63f7

Branch: refs/heads/camel-2.16.x
Commit: 8f1c63f7e3dbe7525b55a90775a1ee5b10491df7
Parents: 5b0714b
Author: Simion Hantig <si...@hgdata.com>
Authored: Mon Mar 14 12:10:27 2016 +0200
Committer: Simion Hantig <si...@hgdata.com>
Committed: Mon Mar 14 14:00:35 2016 +0200

----------------------------------------------------------------------
 .../org/apache/camel/model/rest/RestDefinition.java   |  7 +++++--
 .../org/apache/camel/model/rest/VerbDefinition.java   | 14 +++++++++-----
 .../org/apache/camel/swagger/RestSwaggerReader.java   |  6 ++++--
 3 files changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8f1c63f7/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 176d31d..cfe7a23 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
@@ -497,9 +497,12 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         return this;
     }
 
-    public RestDefinition excludeFromDocs() {
+    /**
+     * Include or exclude the current Rest Definition in API documentation
+     */
+    public RestDefinition apiDocs(Boolean apiDocs) {
         VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
-        verb.setExcludeFromDocs(true);
+        verb.setApiDocs(apiDocs);
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/8f1c63f7/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
index d3a9aba..2c33f8e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
@@ -99,7 +99,7 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
     @XmlAttribute
     private String routeId;
     @XmlAttribute
-    private Boolean excludeFromDocs;
+    private Boolean apiDocs;
 
     @Override
     public String getLabel() {
@@ -371,12 +371,16 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         return rest.verb(verb, uri);
     }
 
-    public Boolean getExcludeFromDocs() {
-        return excludeFromDocs;
+    public Boolean getApiDocs() {
+        return apiDocs;
     }
 
-    public void setExcludeFromDocs(Boolean excludeFromDocs) {
-        this.excludeFromDocs = excludeFromDocs;
+    /**
+     * Whether to include or exclude the VerbDefinition in API documentation.
+     * The default value is true.
+     */
+    public void setApiDocs(Boolean apiDocs) {
+        this.apiDocs = apiDocs;
     }
 
     public String asVerb() {

http://git-wip-us.apache.org/repos/asf/camel/blob/8f1c63f7/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 36e306c..fa30815 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
@@ -116,7 +116,8 @@ public class RestSwaggerReader {
         // gather all types in use
         Set<String> types = new LinkedHashSet<>();
         for (VerbDefinition verb : verbs) {
-            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+            // check if the Verb Definition must be excluded from documentation
+            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
                 continue;
             }
             String type = verb.getType();
@@ -159,7 +160,8 @@ public class RestSwaggerReader {
         String basePath = rest.getPath();
 
         for (VerbDefinition verb : verbs) {
-            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+            // check if the Verb Definition must be excluded from documentation
+            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
                 continue;
             }
             // the method must be in lower case


[7/8] camel git commit: Polished. This closes #898

Posted by da...@apache.org.
Polished. This closes #898


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/dc677b1f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/dc677b1f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/dc677b1f

Branch: refs/heads/camel-2.16.x
Commit: dc677b1fca23c21aecba4e8ac2060fb0d64e41af
Parents: 8f1c63f
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Mar 14 19:57:07 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 14 20:17:27 2016 +0100

----------------------------------------------------------------------
 .../apache/camel/model/rest/RestDefinition.java | 44 +++++++++++++++-----
 .../apache/camel/model/rest/VerbDefinition.java | 25 +++++------
 2 files changed, 47 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/dc677b1f/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 cfe7a23..88e06f9 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
@@ -68,6 +68,9 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
     @XmlAttribute
     private Boolean enableCORS;
 
+    @XmlAttribute
+    private Boolean apiDocs;
+
     @XmlElementRef
     private List<VerbDefinition> verbs = new ArrayList<VerbDefinition>();
 
@@ -174,10 +177,23 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         this.enableCORS = enableCORS;
     }
 
+    public Boolean getApiDocs() {
+        return apiDocs;
+    }
+
+    /**
+     * Whether to include or exclude the VerbDefinition in API documentation.
+     * This option will override what may be configured on a parent level
+     * <p/>
+     * The default value is true.
+     */
+    public void setApiDocs(Boolean apiDocs) {
+        this.apiDocs = apiDocs;
+    }
+
     // Fluent API
     //-------------------------------------------------------------------------
 
-
     /**
      * To set the base path of this REST service
      */
@@ -456,6 +472,23 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
     }
 
     /**
+     * Include or exclude the current Rest Definition in API documentation.
+     * <p/>
+     * The default value is true.
+     */
+    public RestDefinition apiDocs(Boolean apiDocs) {
+        if (getVerbs().isEmpty()) {
+            this.apiDocs = apiDocs;
+        } else {
+            // add on last verb as that is how the Java DSL works
+            VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
+            verb.setApiDocs(apiDocs);
+        }
+
+        return this;
+    }
+
+    /**
      * Routes directly to the given static endpoint.
      * <p/>
      * If you need additional routing capabilities, then use {@link #route()} instead.
@@ -497,15 +530,6 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         return this;
     }
 
-    /**
-     * Include or exclude the current Rest Definition in API documentation
-     */
-    public RestDefinition apiDocs(Boolean apiDocs) {
-        VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
-        verb.setApiDocs(apiDocs);
-        return this;
-    }
-
     public RouteDefinition route() {
         // add to last verb
         if (getVerbs().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/camel/blob/dc677b1f/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
index 2c33f8e..744a99c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
@@ -254,6 +254,19 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         this.routeId = routeId;
     }
 
+    public Boolean getApiDocs() {
+        return apiDocs;
+    }
+
+    /**
+     * Whether to include or exclude the VerbDefinition in API documentation.
+     * <p/>
+     * The default value is true.
+     */
+    public void setApiDocs(Boolean apiDocs) {
+        this.apiDocs = apiDocs;
+    }
+
     public RestDefinition getRest() {
         return rest;
     }
@@ -371,18 +384,6 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         return rest.verb(verb, uri);
     }
 
-    public Boolean getApiDocs() {
-        return apiDocs;
-    }
-
-    /**
-     * Whether to include or exclude the VerbDefinition in API documentation.
-     * The default value is true.
-     */
-    public void setApiDocs(Boolean apiDocs) {
-        this.apiDocs = apiDocs;
-    }
-
     public String asVerb() {
         // we do not want the jaxb model to repeat itself, by outputting <get method="get">
         // so we defer the verb from the instance type


[8/8] camel git commit: Added unit test

Posted by da...@apache.org.
Added unit test


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/31929b02
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/31929b02
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/31929b02

Branch: refs/heads/camel-2.16.x
Commit: 31929b02581ee19c3e0f2b150243903b8b00a46a
Parents: dc677b1
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Mar 14 20:17:03 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 14 20:17:34 2016 +0100

----------------------------------------------------------------------
 .../apache/camel/swagger/RestSwaggerReader.java | 20 ++++-
 .../RestSwaggerReaderApiDocsOverrideTest.java   | 86 +++++++++++++++++++
 .../swagger/RestSwaggerReaderApiDocsTest.java   | 89 ++++++++++++++++++++
 3 files changed, 193 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/31929b02/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 fa30815..e2de95a 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
@@ -116,10 +116,19 @@ public class RestSwaggerReader {
         // gather all types in use
         Set<String> types = new LinkedHashSet<>();
         for (VerbDefinition verb : verbs) {
+
             // check if the Verb Definition must be excluded from documentation
-            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
+            Boolean apiDocs;
+            if (verb.getApiDocs() != null) {
+                apiDocs = verb.getApiDocs();
+            } else {
+                // fallback to option on rest
+                apiDocs = rest.getApiDocs();
+            }
+            if (apiDocs != null && !apiDocs) {
                 continue;
             }
+
             String type = verb.getType();
             if (ObjectHelper.isNotEmpty(type)) {
                 if (type.endsWith("[]")) {
@@ -161,7 +170,14 @@ public class RestSwaggerReader {
 
         for (VerbDefinition verb : verbs) {
             // check if the Verb Definition must be excluded from documentation
-            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
+            Boolean apiDocs;
+            if (verb.getApiDocs() != null) {
+                apiDocs = verb.getApiDocs();
+            } else {
+                // fallback to option on rest
+                apiDocs = rest.getApiDocs();
+            }
+            if (apiDocs != null && !apiDocs) {
                 continue;
             }
             // the method must be in lower case

http://git-wip-us.apache.org/repos/asf/camel/blob/31929b02/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java
new file mode 100644
index 0000000..7db9792
--- /dev/null
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.swagger;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import io.swagger.jaxrs.config.BeanConfig;
+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.RestParamType;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class RestSwaggerReaderApiDocsOverrideTest extends CamelTestSupport {
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+        jndi.bind("dummy-rest", new DummyRestConsumerFactory());
+        return jndi;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                rest("/hello").apiDocs(false).consumes("application/json").produces("application/json")
+                        .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}").apiDocs(true).description("Saying bye")
+                            .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam()
+                            .responseMessage().code(200).message("A reply message").endResponseMessage()
+                            .to("log:bye")
+                        .post("/bye").description("To update the greeting message").consumes("application/xml").produces("application/xml")
+                            .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").endParam()
+                            .to("log:bye");
+            }
+        };
+    }
+
+    @Test
+    public void testReaderRead() throws Exception {
+        BeanConfig config = new BeanConfig();
+        config.setHost("localhost:8080");
+        config.setSchemes(new String[]{"http"});
+        config.setBasePath("/api");
+        RestSwaggerReader reader = new RestSwaggerReader();
+
+        Swagger swagger = reader.read(context.getRestDefinitions(), null, config, context.getName(), new DefaultClassResolver());
+        assertNotNull(swagger);
+
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.enable(SerializationFeature.INDENT_OUTPUT);
+        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        String json = mapper.writeValueAsString(swagger);
+
+        log.info(json);
+
+        assertFalse(json.contains("\"/hello/bye\""));
+        assertFalse(json.contains("\"summary\" : \"To update the greeting message\""));
+        assertTrue(json.contains("\"/hello/bye/{name}\""));
+        assertFalse(json.contains("\"/hello/hi/{name}\""));
+
+        context.stop();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/31929b02/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java
new file mode 100644
index 0000000..14a7bf2
--- /dev/null
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.swagger;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import io.swagger.jaxrs.config.BeanConfig;
+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.RestParamType;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class RestSwaggerReaderApiDocsTest extends CamelTestSupport {
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+        jndi.bind("dummy-rest", new DummyRestConsumerFactory());
+        return jndi;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                rest("/hello").consumes("application/json").produces("application/json")
+                        .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}").apiDocs(false).description("Saying bye")
+                            .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam()
+                            .responseMessage().code(200).message("A reply message").endResponseMessage()
+                            .to("log:bye")
+                        .post("/bye").apiDocs(false).description("To update the greeting message").consumes("application/xml").produces("application/xml")
+                            .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").endParam()
+                            .to("log:bye");
+            }
+        };
+    }
+
+    @Test
+    public void testReaderRead() throws Exception {
+        BeanConfig config = new BeanConfig();
+        config.setHost("localhost:8080");
+        config.setSchemes(new String[]{"http"});
+        config.setBasePath("/api");
+        RestSwaggerReader reader = new RestSwaggerReader();
+
+        Swagger swagger = reader.read(context.getRestDefinitions(), null, config, context.getName(), new DefaultClassResolver());
+        assertNotNull(swagger);
+
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.enable(SerializationFeature.INDENT_OUTPUT);
+        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        String json = mapper.writeValueAsString(swagger);
+
+        log.info(json);
+
+        assertTrue(json.contains("\"host\" : \"localhost:8080\""));
+        assertTrue(json.contains("\"basePath\" : \"/api\""));
+
+        assertFalse(json.contains("\"/hello/bye\""));
+        assertFalse(json.contains("\"summary\" : \"To update the greeting message\""));
+        assertFalse(json.contains("\"/hello/bye/{name}\""));
+        assertTrue(json.contains("\"/hello/hi/{name}\""));
+
+        context.stop();
+    }
+
+}


[4/8] camel git commit: added support to exclude a route from documentation

Posted by da...@apache.org.
added support to exclude a route from documentation


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4748f380
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4748f380
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4748f380

Branch: refs/heads/master
Commit: 4748f380ba6f71b591edab5436a26ac27f3dea04
Parents: bcd6b6b
Author: Simion Hantig <si...@hgdata.com>
Authored: Mon Mar 14 12:10:27 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 14 19:50:37 2016 +0100

----------------------------------------------------------------------
 .../org/apache/camel/model/rest/RestDefinition.java   |  7 +++++--
 .../org/apache/camel/model/rest/VerbDefinition.java   | 14 +++++++++-----
 .../org/apache/camel/swagger/RestSwaggerReader.java   |  6 ++++--
 3 files changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/4748f380/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 7f732a5..2b3baf7 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
@@ -501,9 +501,12 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         return this;
     }
 
-    public RestDefinition excludeFromDocs() {
+    /**
+     * Include or exclude the current Rest Definition in API documentation
+     */
+    public RestDefinition apiDocs(Boolean apiDocs) {
         VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
-        verb.setExcludeFromDocs(true);
+        verb.setApiDocs(apiDocs);
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/4748f380/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
index d3a9aba..2c33f8e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
@@ -99,7 +99,7 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
     @XmlAttribute
     private String routeId;
     @XmlAttribute
-    private Boolean excludeFromDocs;
+    private Boolean apiDocs;
 
     @Override
     public String getLabel() {
@@ -371,12 +371,16 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         return rest.verb(verb, uri);
     }
 
-    public Boolean getExcludeFromDocs() {
-        return excludeFromDocs;
+    public Boolean getApiDocs() {
+        return apiDocs;
     }
 
-    public void setExcludeFromDocs(Boolean excludeFromDocs) {
-        this.excludeFromDocs = excludeFromDocs;
+    /**
+     * Whether to include or exclude the VerbDefinition in API documentation.
+     * The default value is true.
+     */
+    public void setApiDocs(Boolean apiDocs) {
+        this.apiDocs = apiDocs;
     }
 
     public String asVerb() {

http://git-wip-us.apache.org/repos/asf/camel/blob/4748f380/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 67f975e..4131c8f 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
@@ -117,7 +117,8 @@ public class RestSwaggerReader {
         // gather all types in use
         Set<String> types = new LinkedHashSet<>();
         for (VerbDefinition verb : verbs) {
-            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+            // check if the Verb Definition must be excluded from documentation
+            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
                 continue;
             }
             String type = verb.getType();
@@ -164,7 +165,8 @@ public class RestSwaggerReader {
         String basePath = rest.getPath();
 
         for (VerbDefinition verb : verbs) {
-            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+            // check if the Verb Definition must be excluded from documentation
+            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
                 continue;
             }
             // the method must be in lower case


[5/8] camel git commit: Polished. This closes #898

Posted by da...@apache.org.
Polished. This closes #898


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7fbccbb1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7fbccbb1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7fbccbb1

Branch: refs/heads/master
Commit: 7fbccbb1d4aa7a4cfc4aeae0a85e1e05cc2096dc
Parents: 4748f38
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Mar 14 19:57:07 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 14 20:01:45 2016 +0100

----------------------------------------------------------------------
 .../apache/camel/model/rest/RestDefinition.java | 44 +++++++++++++++-----
 .../apache/camel/model/rest/VerbDefinition.java | 25 +++++------
 2 files changed, 47 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7fbccbb1/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 2b3baf7..2af693b 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
@@ -70,6 +70,9 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
     @XmlAttribute
     private Boolean enableCORS;
 
+    @XmlAttribute
+    private Boolean apiDocs;
+
     @XmlElementRef
     private List<VerbDefinition> verbs = new ArrayList<VerbDefinition>();
 
@@ -176,10 +179,23 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         this.enableCORS = enableCORS;
     }
 
+    public Boolean getApiDocs() {
+        return apiDocs;
+    }
+
+    /**
+     * Whether to include or exclude the VerbDefinition in API documentation.
+     * This option will override what may be configured on a parent level
+     * <p/>
+     * The default value is true.
+     */
+    public void setApiDocs(Boolean apiDocs) {
+        this.apiDocs = apiDocs;
+    }
+
     // Fluent API
     //-------------------------------------------------------------------------
 
-
     /**
      * To set the base path of this REST service
      */
@@ -460,6 +476,23 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
     }
 
     /**
+     * Include or exclude the current Rest Definition in API documentation.
+     * <p/>
+     * The default value is true.
+     */
+    public RestDefinition apiDocs(Boolean apiDocs) {
+        if (getVerbs().isEmpty()) {
+            this.apiDocs = apiDocs;
+        } else {
+            // add on last verb as that is how the Java DSL works
+            VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
+            verb.setApiDocs(apiDocs);
+        }
+
+        return this;
+    }
+
+    /**
      * Routes directly to the given static endpoint.
      * <p/>
      * If you need additional routing capabilities, then use {@link #route()} instead.
@@ -501,15 +534,6 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         return this;
     }
 
-    /**
-     * Include or exclude the current Rest Definition in API documentation
-     */
-    public RestDefinition apiDocs(Boolean apiDocs) {
-        VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
-        verb.setApiDocs(apiDocs);
-        return this;
-    }
-
     public RouteDefinition route() {
         // add to last verb
         if (getVerbs().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/camel/blob/7fbccbb1/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
index 2c33f8e..744a99c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
@@ -254,6 +254,19 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         this.routeId = routeId;
     }
 
+    public Boolean getApiDocs() {
+        return apiDocs;
+    }
+
+    /**
+     * Whether to include or exclude the VerbDefinition in API documentation.
+     * <p/>
+     * The default value is true.
+     */
+    public void setApiDocs(Boolean apiDocs) {
+        this.apiDocs = apiDocs;
+    }
+
     public RestDefinition getRest() {
         return rest;
     }
@@ -371,18 +384,6 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         return rest.verb(verb, uri);
     }
 
-    public Boolean getApiDocs() {
-        return apiDocs;
-    }
-
-    /**
-     * Whether to include or exclude the VerbDefinition in API documentation.
-     * The default value is true.
-     */
-    public void setApiDocs(Boolean apiDocs) {
-        this.apiDocs = apiDocs;
-    }
-
     public String asVerb() {
         // we do not want the jaxb model to repeat itself, by outputting <get method="get">
         // so we defer the verb from the instance type


[3/8] camel git commit: added support to exclude a route from documentation

Posted by da...@apache.org.
added support to exclude a route from documentation


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bcd6b6b9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bcd6b6b9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bcd6b6b9

Branch: refs/heads/master
Commit: bcd6b6b9d225d0768b0e38bb599cf01a13d9379e
Parents: f647d33
Author: Simion Hantig <si...@hgdata.com>
Authored: Mon Mar 14 12:10:27 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 14 19:50:30 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/camel/model/rest/RestDefinition.java  |  6 ++++++
 .../java/org/apache/camel/model/rest/VerbDefinition.java  | 10 ++++++++++
 .../java/org/apache/camel/swagger/RestSwaggerReader.java  |  7 ++++++-
 3 files changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/bcd6b6b9/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 cd815f4..7f732a5 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
@@ -501,6 +501,12 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         return this;
     }
 
+    public RestDefinition excludeFromDocs() {
+        VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
+        verb.setExcludeFromDocs(true);
+        return this;
+    }
+
     public RouteDefinition route() {
         // add to last verb
         if (getVerbs().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/camel/blob/bcd6b6b9/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
index 8d1e686..d3a9aba 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
@@ -98,6 +98,8 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
     private RestDefinition rest;
     @XmlAttribute
     private String routeId;
+    @XmlAttribute
+    private Boolean excludeFromDocs;
 
     @Override
     public String getLabel() {
@@ -369,6 +371,14 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition>
         return rest.verb(verb, uri);
     }
 
+    public Boolean getExcludeFromDocs() {
+        return excludeFromDocs;
+    }
+
+    public void setExcludeFromDocs(Boolean excludeFromDocs) {
+        this.excludeFromDocs = excludeFromDocs;
+    }
+
     public String asVerb() {
         // we do not want the jaxb model to repeat itself, by outputting <get method="get">
         // so we defer the verb from the instance type

http://git-wip-us.apache.org/repos/asf/camel/blob/bcd6b6b9/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 e3e65ef..67f975e 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
@@ -117,6 +117,9 @@ public class RestSwaggerReader {
         // gather all types in use
         Set<String> types = new LinkedHashSet<>();
         for (VerbDefinition verb : verbs) {
+            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+                continue;
+            }
             String type = verb.getType();
             if (ObjectHelper.isNotEmpty(type)) {
                 if (type.endsWith("[]")) {
@@ -161,7 +164,9 @@ public class RestSwaggerReader {
         String basePath = rest.getPath();
 
         for (VerbDefinition verb : verbs) {
-
+            if (verb.getExcludeFromDocs() != null && verb.getExcludeFromDocs()) {
+                continue;
+            }
             // the method must be in lower case
             String method = verb.asVerb().toLowerCase(Locale.US);
             // operation path is a key


[6/8] camel git commit: Added unit test

Posted by da...@apache.org.
Added unit test


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ab101cb4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ab101cb4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ab101cb4

Branch: refs/heads/master
Commit: ab101cb4e282db776e4624f9b933b28a2637493a
Parents: 7fbccbb
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Mar 14 20:17:03 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 14 20:17:03 2016 +0100

----------------------------------------------------------------------
 .../apache/camel/swagger/RestSwaggerReader.java | 20 ++++-
 .../RestSwaggerReaderApiDocsOverrideTest.java   | 86 +++++++++++++++++++
 .../swagger/RestSwaggerReaderApiDocsTest.java   | 89 ++++++++++++++++++++
 3 files changed, 193 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ab101cb4/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 4131c8f..08c0a2d 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
@@ -117,10 +117,19 @@ public class RestSwaggerReader {
         // gather all types in use
         Set<String> types = new LinkedHashSet<>();
         for (VerbDefinition verb : verbs) {
+
             // check if the Verb Definition must be excluded from documentation
-            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
+            Boolean apiDocs;
+            if (verb.getApiDocs() != null) {
+                apiDocs = verb.getApiDocs();
+            } else {
+                // fallback to option on rest
+                apiDocs = rest.getApiDocs();
+            }
+            if (apiDocs != null && !apiDocs) {
                 continue;
             }
+
             String type = verb.getType();
             if (ObjectHelper.isNotEmpty(type)) {
                 if (type.endsWith("[]")) {
@@ -166,7 +175,14 @@ public class RestSwaggerReader {
 
         for (VerbDefinition verb : verbs) {
             // check if the Verb Definition must be excluded from documentation
-            if (verb.getApiDocs() != null && !verb.getApiDocs()) {
+            Boolean apiDocs;
+            if (verb.getApiDocs() != null) {
+                apiDocs = verb.getApiDocs();
+            } else {
+                // fallback to option on rest
+                apiDocs = rest.getApiDocs();
+            }
+            if (apiDocs != null && !apiDocs) {
                 continue;
             }
             // the method must be in lower case

http://git-wip-us.apache.org/repos/asf/camel/blob/ab101cb4/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java
new file mode 100644
index 0000000..7db9792
--- /dev/null
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.swagger;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import io.swagger.jaxrs.config.BeanConfig;
+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.RestParamType;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class RestSwaggerReaderApiDocsOverrideTest extends CamelTestSupport {
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+        jndi.bind("dummy-rest", new DummyRestConsumerFactory());
+        return jndi;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                rest("/hello").apiDocs(false).consumes("application/json").produces("application/json")
+                        .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}").apiDocs(true).description("Saying bye")
+                            .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam()
+                            .responseMessage().code(200).message("A reply message").endResponseMessage()
+                            .to("log:bye")
+                        .post("/bye").description("To update the greeting message").consumes("application/xml").produces("application/xml")
+                            .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").endParam()
+                            .to("log:bye");
+            }
+        };
+    }
+
+    @Test
+    public void testReaderRead() throws Exception {
+        BeanConfig config = new BeanConfig();
+        config.setHost("localhost:8080");
+        config.setSchemes(new String[]{"http"});
+        config.setBasePath("/api");
+        RestSwaggerReader reader = new RestSwaggerReader();
+
+        Swagger swagger = reader.read(context.getRestDefinitions(), null, config, context.getName(), new DefaultClassResolver());
+        assertNotNull(swagger);
+
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.enable(SerializationFeature.INDENT_OUTPUT);
+        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        String json = mapper.writeValueAsString(swagger);
+
+        log.info(json);
+
+        assertFalse(json.contains("\"/hello/bye\""));
+        assertFalse(json.contains("\"summary\" : \"To update the greeting message\""));
+        assertTrue(json.contains("\"/hello/bye/{name}\""));
+        assertFalse(json.contains("\"/hello/hi/{name}\""));
+
+        context.stop();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/ab101cb4/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java
new file mode 100644
index 0000000..14a7bf2
--- /dev/null
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.swagger;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import io.swagger.jaxrs.config.BeanConfig;
+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.RestParamType;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class RestSwaggerReaderApiDocsTest extends CamelTestSupport {
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+        jndi.bind("dummy-rest", new DummyRestConsumerFactory());
+        return jndi;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                rest("/hello").consumes("application/json").produces("application/json")
+                        .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}").apiDocs(false).description("Saying bye")
+                            .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam()
+                            .responseMessage().code(200).message("A reply message").endResponseMessage()
+                            .to("log:bye")
+                        .post("/bye").apiDocs(false).description("To update the greeting message").consumes("application/xml").produces("application/xml")
+                            .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").endParam()
+                            .to("log:bye");
+            }
+        };
+    }
+
+    @Test
+    public void testReaderRead() throws Exception {
+        BeanConfig config = new BeanConfig();
+        config.setHost("localhost:8080");
+        config.setSchemes(new String[]{"http"});
+        config.setBasePath("/api");
+        RestSwaggerReader reader = new RestSwaggerReader();
+
+        Swagger swagger = reader.read(context.getRestDefinitions(), null, config, context.getName(), new DefaultClassResolver());
+        assertNotNull(swagger);
+
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.enable(SerializationFeature.INDENT_OUTPUT);
+        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        String json = mapper.writeValueAsString(swagger);
+
+        log.info(json);
+
+        assertTrue(json.contains("\"host\" : \"localhost:8080\""));
+        assertTrue(json.contains("\"basePath\" : \"/api\""));
+
+        assertFalse(json.contains("\"/hello/bye\""));
+        assertFalse(json.contains("\"summary\" : \"To update the greeting message\""));
+        assertFalse(json.contains("\"/hello/bye/{name}\""));
+        assertTrue(json.contains("\"/hello/hi/{name}\""));
+
+        context.stop();
+    }
+
+}