cfcccf338cb5b6831dfa87630222be9700124da1
[ccsdk/cds.git] /
1 /*\r
2  *  Copyright © 2017-2018 AT&T Intellectual Property.\r
3  *\r
4  *  Licensed under the Apache License, Version 2.0 (the "License");\r
5  *  you may not use this file except in compliance with the License.\r
6  *  You may obtain a copy of the License at\r
7  *\r
8  *      http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  *  Unless required by applicable law or agreed to in writing, software\r
11  *  distributed under the License is distributed on an "AS IS" BASIS,\r
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  *  See the License for the specific language governing permissions and\r
14  *  limitations under the License.\r
15  */\r
16 \r
17 package org.onap.ccsdk.apps.controllerblueprints;\r
18 \r
19 import com.google.common.collect.Lists;\r
20 import org.jetbrains.annotations.NotNull;\r
21 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants;\r
22 import org.springframework.beans.factory.annotation.Value;\r
23 import org.springframework.context.annotation.Bean;\r
24 import org.springframework.context.annotation.Configuration;\r
25 import org.springframework.http.HttpStatus;\r
26 import org.springframework.web.bind.annotation.RequestMethod;\r
27 import springfox.documentation.builders.PathSelectors;\r
28 import springfox.documentation.builders.RequestHandlerSelectors;\r
29 import springfox.documentation.builders.ResponseMessageBuilder;\r
30 import springfox.documentation.schema.ModelRef;\r
31 import springfox.documentation.service.ApiInfo;\r
32 import springfox.documentation.service.Contact;\r
33 import springfox.documentation.service.Header;\r
34 import springfox.documentation.service.ResponseMessage;\r
35 import springfox.documentation.spi.DocumentationType;\r
36 import springfox.documentation.spring.web.plugins.Docket;\r
37 import springfox.documentation.swagger2.annotations.EnableSwagger2;\r
38 \r
39 import java.util.Collections;\r
40 import java.util.HashMap;\r
41 import java.util.List;\r
42 import java.util.Map;\r
43 \r
44 /**\r
45  * SwaggerConfig\r
46  *\r
47  * @author Brinda Santh 8/13/2018\r
48  */\r
49 @Configuration\r
50 @EnableSwagger2\r
51 @SuppressWarnings("unused")\r
52 public class SwaggerConfig {\r
53     @Value("${appVersion}")\r
54     private String appVersion;\r
55     @Value("${swagger.contact.name}")\r
56     private String contactName;\r
57     @Value("${swagger.contact.url}")\r
58     private String contactUrl;\r
59     @Value("${swagger.contact.email}")\r
60     private String contactEmail;\r
61 \r
62     @Bean\r
63     @SuppressWarnings("unused")\r
64     public Docket api() {\r
65         return new Docket(DocumentationType.SWAGGER_2)\r
66                 .globalResponseMessage(RequestMethod.GET, getDefaultGetResponseMessages())\r
67                 .globalResponseMessage(RequestMethod.POST, getDefaultPostResponseMessages())\r
68                 .globalResponseMessage(RequestMethod.PUT, getDefaultPutResponseMessages())\r
69                 .globalResponseMessage(RequestMethod.DELETE, getDefaultDeleteResponseMessages())\r
70                 .select()\r
71                 .apis(RequestHandlerSelectors.any())\r
72                 .paths(PathSelectors.any())\r
73                 .build()\r
74                 .apiInfo(apiInfo());\r
75     }\r
76 \r
77     private ApiInfo apiInfo() {\r
78         return new ApiInfo(\r
79                 "Controller Blueprints API",\r
80                 "Controller blueprints API for VNF Self Service.",\r
81                 appVersion,\r
82                 "Terms of service",\r
83                 new Contact(contactName, contactUrl, contactEmail),\r
84                 "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", Collections.emptyList());\r
85     }\r
86 \r
87     private List<ResponseMessage> getDefaultGetResponseMessages() {\r
88         List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();\r
89         Map<String, Header> defaultHeaders = getDefaultResponseHeaders();\r
90         defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));\r
91         defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));\r
92         defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));\r
93         defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));\r
94         defaultResponseMessages.add(getResponseBuilder(HttpStatus.NOT_FOUND, defaultHeaders));\r
95         defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));\r
96         return defaultResponseMessages;\r
97     }\r
98 \r
99     private List<ResponseMessage> getDefaultPostResponseMessages() {\r
100         List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();\r
101         Map<String, Header> defaultHeaders = getDefaultResponseHeaders();\r
102         defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));\r
103         defaultResponseMessages.add(getResponseBuilder(HttpStatus.CREATED, defaultHeaders));\r
104         defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));\r
105         defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));\r
106         defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));\r
107         defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));\r
108         return defaultResponseMessages;\r
109     }\r
110 \r
111     private List<ResponseMessage> getDefaultPutResponseMessages() {\r
112         List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();\r
113         Map<String, Header> defaultHeaders = getDefaultResponseHeaders();\r
114         defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));\r
115         defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));\r
116         defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));\r
117         defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));\r
118         defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));\r
119         return defaultResponseMessages;\r
120     }\r
121 \r
122     private List<ResponseMessage> getDefaultDeleteResponseMessages() {\r
123         List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();\r
124         Map<String, Header> defaultHeaders = getDefaultResponseHeaders();\r
125         defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));\r
126         defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));\r
127         defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));\r
128         defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));\r
129         defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));\r
130         return defaultResponseMessages;\r
131     }\r
132 \r
133     private ResponseMessage getResponseBuilder(@NotNull HttpStatus httpStatus, Map<String, Header> defaultHeaders) {\r
134         ResponseMessageBuilder responseMessageBuilder = new ResponseMessageBuilder();\r
135         responseMessageBuilder.code(httpStatus.value())\r
136                 .message(httpStatus.getReasonPhrase())\r
137                 .headersWithDescription(defaultHeaders)\r
138                 .build();\r
139         return responseMessageBuilder.build();\r
140     }\r
141 \r
142     private Map<String, Header> getDefaultResponseHeaders() {\r
143         Map<String, Header> defaultHeaders = new HashMap<>();\r
144         defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_TRANSACTION_ID,\r
145                 new Header(BluePrintConstants.RESPONSE_HEADER_TRANSACTION_ID, "Transaction Id", new ModelRef("string")));\r
146         defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_LATEST_VERSION,\r
147                 new Header(BluePrintConstants.RESPONSE_HEADER_LATEST_VERSION, "API Latest Version", new ModelRef("string")));\r
148         defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_MINOR_VERSION,\r
149                 new Header(BluePrintConstants.RESPONSE_HEADER_MINOR_VERSION, "API Minor Version", new ModelRef("string")));\r
150         defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_PATCH_VERSION,\r
151                 new Header(BluePrintConstants.RESPONSE_HEADER_PATCH_VERSION, "API Patch Version", new ModelRef("string")));\r
152         return defaultHeaders;\r
153     }\r
154 }\r