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