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

com.github.xiaobingzhou.messageframe.repository.HandlerRepository Maven / Gradle / Ivy

package com.github.xiaobingzhou.messageframe.repository;

import com.github.xiaobingzhou.messageframe.repository.impl.HandlerStore;
import com.github.xiaobingzhou.messageframe.request.HandlerRequest;

import java.lang.reflect.Method;
import java.util.*;

/**
 * HandlerRepository接口
 * @author bell.zhouxiaobing
 * @since 1.3
 */
public interface HandlerRepository {

	/**
	 * 设置消息帧处理器到仓库里
	 * @param handler
	 * @param beanName
	 */
	void setHandler(Object handler, String beanName);
	
	/**
	 * 根据指令码从仓库里或消息帧处理器
	 * @param commandCode
	 * @return Object
	 */
	Object getHandler(String commandCode);

	/**
	 * 根据指令码从仓库里获取对应的处理方法
	 * @param commandCode
	 * @return Method
	 */
	Method getHandlerMethod(String commandCode);

	/**
	 * 根据指令码从仓库里获取对应的处理方法的参数名
	 * @param commandCode
	 * @return String[]
	 */
	String[] getHandlerMethodParameterNames(String commandCode);

	/**
	 * 获取保存的指令码
	 * @return Set
	 * @since 1.5.4
	 */
	Set getCommandCodes();

	// ==============匹配版本号=================

	/**
	 * 根据请求从仓库里或消息帧处理器
	 * 匹配版本号
	 * @param request
	 * @return Object
	 * @since 1.6.3
	 */
	default Object getHandler(HandlerRequest request) {
		return this.getHandler(request.getCommandCode());
	}

	/**
	 * 根据请求从仓库里获取对应的处理方法
	 * 匹配版本号
	 * @param request
	 * @return Method
	 * @since 1.6.3
	 */
	default Method getHandlerMethod(HandlerRequest request) {
		return this.getHandlerMethod(request.getCommandCode());
	}

	/**
	 * 根据请求从仓库里获取对应的处理方法的参数名
	 * 匹配版本号
	 * @param request
	 * @return String[]
	 * @since 1.6.3
	 */
	default String[] getHandlerMethodParameterNames(HandlerRequest request){
		return this.getHandlerMethodParameterNames(request.getCommandCode());
	}

    /**
     * 获取所有的key
     * @return Set 所有key
     * @since 1.6.3
     */
	default Set keys(){
	    return this.getCommandCodes();
    }

    /**
     * 根据key获取Store
     * @return Store
     * @since 1.6.3
     */
    default Store value(String key) {
        HandlerStore handlerStore = new HandlerStore();
        handlerStore.setMethod(getHandlerMethod(key));
        handlerStore.setParameterNames(getHandlerMethodParameterNames(key));
        return handlerStore;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy