From ac7fe91593aa0ffb7edb2ac670fcb90924f3c74d Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 11 Aug 2014 11:05:50 +0200 Subject: [PATCH] swagger ui --- bower.json | 3 +- gulpfile.js | 10 ++- src/main/app/api/index.html | 88 +++++++++++++++++++ .../com/commafeed/CommaFeedApplication.java | 20 ++++- 4 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 src/main/app/api/index.html diff --git a/bower.json b/bower.json index 3ef639d3..ec1f38fb 100644 --- a/bower.json +++ b/bower.json @@ -27,6 +27,7 @@ "momentjs": "2.6.0", "device.js": "matthewhudson/device.js#2ae5c775e35ccc837589e5af34e292c54936778c", "readabilicons": "arc90/readability-readabilicons#34c55561c5b8ec6e90714b50237c06b13cb9d59c", - "zocial": "samcollins/css-social-buttons#1f59ecacde475e563fb6771667597493ec4eecb6" + "zocial": "samcollins/css-social-buttons#1f59ecacde475e563fb6771667597493ec4eecb6", + "swagger-ui": "2.0.21" } } diff --git a/gulpfile.js b/gulpfile.js index 8d6b0610..df7edba9 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -51,6 +51,12 @@ gulp.task('select2', ['bower'], function() { return gulp.src([gif, png]).pipe(gulp.dest(BUILD_DIR + 'css')); }); +gulp.task('swagger-ui', ['bower'], function() { + var index_html = SRC_DIR + 'api/index.html'; + var lib = SRC_DIR + 'lib/swagger-ui/dist/**/*'; + return gulp.src([lib, index_html]).pipe(gulp.dest(BUILD_DIR + 'api')); +}); + gulp.task('template-cache', function() { var options = { module : 'commafeed.services', @@ -59,7 +65,7 @@ gulp.task('template-cache', function() { return gulp.src(SRC_DIR + 'templates/**/*.html').pipe(templateCache(options)).pipe(gulp.dest(TEMP_DIR + 'js')); }); -gulp.task('build-dev', ['images', 'i18n', 'favicons', 'sass', 'fonts', 'select2', 'template-cache', 'bower'], function() { +gulp.task('build-dev', ['images', 'i18n', 'favicons', 'sass', 'fonts', 'select2', 'swagger-ui', 'template-cache', 'bower'], function() { var assets = useref.assets({ searchPath : [SRC_DIR, TEMP_DIR] }); @@ -69,7 +75,7 @@ gulp.task('build-dev', ['images', 'i18n', 'favicons', 'sass', 'fonts', 'select2' revReplace()).pipe(gulp.dest(BUILD_DIR)); }); -gulp.task('build', ['images', 'i18n', 'favicons', 'sass', 'fonts', 'select2', 'template-cache', 'bower'], function() { +gulp.task('build', ['images', 'i18n', 'favicons', 'sass', 'fonts', 'select2', 'swagger-ui', 'template-cache', 'bower'], function() { var assets = useref.assets({ searchPath : [SRC_DIR, TEMP_DIR] }); diff --git a/src/main/app/api/index.html b/src/main/app/api/index.html new file mode 100644 index 00000000..05a25131 --- /dev/null +++ b/src/main/app/api/index.html @@ -0,0 +1,88 @@ + + + + Swagger UI + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+
+ + diff --git a/src/main/java/com/commafeed/CommaFeedApplication.java b/src/main/java/com/commafeed/CommaFeedApplication.java index 35beaa05..1aaba840 100644 --- a/src/main/java/com/commafeed/CommaFeedApplication.java +++ b/src/main/java/com/commafeed/CommaFeedApplication.java @@ -79,6 +79,15 @@ import com.commafeed.frontend.resource.UserREST; import com.commafeed.frontend.servlet.CustomCssServlet; import com.commafeed.frontend.servlet.LogoutServlet; import com.commafeed.frontend.servlet.NextUnreadServlet; +import com.wordnik.swagger.config.ConfigFactory; +import com.wordnik.swagger.config.ScannerFactory; +import com.wordnik.swagger.config.SwaggerConfig; +import com.wordnik.swagger.jaxrs.config.DefaultJaxrsScanner; +import com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider; +import com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON; +import com.wordnik.swagger.jaxrs.listing.ResourceListingProvider; +import com.wordnik.swagger.jaxrs.reader.DefaultJaxrsApiReader; +import com.wordnik.swagger.reader.ClassReaders; @Slf4j public class CommaFeedApplication extends Application { @@ -212,7 +221,16 @@ public class CommaFeedApplication extends Application { environment.lifecycle().manage(feedUpdater); environment.lifecycle().manage(schedulingService); - // TODO swagger ui + // Swagger + environment.jersey().register(new ApiListingResourceJSON()); + environment.jersey().register(new ApiDeclarationProvider()); + environment.jersey().register(new ResourceListingProvider()); + ScannerFactory.setScanner(new DefaultJaxrsScanner()); + ClassReaders.setReader(new DefaultJaxrsApiReader()); + SwaggerConfig swaggerConfig = ConfigFactory.config(); + swaggerConfig.setApiVersion("1"); + swaggerConfig.setBasePath("/rest"); + // TODO password recovery }