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

javaVertXServer.apiVerticle.mustache Maven / Gradle / Ivy

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

import com.fasterxml.jackson.core.type.TypeReference;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.Json;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.core.logging.Logger;
import io.vertx.core.logging.LoggerFactory;
import io.vertx.ext.auth.User;
import com.github.phiz71.vertx.swagger.router.SwaggerRouter;

{{#imports}}import {{import}};
{{/imports}}

import java.util.List;
import java.util.Map;

public class {{classname}}Verticle extends AbstractVerticle {
    final static Logger LOGGER = LoggerFactory.getLogger({{classname}}Verticle.class); 
    
    {{#operations}}{{#operation}}{{#vendorExtensions}}final static String {{x-serviceId-varName}} = "{{x-serviceId}}";
    {{/vendorExtensions}}{{/operation}}{{/operations}}

    protected {{classname}} service = createServiceImplementation();

    @Override
    public void start() throws Exception {
        {{#operations}}{{#operation}}
        //Consumer for {{#vendorExtensions}}{{x-serviceId}}{{/vendorExtensions}}
        vertx.eventBus(). consumer({{#vendorExtensions}}{{x-serviceId-varName}}{{/vendorExtensions}}).handler(message -> {
            try {
                {{#hasAuthMethods}}
                User user = SwaggerRouter.extractAuthUserFromMessage(message);
                {{/hasAuthMethods}}
                {{#hasParams}}
                    {{#allParams}}
                        {{#isListContainer}}
                {{{dataType}}} {{paramName}} = Json.mapper.readValue(message.body().getJsonArray("{{baseName}}").encode(), new TypeReference<{{{dataType}}}>(){});
                        {{/isListContainer}}
                        {{^isListContainer}}
                            {{#isPrimitiveType}}
                                {{#isString}}
                                    {{#vendorExtensions}}
                                        {{#X-isUUID}}
                {{{dataType}}} {{paramName}} = {{{dataType}}}.fromString(message.body().getString("{{baseName}}"));
                                        {{/X-isUUID}}
                                        {{^X-isUUID}}
                {{{dataType}}} {{paramName}} = message.body().getString("{{baseName}}");
                                        {{/X-isUUID}}
                                    {{/vendorExtensions}}
                                    {{^vendorExtensions}}
                {{{dataType}}} {{paramName}} = message.body().getString("{{baseName}}");
                                    {{/vendorExtensions}}
                                {{/isString}}
                                {{^isString}}
                {{{dataType}}} {{paramName}} = Json.mapper.readValue(message.body().getString("{{baseName}}"), {{{dataType}}}.class);
                                {{/isString}}
                            {{/isPrimitiveType}}
                            {{^isPrimitiveType}}
                {{{dataType}}} {{paramName}} = Json.mapper.readValue(message.body().getJsonObject("{{baseName}}").encode(), {{{dataType}}}.class);
                            {{/isPrimitiveType}}
                        {{/isListContainer}}
                    {{/allParams}}
                {{/hasParams}}
                {{#rxInterface}}
{{>RxCall}}
                {{/rxInterface}}
                {{^rxInterface}}
{{>AsyncCall}}
                {{/rxInterface}}
            } catch (Exception e) {
                manageError(message, e, {{#vendorExtensions}}{{x-serviceId-varName}}{{/vendorExtensions}});
            }
        });
        {{/operation}}{{/operations}}
    }
    
    private void manageError(Message message, Throwable cause, String serviceName) {
        int code = MainApiException.INTERNAL_SERVER_ERROR.getStatusCode();
        String statusMessage = MainApiException.INTERNAL_SERVER_ERROR.getStatusMessage();
        if (cause instanceof MainApiException) {
            code = ((MainApiException)cause).getStatusCode();
            statusMessage = ((MainApiException)cause).getStatusMessage();
        } else {
            logUnexpectedError(serviceName, cause); 
        }
            
        message.fail(code, statusMessage);
    }
    
    private void logUnexpectedError(String serviceName, Throwable cause) {
        LOGGER.error("Unexpected error in "+ serviceName, cause);
    }

    protected {{classname}} createServiceImplementation() {
        return new {{classname}}Impl();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy