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

io.vertx.ext.web.api.service.RouteToEBServiceHandler Maven / Gradle / Ivy

There is a newer version: 5.0.0.CR2
Show newest version
package io.vertx.ext.web.api.service;

import io.vertx.codegen.annotations.Fluent;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.Handler;
import io.vertx.core.eventbus.DeliveryOptions;
import io.vertx.core.eventbus.EventBus;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.RoutingContext;
import io.vertx.ext.web.api.service.impl.RouteToEBServiceHandlerImpl;

import java.util.function.Function;

/**
 * Handler that proxy the request to an event bus endpoint, waits for the reply and then writes the HTTP response. 
* * The HTTP request is sent encapsulated into a {@link ServiceRequest} object through the event bus. The expected reply is a {@link ServiceResponse}
* * This handler requires a {@link io.vertx.ext.web.validation.ValidationHandler} that process request parameters, so they can be encapsulated by this handler inside the {@link ServiceRequest} * * @author Francesco Guardiani @slinkydeveloper */ @VertxGen public interface RouteToEBServiceHandler extends Handler { /** * When {@code extraPayloadMapper} is configured, this handler puts the evaluation result into {@link ServiceRequest#getExtra()} * * @param extraPayloadMapper mapper * @return */ @Fluent RouteToEBServiceHandler extraPayloadMapper(Function extraPayloadMapper); /** * Build a new {@code RouteToEBServiceHandler} * * @param eventBus Vert.x event bus instance * @param address Event bus endpoint address * @param actionName action name of the endpoint. This will be configured as {@link DeliveryOptions} header named {@code action} * @return */ static RouteToEBServiceHandler build(EventBus eventBus, String address, String actionName) { return new RouteToEBServiceHandlerImpl(eventBus, address, new DeliveryOptions().addHeader("action", actionName)); } /** * Build a new {@code RouteToEBServiceHandler} * * @param eventBus Vert.x event bus instance * @param address Event bus endpoint address * @param actionName action name of the endpoint. This will be configured as {@link DeliveryOptions} header named {@code action} * @param deliveryOptions delivery options that will be always sent with the request * @return */ static RouteToEBServiceHandler build(EventBus eventBus, String address, String actionName, DeliveryOptions deliveryOptions) { return new RouteToEBServiceHandlerImpl(eventBus, address, new DeliveryOptions(deliveryOptions).addHeader("action", actionName)); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy