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: 3.0.0-rc1
Show newest version
package {{package}};

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;

{{#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}}
    //TODO : create Implementation
    {{classname}} service = new {{classname}}Impl();

    @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 {
                {{#hasParams}}
                    {{#allParams}}
                        {{#isListContainer}}
                {{{dataType}}} {{paramName}} = Json.mapper.readValue(message.body().getJsonArray("{{baseName}}").encode(),
                        Json.mapper.getTypeFactory().constructCollectionType(List.class, {{{baseType}}}.class));
                        {{/isListContainer}}
                        {{^isListContainer}}
                            {{#isPrimitiveType}}
                                {{#isString}}
                {{{dataType}}} {{paramName}} = message.body().getString("{{baseName}}");
                                {{/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) {
                logUnexpectedError("{{#vendorExtensions}}{{x-serviceid}}{{/vendorExtensions}}", e);
                message.fail(MainApiException.INTERNAL_SERVER_ERROR.getStatusCode(), MainApiException.INTERNAL_SERVER_ERROR.getStatusMessage());
            }
        });
        {{/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);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy