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

cc.shacocloud.mirage.web.VertxInvokeHandler Maven / Gradle / Ivy

package cc.shacocloud.mirage.web;

import io.vertx.core.Future;
import io.vertx.core.buffer.Buffer;
import org.jetbrains.annotations.Nullable;

/**
 * 调用处理器,为处理当前请求的实际调用对象,其中包含当前请求所绑定的一系列组件。
 * 在请求调用过程中,使用{@link #invokeAndHandleHandlerMethod(RoutingContext, HandlerMethod, Object...)}
 * 或者{@link #resultHandle(Object, HandlerMethod, HttpResponse)}方法来利用当前请求绑定的组件来调用指定的方法做处理
 */
public interface VertxInvokeHandler {

    /**
     * {@link RoutingContext#put(String, Object)}方法的{@code key}名称,该值包含可用于映射处理程序的  producible 中介类型集。
     */
    String PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE = VertxInvokeHandler.class.getName() + ".producibleMediaTypes";

    /**
     * 调用当前路由上下文真实映射到的方法进行处理,并且对结果进行解析
     *
     * @param routingContext 当前上下文
     * @param providedArgs   根据类型封装的参数
     * @return {@link Future} 方法的执行解析后的结果
     * @see #invokeAndHandleHandlerMethod(RoutingContext, HandlerMethod, Object...)
     */
    Future invokeAndHandleRoutingContext(RoutingContext routingContext, Object... providedArgs);

    /**
     * 调用指定方法进行执行,并且对结果进行解析
     *
     * @param routingContext 当前上下文
     * @param handlerMethod  指定的需要被处理的对象
     * @param providedArgs   根据类型封装的参数
     * @return {@link Future} 方法的执行解析后的结果
     * @see #resultHandle
     */
    Future invokeAndHandleHandlerMethod(RoutingContext routingContext, HandlerMethod handlerMethod, Object... providedArgs);

    /**
     * 调用当前上下文映射的处理方法处理响应,并且返回方法的执行解析后的结果
     *
     * @param result   结果
     * @param response 响应
     * @return {@link Future} 方法的执行解析后的结果
     */
    Future resultHandle(@Nullable Object result, HttpResponse response);

    /**
     * 调用指定处理方法执行,并且返回方法的执行解析后的结果
     *
     * @param result   结果
     * @param response 响应
     * @return {@link Future} 方法的执行解析后的结果
     */
    Future resultHandle(Object result, HandlerMethod handlerMethod, HttpResponse response);

    /**
     * @return 返回处理当前请求的处理程序
     * @see HandlerMethod
     * @see InvocableHandlerMethod
     * @see VertxInvocableHandlerMethod
     */
    Object getHandler();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy