| package {{package}}; |
| |
| {{#imports}} |
| import {{import}}; |
| {{/imports}} |
| |
| import io.micrometer.core.annotation.Timed; |
| import io.micrometer.core.aop.MeterTag; |
| |
| import java.util.Map; |
| import java.util.List; |
| |
| import java.io.InputStream; |
| |
| import jakarta.annotation.Nonnull; |
| import jakarta.annotation.security.RolesAllowed; |
| |
| import {{javaxPackage}}.ws.rs.Consumes; |
| import {{javaxPackage}}.ws.rs.Produces; |
| import {{javaxPackage}}.ws.rs.DELETE; |
| import {{javaxPackage}}.ws.rs.GET; |
| import {{javaxPackage}}.ws.rs.HEAD; |
| import {{javaxPackage}}.ws.rs.PATCH; |
| import {{javaxPackage}}.ws.rs.POST; |
| import {{javaxPackage}}.ws.rs.PUT; |
| import {{javaxPackage}}.ws.rs.Path; |
| import {{javaxPackage}}.ws.rs.DefaultValue; |
| import {{javaxPackage}}.ws.rs.PathParam; |
| import {{javaxPackage}}.ws.rs.HeaderParam; |
| import {{javaxPackage}}.ws.rs.QueryParam; |
| import {{javaxPackage}}.ws.rs.FormParam; |
| import {{javaxPackage}}.ws.rs.core.Response; |
| import {{javaxPackage}}.servlet.http.HttpServletRequest; |
| import {{javaxPackage}}.servlet.http.HttpServletResponse; |
| import {{javaxPackage}}.ws.rs.core.Context; |
| import {{javaxPackage}}.ws.rs.core.SecurityContext; |
| |
| import {{javaxPackage}}.inject.Inject; |
| |
| import org.apache.polaris.core.context.RealmContext; |
| |
| import org.eclipse.microprofile.faulttolerance.Timeout; |
| |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| {{#useBeanValidation}} |
| import {{javaxPackage}}.validation.constraints.*; |
| import {{javaxPackage}}.validation.Valid; |
| {{/useBeanValidation}} |
| {{#operations}}{{#operation}}{{#isMultipart}}import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput; |
| {{/isMultipart}}{{/operation}}{{/operations}} |
| {{! |
| Note that this template is copied /modified from |
| https://github.com/OpenAPITools/openapi-generator/blob/783e68c7acbbdcbb2282d167d1644b069f12d486/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/api.mustache |
| It is updated to remove all swagger annotations |
| }} |
| /** |
| * The {{{baseName}}} API interface |
| * |
| * This file is automatically generated by the OpenAPI Code Generator based on configuration in the |
| * build.gradle file. |
| * |
| */ |
| @Path("{{contextPath}}{{commonPath}}"){{#hasConsumes}} |
| @Consumes({ {{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}} }){{/hasConsumes}}{{#hasProduces}} |
| @Produces({ {{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}} }){{/hasProduces}} |
| {{>generatedAnnotation}} |
| {{#operations}} |
| public class {{classname}} { |
| private static final Logger LOGGER = LoggerFactory.getLogger({{classname}}.class); |
| |
| private final {{classname}}Service service; |
| |
| @Inject |
| public {{classname}}({{classname}}Service service) { |
| this.service = service; |
| } |
| |
| {{#operation}} |
| /** |
| * {{^notes}}{{{summary}}}{{/notes}}{{notes}} |
| * |
| * Response type: {@code {{{returnBaseType}}}}. |
| *{{#allParams}} @param {{paramName}} {{#required}}Required -{{/required}} {{description}} |
| *{{/allParams}}{{#responses}} |
| * @return {{{code}}} - {{{message}}}{{/responses}} |
| */ |
| @{{httpMethod}}{{#subresourceOperation}} |
| @Path("{{{path}}}"){{/subresourceOperation}}{{#hasConsumes}} |
| @Consumes({ {{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}} }){{/hasConsumes}}{{#hasProduces}} |
| @Produces({ {{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}} }){{/hasProduces}}{{#hasAuthMethods}} |
| {{#authMethods}}{{#isOAuth}}@RolesAllowed("**"){{/isOAuth}}{{/authMethods}}{{/hasAuthMethods}} |
| @Timed("{{metricsPrefix}}.{{baseName}}.{{nickname}}") |
| @Timeout |
| public Response {{nickname}}({{#isMultipart}}MultipartFormDataInput input,{{/isMultipart}}{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{^isMultipart}}{{>formParams}},{{/isMultipart}}{{#isMultipart}}{{^isFormParam}},{{/isFormParam}}{{/isMultipart}}{{/allParams}}@Context @MeterTag(key="realm_id",expression="realmIdentifier") RealmContext realmContext,@Context @MeterTag(key="principal",expression="userPrincipal") SecurityContext securityContext) { |
| {{! Don't log form or header params in case there are secrets, e.g., OAuth tokens }} |
| LOGGER.atDebug().setMessage("Invoking {{baseName}} with params") |
| .addKeyValue("operation", "{{nickname}}"){{#allParams}}{{^isHeaderParam}}{{^isFormParam}} |
| .addKeyValue("{{paramName}}", {{^isBodyParam}}{{paramName}}{{/isBodyParam}}{{#isBodyParam}}String.valueOf({{paramName}}){{/isBodyParam}}){{/isFormParam}}{{/isHeaderParam}}{{/allParams}} |
| .log(); |
| |
| Response ret = |
| service.{{nickname}}({{#isMultipart}}input,{{/isMultipart}}{{#allParams}}{{^isMultipart}}{{paramName}},{{/isMultipart}}{{#isMultipart}}{{^isFormParam}}{{paramName}},{{/isFormParam}}{{/isMultipart}}{{/allParams}}realmContext,securityContext); |
| LOGGER.debug("Completed execution of {{nickname}} API with status code {}", ret.getStatus()); |
| return ret; |
| } |
| {{/operation}} |
| } |
| {{/operations}} |