Adding swagger codegen
[cps.git] / cps / cps-rest / src / main / java / org / onap / cps / rest / config / JerseyConfig.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  *  Copyright (C) 2020 Nordix Foundation. All rights reserved.\r
4  * ================================================================================\r
5  * Licensed under the Apache License, Version 2.0 (the "License");\r
6  * you may not use this file except in compliance with the License.\r
7  * You may obtain a copy of the License at\r
8  *\r
9  *      http://www.apache.org/licenses/LICENSE-2.0\r
10  *\r
11  * Unless required by applicable law or agreed to in writing, software\r
12  * distributed under the License is distributed on an "AS IS" BASIS,\r
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14  * See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  *\r
17  * SPDX-License-Identifier: Apache-2.0\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 package org.onap.cps.rest.config;\r
22 \r
23 import io.swagger.v3.jaxrs2.integration.JaxrsOpenApiContextBuilder;\r
24 import io.swagger.v3.jaxrs2.integration.resources.AcceptHeaderOpenApiResource;\r
25 import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;\r
26 import io.swagger.v3.oas.integration.OpenApiConfigurationException;\r
27 import javax.annotation.PostConstruct;\r
28 import javax.ws.rs.ApplicationPath;\r
29 import org.glassfish.jersey.media.multipart.MultiPartFeature;\r
30 import org.glassfish.jersey.server.ResourceConfig;\r
31 import org.glassfish.jersey.servlet.ServletProperties;\r
32 import org.onap.cps.rest.controller.ModelController;\r
33 import org.onap.cps.rest.controller.RestController;\r
34 import org.springframework.context.annotation.Configuration;\r
35 \r
36 @Configuration\r
37 @ApplicationPath("api")\r
38 public class JerseyConfig extends ResourceConfig {\r
39 \r
40     /**\r
41      * This method is used to setup Jersey related configuration.\r
42      */\r
43     @PostConstruct\r
44     public void init() {\r
45         register(MultiPartFeature.class);\r
46         register(OpenApiResource.class);\r
47         register(AcceptHeaderOpenApiResource.class);\r
48 \r
49         // Register controllers\r
50         register(ModelController.class);\r
51         register(RestController.class);\r
52 \r
53         configureSwagger();\r
54         configureSwaggerUI();\r
55     }\r
56 \r
57     private void configureSwagger() {\r
58         try {\r
59             new JaxrsOpenApiContextBuilder<>().buildContext(true).read();\r
60         } catch (final OpenApiConfigurationException e) {\r
61             throw new RuntimeException(e.getMessage(), e);\r
62         }\r
63     }\r
64 \r
65     private void configureSwaggerUI() {\r
66         // Enable Jersey filter forwarding to next filter for 404 responses.\r
67         // This configuration lets Jersey servlet container forwarding static swagger ui requests to spring mvc filter\r
68         // to be handle by spring mvc dispatcher servlet.\r
69         property(ServletProperties.FILTER_FORWARD_ON_404, true);\r
70     }\r
71 \r
72 }\r