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.cds.controllerblueprints;
20 import com.google.common.collect.Lists;
21 import org.jetbrains.annotations.NotNull;
22 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants;
23 import org.springframework.beans.factory.annotation.Value;
24 import org.springframework.context.annotation.Bean;
25 import org.springframework.http.HttpStatus;
26 import org.springframework.web.bind.annotation.RequestMethod;
27 import springfox.documentation.builders.PathSelectors;
28 import springfox.documentation.builders.RequestHandlerSelectors;
29 import springfox.documentation.builders.ResponseMessageBuilder;
30 import springfox.documentation.schema.ModelRef;
31 import springfox.documentation.service.ApiInfo;
32 import springfox.documentation.service.Contact;
33 import springfox.documentation.service.Header;
34 import springfox.documentation.service.ResponseMessage;
35 import springfox.documentation.spi.DocumentationType;
36 import springfox.documentation.spring.web.plugins.Docket;
38 import java.util.Collections;
39 import java.util.HashMap;
40 import java.util.List;
46 * @author Brinda Santh 8/13/2018
51 @SuppressWarnings("unused")
52 public class SwaggerConfig {
53 @Value("${appVersion}")
54 private String appVersion;
55 @Value("${swagger.contact.name}")
56 private String contactName;
57 @Value("${swagger.contact.url}")
58 private String contactUrl;
59 @Value("${swagger.contact.email}")
60 private String contactEmail;
61 private String stringModelRef = "string";
64 @SuppressWarnings("unused")
66 return new Docket(DocumentationType.SWAGGER_2)
67 .globalResponseMessage(RequestMethod.GET, getDefaultGetResponseMessages())
68 .globalResponseMessage(RequestMethod.POST, getDefaultPostResponseMessages())
69 .globalResponseMessage(RequestMethod.PUT, getDefaultPutResponseMessages())
70 .globalResponseMessage(RequestMethod.DELETE, getDefaultDeleteResponseMessages())
72 .apis(RequestHandlerSelectors.any())
73 .paths(PathSelectors.any())
78 private ApiInfo apiInfo() {
80 "Controller Blueprints API",
81 "Controller blueprints API for VNF Self Service.",
84 new Contact(contactName, contactUrl, contactEmail),
85 "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", Collections.emptyList());
88 private List<ResponseMessage> getDefaultGetResponseMessages() {
89 List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();
90 Map<String, Header> defaultHeaders = getDefaultResponseHeaders();
91 defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));
92 defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));
93 defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));
94 defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));
95 defaultResponseMessages.add(getResponseBuilder(HttpStatus.NOT_FOUND, defaultHeaders));
96 defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));
97 return defaultResponseMessages;
100 private List<ResponseMessage> getDefaultPostResponseMessages() {
101 List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();
102 Map<String, Header> defaultHeaders = getDefaultResponseHeaders();
103 defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));
104 defaultResponseMessages.add(getResponseBuilder(HttpStatus.CREATED, defaultHeaders));
105 defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));
106 defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));
107 defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));
108 defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));
109 return defaultResponseMessages;
112 private List<ResponseMessage> getDefaultPutResponseMessages() {
113 List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();
114 Map<String, Header> defaultHeaders = getDefaultResponseHeaders();
115 defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));
116 defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));
117 defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));
118 defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));
119 defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));
120 return defaultResponseMessages;
123 private List<ResponseMessage> getDefaultDeleteResponseMessages() {
124 List<ResponseMessage> defaultResponseMessages = Lists.newArrayList();
125 Map<String, Header> defaultHeaders = getDefaultResponseHeaders();
126 defaultResponseMessages.add(getResponseBuilder(HttpStatus.OK, defaultHeaders));
127 defaultResponseMessages.add(getResponseBuilder(HttpStatus.BAD_REQUEST, defaultHeaders));
128 defaultResponseMessages.add(getResponseBuilder(HttpStatus.UNAUTHORIZED, defaultHeaders));
129 defaultResponseMessages.add(getResponseBuilder(HttpStatus.FORBIDDEN, defaultHeaders));
130 defaultResponseMessages.add(getResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR, defaultHeaders));
131 return defaultResponseMessages;
134 private ResponseMessage getResponseBuilder(@NotNull HttpStatus httpStatus, Map<String, Header> defaultHeaders) {
135 ResponseMessageBuilder responseMessageBuilder = new ResponseMessageBuilder();
136 responseMessageBuilder.code(httpStatus.value())
137 .message(httpStatus.getReasonPhrase())
138 .headersWithDescription(defaultHeaders)
140 return responseMessageBuilder.build();
143 private Map<String, Header> getDefaultResponseHeaders() {
144 Map<String, Header> defaultHeaders = new HashMap<>();
145 defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_TRANSACTION_ID,
146 new Header(BluePrintConstants.RESPONSE_HEADER_TRANSACTION_ID, "Transaction Id", new ModelRef(stringModelRef)));
147 defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_LATEST_VERSION,
148 new Header(BluePrintConstants.RESPONSE_HEADER_LATEST_VERSION, "API Latest Version", new ModelRef(stringModelRef)));
149 defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_MINOR_VERSION,
150 new Header(BluePrintConstants.RESPONSE_HEADER_MINOR_VERSION, "API Minor Version", new ModelRef(stringModelRef)));
151 defaultHeaders.put(BluePrintConstants.RESPONSE_HEADER_PATCH_VERSION,
152 new Header(BluePrintConstants.RESPONSE_HEADER_PATCH_VERSION, "API Patch Version", new ModelRef(stringModelRef)));
153 return defaultHeaders;