All Downloads are FREE. Search and download functionalities are using the official Maven repository.

handlebars.JavaSpring.apiDelegate.mustache Maven / Gradle / Ivy

There is a newer version: 1.0.54
Show newest version
package {{package}};

{{#imports}}import {{import}};
{{/imports}}
{{#isJava8or11}}
import com.fasterxml.jackson.databind.ObjectMapper;
{{/isJava8or11}}
{{#useOas2}}
import io.swagger.annotations.*;
{{/useOas2}}
{{^useOas2}}
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
{{/useOas2}}
{{#isJava8or11}}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
{{/isJava8or11}}
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
{{#isJava8or11}}
import java.io.IOException;
{{/isJava8or11}}

{{#isJava8or11}}
import javax.servlet.http.HttpServletRequest;
{{/isJava8or11}}
import java.util.List;
import java.util.Map;
{{#isJava8or11}}
import java.util.Optional;
{{/isJava8or11}}
{{^isJava8or11}}
    {{#useOptional}}
import java.util.Optional;
    {{/useOptional}}
{{/isJava8or11}}
{{#async}}
import java.util.concurrent.{{^isJava8or11}}Callable{{/isJava8or11}}{{#isJava8or11}}CompletableFuture{{/isJava8or11}};
{{/async}}

{{#operations}}
/**
 * A delegate to be called by the {@link {{classname}}Controller}}.
 * Implement this interface with a {@link org.springframework.stereotype.Service} annotated class.
 */
{{>generatedAnnotation}}
public interface {{classname}}Delegate {
{{#isJava8or11}}

    Logger log = LoggerFactory.getLogger({{classname}}.class);

    {{#defaultInterfaces}}default {{/defaultInterfaces}}Optional getObjectMapper(){{^defaultInterfaces}};{{/defaultInterfaces}}{{#defaultInterfaces}}{
        return Optional.empty();
    }{{/defaultInterfaces}}

    {{#defaultInterfaces}}default {{/defaultInterfaces}}Optional getRequest(){{^defaultInterfaces}};{{/defaultInterfaces}}{{#defaultInterfaces}}{
        return Optional.empty();
    }{{/defaultInterfaces}}

    {{#defaultInterfaces}}default Optional getAcceptHeader() {
        return getRequest().map(r -> r.getHeader("Accept"));
    }{{/defaultInterfaces}}
{{/isJava8or11}}

{{#operation}}
{{#contents}}
{{#@first}}
    /**
     * @see {{classname}}#{{operationId}}
     */
    {{#defaultInterfaces}}default {{/defaultInterfaces}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#parameters}}{{^isBinary}} {{>optionalDataType}} {{/isBinary}}{{#isBinary}}MultipartFile{{/isBinary}} {{paramName}}{{#hasMore}},
        {{/hasMore}}{{/parameters}}){{^defaultInterfaces}};{{/defaultInterfaces}}{{#defaultInterfaces}} {
        if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
        {{#examples}}
            if (getAcceptHeader().get().contains("{{{contentType}}}")) {
                try {
                    return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(getObjectMapper().get().readValue("{{#lambdaRemoveLineBreak}}{{#lambdaEscapeDoubleQuote}}{{{example}}}{{/lambdaEscapeDoubleQuote}}{{/lambdaRemoveLineBreak}}", {{>exampleReturnTypes}}.class), HttpStatus.NOT_IMPLEMENTED){{#async}}){{/async}};
                } catch (IOException e) {
                    log.error("Couldn't serialize response for content type {{{contentType}}}", e);
                    return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR){{#async}}){{/async}};
                }
            }
        {{/examples}}
        } else {
            log.warn("ObjectMapper or HttpServletRequest not configured in default {{classname}} interface so no example is generated");
        }
        return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED){{#async}}){{/async}};
    }{{/defaultInterfaces}}

{{/@first}}
{{/contents}}
{{/operation}}
}
{{/operations}}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy