javaVertXServer.json.VerticleHelperJson.mustache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vertx-swagger-codegen Show documentation
Show all versions of vertx-swagger-codegen Show documentation
A Swagger codegen plugin for Vert.X. Based on the Swagger Router.
The newest version!
package {{invokerPackage}}.util;
import com.fasterxml.jackson.core.type.TypeReference;
import com.github.phiz71.vertx.swagger.router.SwaggerRouter;
import {{invokerPackage}}.MainApiException;
import io.vertx.core.eventbus.DeliveryOptions;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.JsonObject;
import io.vertx.core.logging.Logger;
import io.vertx.core.logging.LoggerFactory;
{{#rxInterface}}
import rx.functions.Action1;
{{/rxInterface}}
{{^rxInterface}}
import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
{{/rxInterface}}
public class VerticleHelper {
private Logger logger;
public VerticleHelper(Logger logger) {
this.logger = logger;
}
public VerticleHelper(Class clazz) {
this.logger = LoggerFactory.getLogger(clazz);
}
{{#rxInterface}}
public Action1 getErrorAction(Message message, String serviceName) {
return error -> {
manageError(message, error, serviceName);
};
}
public Action1> getRxResultHandler(Message message, boolean withJsonEncode, TypeReference type) {
return result -> {
DeliveryOptions deliveryOptions = new DeliveryOptions();
deliveryOptions.setHeaders(result.getHeaders());
if (withJsonEncode) {
message.reply(result.toJson(), deliveryOptions);
} else {
message.reply(result.getResponse(), deliveryOptions);
}
};
}
{{/rxInterface}}
{{^rxInterface}}
public Handler>> getAsyncResultHandler(Message message, String serviceName, boolean withJsonEncode, TypeReference type) {
return result -> {
if (result.succeeded()) {
DeliveryOptions deliveryOptions = new DeliveryOptions();
deliveryOptions.setHeaders(result.result().getHeaders());
if(withJsonEncode) {
message.reply(result.result().toJson(), deliveryOptions);
} else {
message.reply(result.result().getResponse(), deliveryOptions);
}
} else {
Throwable cause = result.cause();
manageError(message, cause, serviceName);
}
};
}
{{/rxInterface}}
public void manageError(Message message, Throwable cause, String serviceName) {
int code = MainApiException.INTERNAL_SERVER_ERROR.getStatusCode();
String statusMessage = MainApiException.INTERNAL_SERVER_ERROR.getStatusMessage();
DeliveryOptions deliveryOptions = new DeliveryOptions();
if (cause instanceof MainApiException) {
code = ((MainApiException)cause).getStatusCode();
statusMessage = ((MainApiException)cause).getStatusMessage();
deliveryOptions.setHeaders(((MainApiException)cause).getHeaders());
} else {
logUnexpectedError(serviceName, cause);
}
deliveryOptions.addHeader(SwaggerRouter.CUSTOM_STATUS_CODE_HEADER_KEY, String.valueOf(code));
deliveryOptions.addHeader(SwaggerRouter.CUSTOM_STATUS_MESSAGE_HEADER_KEY, statusMessage);
message.reply(null, deliveryOptions);
}
private void logUnexpectedError(String serviceName, Throwable cause) {
logger.error("Unexpected error in "+ serviceName, cause);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy