You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by jb...@apache.org on 2016/01/18 18:03:33 UTC
cxf-fediz git commit: [FEDIZ-145] Adding Swagger UI for REST API
Repository: cxf-fediz
Updated Branches:
refs/heads/master 33c86fc33 -> 6b400f10a
[FEDIZ-145] Adding Swagger UI for REST API
Project: http://git-wip-us.apache.org/repos/asf/cxf-fediz/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf-fediz/commit/6b400f10
Tree: http://git-wip-us.apache.org/repos/asf/cxf-fediz/tree/6b400f10
Diff: http://git-wip-us.apache.org/repos/asf/cxf-fediz/diff/6b400f10
Branch: refs/heads/master
Commit: 6b400f10aaafdd0573bc9028c1a482f03e0ddfe2
Parents: 33c86fc
Author: Jan Bernhardt <jb...@talend.com>
Authored: Mon Jan 18 17:55:48 2016 +0100
Committer: Jan Bernhardt <jb...@talend.com>
Committed: Mon Jan 18 18:02:47 2016 +0100
----------------------------------------------------------------------
services/idp/pom.xml | 82 +++++++++-
.../idp/src/main/webapp/WEB-INF/idp-servlet.xml | 3 +
.../main/webapp/resources/swagger/index.html | 156 +++++++++++++++++++
3 files changed, 235 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/6b400f10/services/idp/pom.xml
----------------------------------------------------------------------
diff --git a/services/idp/pom.xml b/services/idp/pom.xml
index baa33f1..c1fa70f 100644
--- a/services/idp/pom.xml
+++ b/services/idp/pom.xml
@@ -28,6 +28,11 @@
<artifactId>fediz-idp</artifactId>
<name>Apache Fediz IDP</name>
<packaging>war</packaging>
+
+ <properties>
+ <swagger-ui.version>2.1.0</swagger-ui.version>
+ </properties>
+
<dependencyManagement>
<dependencies>
<dependency>
@@ -242,12 +247,6 @@
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.6</version>
</dependency>
- <dependency>
- <groupId>org.webjars</groupId>
- <artifactId>swagger-ui</artifactId>
- <version>2.1.0</version>
- <scope>provided</scope>
- </dependency>
</dependencies>
<build>
<resources>
@@ -337,6 +336,77 @@
</configuration>
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.webjars</groupId>
+ <artifactId>swagger-ui</artifactId>
+ <version>${swagger-ui.version}</version>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/swagger-ui</outputDirectory>
+ <excludes>**/*.gz</excludes>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-swagger-resources-in-place</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}/resources/swagger</outputDirectory>
+ <resources>
+ <resource>
+ <directory>${project.build.directory}/swagger-ui/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}</directory>
+ <excludes>
+ <exclude>index.html</exclude>
+ <exclude>swagger-ui.min.js</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <inherited>true</inherited>
+ <executions>
+ <execution>
+ <id>addMatrixParamSupport</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <replace
+ file="${project.build.directory}/swagger-ui/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/swagger-ui.js"
+ token="return url + requestUrl + querystring;"
+ value="
var matrixstring = '';
 for (var i = 0; i < this.parameters.length; i++) {
 var param = this.parameters[i];
 
 if (param.in === 'matrix') {
 matrixstring += ';' + this.encodeQueryParam(param.name) + '=' + this.encodeQueryParam(args[param.name]);
 }
 }
 
 var url = this.scheme + '://' + this.host;
 
 if (this.basePath !== '/') {
 url += this.basePath;
 }
 return url + requestUrl + matrixstring + querystring;" />
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/6b400f10/services/idp/src/main/webapp/WEB-INF/idp-servlet.xml
----------------------------------------------------------------------
diff --git a/services/idp/src/main/webapp/WEB-INF/idp-servlet.xml b/services/idp/src/main/webapp/WEB-INF/idp-servlet.xml
index 003969a..638a9c8 100644
--- a/services/idp/src/main/webapp/WEB-INF/idp-servlet.xml
+++ b/services/idp/src/main/webapp/WEB-INF/idp-servlet.xml
@@ -37,6 +37,9 @@
<context:component-scan base-package="org.apache.cxf.fediz.service.idp.beans" />
<mvc:resources mapping="/images/**" location="/resources/images/" />
+
+ <mvc:resources mapping="/swagger/**" location="/resources/swagger/" />
+
<mvc:view-controller path="/" view-name="index" />
<mvc:view-controller path="/federation/up/login" view-name="signinform" />
http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/6b400f10/services/idp/src/main/webapp/resources/swagger/index.html
----------------------------------------------------------------------
diff --git a/services/idp/src/main/webapp/resources/swagger/index.html b/services/idp/src/main/webapp/resources/swagger/index.html
new file mode 100644
index 0000000..223cf1e
--- /dev/null
+++ b/services/idp/src/main/webapp/resources/swagger/index.html
@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<!--
+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.
+-->
+<html>
+<head>
+ <meta charset="UTF-8">
+ <!-- <ApacheFediz -->
+ <!--<title>Swagger UI</title>-->
+ <title>Swagger UI - Apache Fediz ${project.version}</title>
+ <!-- </ApacheFediz -->
+ <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32" />
+ <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16" />
+ <link href='css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
+ <link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
+ <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
+ <link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
+ <link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
+ <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
+ <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
+ <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
+ <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
+ <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>
+ <script src='lib/underscore-min.js' type='text/javascript'></script>
+ <script src='lib/backbone-min.js' type='text/javascript'></script>
+ <script src='swagger-ui.js' type='text/javascript'></script>
+ <script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
+ <script src='lib/jsoneditor.min.js' type='text/javascript'></script>
+ <script src='lib/marked.js' type='text/javascript'></script>
+ <script src='lib/swagger-oauth.js' type='text/javascript'></script>
+
+ <!-- Some basic translations -->
+ <!-- <script src='lang/translator.js' type='text/javascript'></script> -->
+ <!-- <script src='lang/ru.js' type='text/javascript'></script> -->
+ <!-- <script src='lang/en.js' type='text/javascript'></script> -->
+
+ <script type="text/javascript">
+ $(function () {
+ // <ApacheFediz>
+ /*var url = window.location.search.match(/url=([^&]+)/);
+ if (url && url.length > 1) {
+ url = decodeURIComponent(url[1]);
+ } else {
+ url = "http://petstore.swagger.io/v2/swagger.json";
+ }*/
+ var url = window.location.href.substring(0, window.location.href.lastIndexOf('/')) + "/../services/rs/swagger.json";
+ // </ApacheFediz>
+ // Pre load translate...
+ if(window.SwaggerTranslator) {
+ window.SwaggerTranslator.translate();
+ }
+ window.swaggerUi = new SwaggerUi({
+ url: url,
+ dom_id: "swagger-ui-container",
+ supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
+ onComplete: function(swaggerApi, swaggerUi){
+ if(typeof initOAuth == "function") {
+ initOAuth({
+ clientId: "your-client-id",
+ clientSecret: "your-client-secret-if-required",
+ realm: "your-realms",
+ appName: "your-app-name",
+ scopeSeparator: ",",
+ additionalQueryStringParams: {}
+ });
+ }
+ if(window.SwaggerTranslator) {
+ window.SwaggerTranslator.translate();
+ }
+ $('pre code').each(function(i, e) {
+ hljs.highlightBlock(e)
+ });
+ addApiKeyAuthorization();
+ },
+ onFailure: function(data) {
+ log("Unable to Load SwaggerUI");
+ },
+ docExpansion: "none",
+ jsonEditor: false,
+ apisSorter: "alpha",
+ defaultModelRendering: 'schema',
+ showRequestHeaders: false
+ });
+ function addApiKeyAuthorization() {
+ // <ApacheFediz>
+ /*var key = encodeURIComponent($('#input_apiKey')[0].value);
+ if (key && key.trim() != "") {
+ var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("api_key", key, "query");
+ window.swaggerUi.api.clientAuthorizations.add("api_key", apiKeyAuth);
+ log("added key " + key);
+ }*/
+ var username = $('#input_username').val().trim();
+ var password = $('#input_password').val().trim();
+ if (username !== "" && password !== "") {
+ window.swaggerUi.api.clientAuthorizations.add(
+ "basicAuth", new SwaggerClient.PasswordAuthorization(username, password));
+ }
+ // </ApacheFediz>
+ }
+ // <ApacheFediz>
+ //$('#input_apiKey').change(addApiKeyAuthorization);
+ $("#input_username").blur(function () {
+ addApiKeyAuthorization();
+ });
+ $("#input_password").blur(function () {
+ addApiKeyAuthorization();
+ });
+ // </ApacheFediz>
+ // if you have an apiKey you would like to pre-populate on the page for demonstration purposes...
+ /*
+ var apiKey = "myApiKeyXXXX123456789";
+ $('#input_apiKey').val(apiKey);
+ */
+ window.swaggerUi.load();
+ function log() {
+ if ('console' in window) {
+ console.log.apply(console, arguments);
+ }
+ }
+ });
+ </script>
+</head>
+
+<body class="swagger-section">
+<div id='header'>
+ <div class="swagger-ui-wrap">
+ <a id="logo" href="http://swagger.io">swagger</a>
+ <form id='api_selector'>
+ <!-- <ApacheFediz -->
+ <!--<div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>-->
+ <!--<div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>-->
+ <!--<div class='input'><a id="explore" href="#" data-sw-translate>Explore</a></div>-->
+ <div class='input'><input placeholder="username" id="input_username" name="username" type="text"/></div>
+ <div class='input'><input placeholder="password" id="input_password" name="password" type="password"/></div>
+ <!-- </ApacheFediz -->
+ </form>
+ </div>
+</div>
+
+<div id="message-bar" class="swagger-ui-wrap" data-sw-translate> </div>
+<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
+</body>
+</html>
\ No newline at end of file