2 * Copyright © 2017-2018 AT&T Intellectual Property.
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
17 package org.onap.ccsdk.apps.controllerblueprints;
\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
39 import java.util.Collections;
\r
40 import java.util.HashMap;
\r
41 import java.util.List;
\r
42 import java.util.Map;
\r
47 * @author Brinda Santh 8/13/2018
\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
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
71 .apis(RequestHandlerSelectors.any())
\r
72 .paths(PathSelectors.any())
\r
74 .apiInfo(apiInfo());
\r
77 private ApiInfo apiInfo() {
\r
79 "Controller Blueprints API",
\r
80 "Controller blueprints API for VNF Self Service.",
\r
83 new Contact(contactName, contactUrl, contactEmail),
\r
84 "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", Collections.emptyList());
\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
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
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
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
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
139 return responseMessageBuilder.build();
\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