From 49c88d9f013f97d598a6c38f73fde2e9c9e9da5c Mon Sep 17 00:00:00 2001 From: Bruno Sakoto Date: Tue, 6 Oct 2020 22:09:58 -0400 Subject: Add swagger-ui It is available at http://{{host}}:{{port}}/swagger-ui/index.html Jira Link: https://jira.onap.org/browse/CCSDK-2895 Issue-ID: CCSDK-2895 Signed-off-by: Bruno Sakoto Change-Id: I5e8e39c90354506206bc43dfafbc11d0e62eee28 --- cps/README.md | 33 ++++++++- cps/cps-rest/pom.xml | 78 ++++++++++++++++++++++ .../org/onap/cps/rest/config/JerseyConfig.java | 17 ++++- cps/cps-rest/src/main/resources/application.yml | 2 + .../java/org/onap/cps/api/impl/CpServiceImpl.java | 3 +- cps/pom.xml | 4 ++ 6 files changed, 131 insertions(+), 6 deletions(-) diff --git a/cps/README.md b/cps/README.md index b6131a1fa..791015ef1 100644 --- a/cps/README.md +++ b/cps/README.md @@ -1,7 +1,34 @@ # Configuration & Persistency Service -This folder contains all files for +This folder contains all files for [Configuration & Persistency Service](https://wiki.onap.org/pages/viewpage.action?pageId=81406119). -The code here is related to CPS POC, then it must be kept self contained in this cps folder to prevent any impact on -current ccsdk components and to be ready to be moved in its own repo once CPS becomes a standalone project. \ No newline at end of file +The code here is related to CPS POC, then it must be kept self contained in this cps folder to prevent any impact on +current ccsdk components and to be ready to be moved in its own repo once CPS becomes a standalone project. + + +## Running Locally + +* Run a postgres container instance and create `cpsdb' database: + +``` +CREATE USER cps WITH PASSWORD 'cps'; +CREATE DATABASE cpsdb OWNER cps; +``` + +* Build (from cps root folder) + +```bash +mvn clean package +``` + +* Run (from cps root folder) + +```bash +java -DDB_HOST=localhost -DDB_USERNAME=cps -DDB_PASSWORD=cps -jar cps-rest/target/cps-rest-0.0.1-SNAPSHOT.jar +``` + +* Browse + * [Swagger UI](http://localhost:8080/swagger-ui/index.html) + * OpenAPI Specification in [JSON](http://localhost:8080/api/cps/openapi.json) + or [YAML](http://localhost:8080/api/cps/openapi.yaml) format diff --git a/cps/cps-rest/pom.xml b/cps/cps-rest/pom.xml index 2b4cbb894..274e57f52 100644 --- a/cps/cps-rest/pom.xml +++ b/cps/cps-rest/pom.xml @@ -28,6 +28,11 @@ jersey-media-multipart + + org.springframework + spring-webmvc + + org.springframework.boot spring-boot-starter-jersey @@ -83,6 +88,79 @@ + + + org.apache.maven.plugins + maven-dependency-plugin + ${maven-dependency-plugin.version} + + + prepare-package + + unpack + + + + + org.webjars + swagger-ui + ${swagger-ui.version} + + + ${project.build.directory}/swagger-ui-${swagger-ui.version} + + + + + + + org.apache.maven.plugins + maven-resources-plugin + ${maven-resources-plugin.version} + + + copy-resources + prepare-package + + copy-resources + + + ${project.build.outputDirectory}/static/swagger-ui + + + ${project.build.directory}/swagger-ui-${swagger-ui.version}/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/ + + **/*.gz + + + + + + + + + + com.google.code.maven-replacer-plugin + replacer + ${maven-replacer-plugin.version} + + + prepare-package + + replace + + + + + ${project.build.outputDirectory}/static/swagger-ui/index.html + + + https://petstore.swagger.io/v2/swagger.json + /api/cps/openapi.json + + + + diff --git a/cps/cps-rest/src/main/java/org/onap/cps/rest/config/JerseyConfig.java b/cps/cps-rest/src/main/java/org/onap/cps/rest/config/JerseyConfig.java index 290ad5d9e..ac781d337 100644 --- a/cps/cps-rest/src/main/java/org/onap/cps/rest/config/JerseyConfig.java +++ b/cps/cps-rest/src/main/java/org/onap/cps/rest/config/JerseyConfig.java @@ -28,6 +28,9 @@ import javax.annotation.PostConstruct; import javax.ws.rs.ApplicationPath; import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.server.ResourceConfig; +import org.glassfish.jersey.servlet.ServletProperties; +import org.onap.cps.rest.controller.ModelController; +import org.onap.cps.rest.controller.RestController; import org.springframework.context.annotation.Configuration; @Configuration @@ -43,8 +46,12 @@ public class JerseyConfig extends ResourceConfig { register(OpenApiResource.class); register(AcceptHeaderOpenApiResource.class); - packages("org.onap.cps.rest.controller"); + // Register controllers + register(ModelController.class); + register(RestController.class); + configureSwagger(); + configureSwaggerUI(); } private void configureSwagger() { @@ -54,4 +61,12 @@ public class JerseyConfig extends ResourceConfig { throw new RuntimeException(e.getMessage(), e); } } + + private void configureSwaggerUI() { + // Enable Jersey filter forwarding to next filter for 404 responses. + // This configuration lets Jersey servlet container forwarding static swagger ui requests to spring mvc filter + // to be handle by spring mvc dispatcher servlet. + property(ServletProperties.FILTER_FORWARD_ON_404, true); + } + } diff --git a/cps/cps-rest/src/main/resources/application.yml b/cps/cps-rest/src/main/resources/application.yml index 5cfa97415..c9154ba1f 100644 --- a/cps/cps-rest/src/main/resources/application.yml +++ b/cps/cps-rest/src/main/resources/application.yml @@ -19,6 +19,8 @@ spring: password: ${DB_PASSWORD} driverClassName: org.postgresql.Driver initialization-mode: always + jersey: + type: filter logging: level: diff --git a/cps/cps-service/src/main/java/org/onap/cps/api/impl/CpServiceImpl.java b/cps/cps-service/src/main/java/org/onap/cps/api/impl/CpServiceImpl.java index 4113fbc64..f9d066e46 100644 --- a/cps/cps-service/src/main/java/org/onap/cps/api/impl/CpServiceImpl.java +++ b/cps/cps-service/src/main/java/org/onap/cps/api/impl/CpServiceImpl.java @@ -77,8 +77,7 @@ public class CpServiceImpl implements CpService { @Override public final void storeSchemaContext(final SchemaContext schemaContext) { for (final Module module : schemaContext.getModules()) { - modelPersistencyService.storeModule(module.getName(), module.toString(), - module.getRevision().toString()); + modelPersistencyService.storeModule(module.getName(), module.toString(), module.getRevision().toString()); } } } diff --git a/cps/pom.xml b/cps/pom.xml index d81ee9e08..c70af6be8 100644 --- a/cps/pom.xml +++ b/cps/pom.xml @@ -26,6 +26,10 @@ 2.1.4 3.0.6 2.0-M2-groovy-3.0 + 3.1.2 + 3.2.0 + 1.5.3 + 3.35.0 -- cgit 1.2.3-korg