Repository: camel
Updated Branches:
  refs/heads/master 74fc02f66 -> 9bad61d33


Added camel-swagger-java docs to Gitbook


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

Branch: refs/heads/master
Commit: 9bad61d33af37ddf77073ece78d95cb8c52f244d
Parents: 43634fb
Author: Andrea Cosentino <anco...@gmail.com>
Authored: Wed Jun 8 16:25:17 2016 +0200
Committer: Andrea Cosentino <anco...@gmail.com>
Committed: Wed Jun 8 16:25:36 2016 +0200

----------------------------------------------------------------------
 .../src/main/docs/swagger-java.adoc             | 270 +++++++++++++++++++
 docs/user-manual/en/SUMMARY.md                  |   1 +
 2 files changed, 271 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9bad61d3/components/camel-swagger-java/src/main/docs/swagger-java.adoc
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/main/docs/swagger-java.adoc 
b/components/camel-swagger-java/src/main/docs/swagger-java.adoc
new file mode 100644
index 0000000..54f4e85
--- /dev/null
+++ b/components/camel-swagger-java/src/main/docs/swagger-java.adoc
@@ -0,0 +1,270 @@
+[[SwaggerJava-SwaggerJavaComponent]]
+Swagger Java Component
+~~~~~~~~~~~~~~~~~~~~~~
+
+*Available as of Camel 2.16*
+
+The  link:rest-dsl.html[Rest DSL] can be integrated with
+the `camel-swagger-java` module which is used for exposing the REST
+services and their APIs using http://swagger.io/[Swagger].
+
+Maven users will need to add the following dependency to
+their `pom.xml` for this component:
+
+From *Camel 2.16* onwards the swagger component is purely Java based,
+and its 
+
+[source,java]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-swagger-java</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+The camel-swagger-java module can be used as a Servlet or directly from
+the REST components (without the need for servlet)
+
+For an example see the `camel-example-swagger-cdi` in the examples
+directory of the Apache Camel distribution.
+
+[[SwaggerJava-UsingSwaggerasaServlet]]
+Using Swagger as a Servlet
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+You configure the swagger in the web.xml as shown below:
+
+[source,java]
+------------------------------------------------------------------------------------------------------------------------
+  <servlet>
+ 
+    <servlet-name>SwaggerServlet</servlet-name>
+    
<servlet-class>org.apache.camel.swagger.servlet.RestSwaggerServlet</servlet-class>
+
+    <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>
+      <param-value>rest</param-value>
+    </init-param>
+    <init-param>
+      <!-- we specify the api.path using relative notation, that means the 
actual path will be calculated at runtime as
+           http://server:port/contextpath/api-docs -->
+      <param-name>api.path</param-name>
+      <param-value>api-docs</param-value>
+    </init-param>
+
+    <init-param>
+      <param-name>api.version</param-name>
+      <param-value>1.2.3</param-value>
+    </init-param>
+    <init-param>
+      <param-name>api.title</param-name>
+      <param-value>User Services</param-value>
+    </init-param>
+    <init-param>
+      <param-name>api.description</param-name>
+      <param-value>Camel Rest Example with Swagger that provides an User REST 
service</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <!-- swagger api -->
+  <servlet-mapping>
+    <servlet-name>SwaggerServlet</servlet-name>
+    <url-pattern>/api-docs/*</url-pattern>
+  </servlet-mapping>
+------------------------------------------------------------------------------------------------------------------------
+
+[[SwaggerJava-UsingSwaggerinrest-dsl]]
+Using Swagger in rest-dsl
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+You can enable the swagger api from the rest-dsl by configuring the
+`apiContextPath` dsl as shown below:
+
+[source,java]
+------------------------------------------------------------------------------------------------------------------
+public class UserRouteBuilder extends RouteBuilder {
+    @Override
+    public void configure() throws Exception {
+        // configure we want to use servlet as the component for the rest DSL
+        // and we enable json binding mode
+        
restConfiguration().component("netty4-http").bindingMode(RestBindingMode.json)
+            // and output using pretty print
+            .dataFormatProperty("prettyPrint", "true")
+            // setup context path and port number that netty will use
+            .contextPath("/").port(8080)
+            // add swagger api-doc out of the box
+            .apiContextPath("/api-doc")
+                .apiProperty("api.title", "User 
API").apiProperty("api.version", "1.2.3")
+                // and enable CORS
+                .apiProperty("cors", "true");
+
+        // this user REST service is json only
+        rest("/user").description("User rest service")
+            .consumes("application/json").produces("application/json")
+            .get("/{id}").description("Find user by id").outType(User.class)
+                .param().name("id").type(path).description("The id of the user 
to get").dataType("int").endParam()
+                .to("bean:userService?method=getUser(${header.id})")
+            .put().description("Updates or create a user").type(User.class)
+                .param().name("body").type(body).description("The user to 
update or create").endParam()
+                .to("bean:userService?method=updateUser")
+            .get("/findAll").description("Find all 
users").outTypeList(User.class)
+                .to("bean:userService?method=listUsers");
+    }
+}
+------------------------------------------------------------------------------------------------------------------
+
+ 
+
+[[SwaggerJava-Options]]
+Options
+^^^^^^^
+
+The swagger module can be configured using the following options. To
+configure using a servlet you use the init-param as shown above. When
+configuring directly in the rest-dsl, you use the appropriate method,
+such as `enableCORS`, `host,contextPath`, dsl. The options
+with `api.xxx` is configured using `apiProperty` dsl.
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Option |Type |Description
+
+|cors |Boolean |Whether to enable CORS. Notice this only enables CORS for the 
api
+browser, and not the actual access to the REST services. Is default
+false. Instead of using this option is recommended to use the CorsFilte, see
+further below.
+
+|swagger.version |String |Swagger spec version. Is default 2.0.
+
+|host |String |To setup the hostname. If not configured camel-swagger-java will
+calculate the name as localhost based.
+
+|schemas |String |The protocol schemes to use. Multiple values can be 
separated by comma
+such as "http,https". The default value is "http". This option is
+*deprecated* from Camel 2.17 onwards due it should have been named
+schemes.
+
+|schemes |String |*Camel 2.17:* The protocol schemes to use. Multiple values 
can be
+separated by comma such as "http,https". The default value is "http".
+
+|base.path |String |*Required*: To setup the base path where the REST services 
is available.
+The path is relative (eg do not start with http/https) and
+camel-swagger-java will calculate the absolute base path at runtime,
+which will be `protocol://host:port/context-path/base.path`
+
+|api.path |String |To setup the path where the API is available (eg 
/api-docs). The path is
+relative (eg do not start with http/https) and camel-swagger-java will
+calculate the absolute base path at runtime, which will be 
`protocol://host:port/context-path/api.path`
+So using relative paths is much easier. See above for an example.
+
+|api.version |String |The version of the api. Is default 0.0.0.
+
+|api.title |String |The title of the application.
+
+|api.description |String |A short description of the application.
+
+|api.termsOfService |String |A URL to the Terms of Service of the API.
+
+|api.contact.name |String |Name of person or organization to contact
+
+|api.contact.email |String |An email to be used for API-related correspondence.
+
+|api.contact.url |String |A URL to a website for more contact information.
+
+|api.license.name |String |The license name used for the API.
+
+|api.license.url |String |A URL to the license used for the API.
+
+|apiContextIdListing |boolean |Whether to allow listing all the CamelContext 
names in the JVM that has
+REST services. When enabled then the root path of the api-doc will list
+all the contexts. When disabled then no context ids is listed and the
+root path of the api-doc lists the current CamelContext. Is default
+false.
+
+|apiContextIdPattern |String |A pattern that allows to filter which 
CamelContext names is shown in the
+context listing. The pattern is using regular expression and * as
+wildcard. Its the same pattern matching as used by
+link:intercept.html[Intercept]
+|=======================================================================
+
+[[SwaggerJava-CorsFilter]]
+CorsFilter
+^^^^^^^^^^
+
+If you use the swagger ui to view the REST api then you likely need to
+enable support for CORS. This is needed if the swagger ui is hosted and
+running on another hostname/port than the actual REST apis. When doing
+this the swagger ui needs to be allowed to access the REST resources
+across the origin (CORS). The CorsFilter adds the necessary HTTP headers
+to enable CORS.
+
+To use CORS adds the following filter
+`org.apache.camel.swagger.servlet.RestSwaggerCorsFilter` to your
+web.xml.
+
+[source,java]
+--------------------------------------------------------------------------------------
+  <!-- enable CORS filter so people can use swagger ui to browse and test the 
apis -->
+  <filter>
+    <filter-name>RestSwaggerCorsFilter</filter-name>
+    
<filter-class>org.apache.camel.swagger.rest.RestSwaggerCorsFilter</filter-class>
+  </filter>
+
+
+  <filter-mapping>
+    <filter-name>RestSwaggerCorsFilter</filter-name>
+    <url-pattern>/api-docs/*</url-pattern>
+    <url-pattern>/rest/*</url-pattern>
+  </filter-mapping>
+--------------------------------------------------------------------------------------
+
+The CorsFilter sets the following headers for all requests
+
+* Access-Control-Allow-Origin = *
+* Access-Control-Allow-Methods = GET, HEAD, POST, PUT, DELETE, TRACE,
+OPTIONS, CONNECT, PATCH
+* Access-Control-Max-Age = 3600
+* Access-Control-Allow-Headers = Origin, Accept, X-Requested-With,
+Content-Type, Access-Control-Request-Method,
+Access-Control-Request-Headers
+
+Notice this is a very simple CORS filter. You may need to use a more
+sophisticated filter to set the header values differently for a given
+client. Or block certain clients etc.
+
+[[SwaggerJava-ContextIdListingenabled]]
+ContextIdListing enabled
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+When contextIdListing is enabled then its detecting all the running
+CamelContexts in the same JVM. These contexts are listed in the root
+path, eg `/api-docs` as a simple list of names in json format. To access
+the swagger documentation then the context-path must be appended with
+the Camel context id, such as `api-docs/myCamel`. The
+option apiContextIdPattern can be used to filter the names in this list.
+
+[[SwaggerJava-JSonorYaml]]
+JSon or Yaml
+^^^^^^^^^^^^
+
+*Available as of Camel 2.17*
+
+The camel-swagger-java module supports both JSon and Yaml out of the
+box. You can specify in the request url what you want returned by using
+/swagger.json or /swagger.yaml for either one. If none is specified then
+the HTTP Accept header is used to detect if json or yaml can be
+accepted. If either both is accepted or none was set as accepted then
+json is returned as the default format.
+
+[[SwaggerJava-Examples]]
+Examples
+^^^^^^^^
+
+In the Apache Camel distribution we ship
+the `camel-example-swagger-cdi` and `camel-example-swagger-java` which
+demonstrates using this Swagger component.

http://git-wip-us.apache.org/repos/asf/camel/blob/9bad61d3/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 48c2921..90324ea 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -263,6 +263,7 @@
     * [Stream](stream.adoc)
     * [Stringtemplate](string-template.adoc)
     * [Swagger](swagger.adoc)
+    * [Swagger Java](swagger-java.adoc)
     * [Telegram](telegram.adoc)
     * [Twitter](twitter.adoc)
     * [Websocket](websocket.adoc)

Reply via email to