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