Migrate ccsdk/apps to ccsdk/cds
[ccsdk/cds.git] / ms / controllerblueprints / application / src / main / java / org / onap / ccsdk / cds / controllerblueprints / SwaggerConfig.java
1 /*
2  *  Copyright © 2017-2018 AT&T Intellectual Property.
3  *  Modifications Copyright © 2018 IBM.
4  *
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18 package org.onap.ccsdk.cds.controllerblueprints;
19
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;
37
38 import java.util.Collections;
39 import java.util.HashMap;
40 import java.util.List;
41 import java.util.Map;
42
43 /**
44  * SwaggerConfig
45  *
46  * @author Brinda Santh 8/13/2018
47  */
48 @Deprecated
49 //@Configuration
50 //@EnableSwagger2
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";
62
63     @Bean
64     @SuppressWarnings("unused")
65     public Docket api() {
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())
71                 .select()
72                 .apis(RequestHandlerSelectors.any())
73                 .paths(PathSelectors.any())
74                 .build()
75                 .apiInfo(apiInfo());
76     }
77
78     private ApiInfo apiInfo() {
79         return new ApiInfo(
80                 "Controller Blueprints API",
81                 "Controller blueprints API for VNF Self Service.",
82                 appVersion,
83                 "Terms of service",
84                 new Contact(contactName, contactUrl, contactEmail),
85                 "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", Collections.emptyList());
86     }
87
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;
98     }
99
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;
110     }
111
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;
121     }
122
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;
132     }
133
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)
139                 .build();
140         return responseMessageBuilder.build();
141     }
142
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;
154     }
155 }