c28642cfa838253677133bfdd25bfe29f79ab73c
[ccsdk/apps.git] / ms / sliboot / src / main / templates / api.mustache
1 /**
2 * NOTE: This class is auto generated by the swagger code generator program ({{{generatorVersion}}}).
3 * https://github.com/swagger-api/swagger-codegen
4 * Do not edit the class manually.
5 */
6 package {{package}};
7
8 {{#imports}}import {{import}};
9 {{/imports}}
10 {{#jdk8-no-delegate}}
11     import com.fasterxml.jackson.databind.ObjectMapper;
12 {{/jdk8-no-delegate}}
13 import io.swagger.annotations.*;
14 {{#jdk8-no-delegate}}
15     import org.slf4j.Logger;
16     import org.slf4j.LoggerFactory;
17     import org.springframework.http.HttpStatus;
18 {{/jdk8-no-delegate}}
19 import org.springframework.http.ResponseEntity;
20 {{#useBeanValidation}}
21     import org.springframework.validation.annotation.Validated;
22 {{/useBeanValidation}}
23 import org.springframework.web.bind.annotation.PathVariable;
24 import org.springframework.web.bind.annotation.RequestBody;
25 import org.springframework.web.bind.annotation.RequestHeader;
26 import org.springframework.web.bind.annotation.RequestMapping;
27 import org.springframework.web.bind.annotation.RequestMethod;
28 import org.springframework.web.bind.annotation.RequestParam;
29 import org.springframework.web.bind.annotation.RequestPart;
30 import org.springframework.web.multipart.MultipartFile;
31 import org.onap.ccsdk.apps.services.RestException;
32
33 {{#jdk8-no-delegate}}
34     import javax.servlet.http.HttpServletRequest;
35 {{/jdk8-no-delegate}}
36 {{#useBeanValidation}}
37     import javax.validation.Valid;
38     import javax.validation.constraints.*;
39 {{/useBeanValidation}}
40 {{#jdk8-no-delegate}}
41     import java.io.IOException;
42 {{/jdk8-no-delegate}}
43 import java.util.List;
44 {{#jdk8-no-delegate}}
45     import java.util.Optional;
46 {{/jdk8-no-delegate}}
47 {{^jdk8-no-delegate}}
48     {{#useOptional}}
49         import java.util.Optional;
50     {{/useOptional}}
51 {{/jdk8-no-delegate}}
52 {{#async}}
53     import java.util.concurrent.{{^jdk8}}Callable{{/jdk8}}{{#jdk8}}CompletableFuture{{/jdk8}};
54 {{/async}}
55 {{>generatedAnnotation}}
56 @Api(value = "{{{baseName}}}", description = "the {{{baseName}}} API")
57 {{#operations}}
58     public interface {{classname}} {
59     {{#jdk8}}
60
61         {{^isDelegate}}
62             Logger log = LoggerFactory.getLogger({{classname}}.class);
63
64             default Optional<ObjectMapper> getObjectMapper() {
65                 return Optional.empty();
66                 }
67
68                 default Optional<HttpServletRequest> getRequest() {
69                 return Optional.empty();
70                 }
71
72                 default Optional<String> getAcceptHeader() {
73                 return getRequest().map(r -> r.getHeader("Accept"));
74                 }
75         {{/isDelegate}}
76         {{#isDelegate}}
77             {{classname}}Delegate getDelegate();
78         {{/isDelegate}}
79     {{/jdk8}}
80     {{#operation}}
81
82             @ApiOperation(value = "{{{summary}}}", nickname = "{{{operationId}}}", notes = "{{{notes}}}"{{#returnBaseType}}, response = {{{returnBaseType}}}.class{{/returnBaseType}}{{#returnContainer}}, responseContainer = "{{{returnContainer}}}"{{/returnContainer}}{{#hasAuthMethods}}, authorizations = {
83         {{#authMethods}}@Authorization(value = "{{name}}"{{#isOAuth}}, scopes = {
84         {{#scopes}}@AuthorizationScope(scope = "{{scope}}", description = "{{description}}"){{#hasMore}},
85         {{/hasMore}}{{/scopes}}
86             }{{/isOAuth}}){{#hasMore}},
87         {{/hasMore}}{{/authMethods}}
88             }{{/hasAuthMethods}}, tags={ {{#vendorExtensions.x-tags}}"{{tag}}",{{/vendorExtensions.x-tags}} })
89             @ApiResponses(value = { {{#responses}}
90                 @ApiResponse(code = {{{code}}}, message = "{{{message}}}"{{#baseType}}, response = {{{baseType}}}.class{{/baseType}}{{#containerType}}, responseContainer = "{{{containerType}}}"{{/containerType}}){{#hasMore}},{{/hasMore}}{{/responses}} })
91         {{#implicitHeaders}}
92                 @ApiImplicitParams({
93             {{#headerParams}}
94                 {{>implicitHeader}}
95             {{/headerParams}}
96                 })
97         {{/implicitHeaders}}
98             @RequestMapping(value = "{{{path}}}",{{#singleContentTypes}}
99                 produces = "{{{vendorExtensions.x-accepts}}}",
100                 consumes = "{{{vendorExtensions.x-contentType}}}",{{/singleContentTypes}}{{^singleContentTypes}}{{#hasProduces}}
101                 produces = { {{#produces}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }, {{/hasProduces}}{{#hasConsumes}}
102                 consumes = { {{#consumes}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} },{{/hasConsumes}}{{/singleContentTypes}}
103             method = RequestMethod.{{httpMethod}})
104         {{#jdk8}}default {{/jdk8}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{#delegate-method}}_{{/delegate-method}}{{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}},{{/hasMore}}{{/allParams}}){{^jdk8}};{{/jdk8}}{{#jdk8}} throws RestException {
105         {{#delegate-method}}
106                 return {{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}});
107                 }
108
109                 // Override this method
110                 default {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{{dataType}}}{{/isFile}}{{#isFile}}MultipartFile{{/isFile}} {{paramName}}{{#hasMore}},{{/hasMore}}{{/allParams}}) throws RestException {
111         {{/delegate-method}}
112         {{^isDelegate}}
113                 if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
114             {{#examples}}
115                     if (getAcceptHeader().get().contains("{{{contentType}}}")) {
116                     try {
117                     return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(getObjectMapper().get().readValue("{{#lambdaRemoveLineBreak}}{{#lambdaEscapeDoubleQuote}}{{{example}}}{{/lambdaEscapeDoubleQuote}}{{/lambdaRemoveLineBreak}}", {{>exampleReturnTypes}}.class), HttpStatus.NOT_IMPLEMENTED){{#async}}){{/async}};
118                     } catch (IOException e) {
119                     log.error("Couldn't serialize response for content type {{{contentType}}}", e);
120                     return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR){{#async}}){{/async}};
121                     }
122                     }
123             {{/examples}}
124                 } else {
125                 log.warn("ObjectMapper or HttpServletRequest not configured in default {{classname}} interface so no example is generated");
126                 }
127                 return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED){{#async}}){{/async}};
128         {{/isDelegate}}
129         {{#isDelegate}}
130                 return getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}});
131         {{/isDelegate}}
132             }{{/jdk8}}
133
134     {{/operation}}
135         }
136 {{/operations}}