package org.voovan.http.server.context; import org.voovan.http.server.HttpFilter; import org.voovan.tools.log.Logger; import org.voovan.tools.reflect.TReflect; import java.util.HashMap; import java.util.Map; /** * 过滤器配置信息对象 * * @author helyho * * Voovan Framework. * WebSite: https://github.com/helyho/Voovan * Licence: Apache v2 License */ public class HttpFilterConfig { private String name; private String className; private Map<String, Object> paramters = new HashMap<String, Object>(); private HttpFilter httpFilter; /** * 构造函数 * * @param configMap 过滤去定义 Map */ public HttpFilterConfig(Map<String, Object> configMap) { for (Map.Entry<String, Object> entry : configMap.entrySet()) { if ("Name".equalsIgnoreCase(entry.getKey())) { this.name = (String) entry.getValue(); } else if ("ClassName".equalsIgnoreCase(entry.getKey())) { this.className = (String) entry.getValue(); } else { paramters.put(entry.getKey(), entry.getValue()); } } } /** * 构造函数 * @param name 过滤器名称 * @param className 过滤器类 * @param parameters 过滤器参数 */ public HttpFilterConfig(String name, String className, Map<String, Object> parameters){ this.name = name; this.className = className; if(parameters!=null) { this.paramters = parameters; } } /** * 构造函数 */ public HttpFilterConfig() { } /** * 获取过滤器名称 * @return 过滤器名称 */ public String getName() { return name; } /** * 设置过滤器名称 * @param name 过滤器名称 */ public void setName(String name) { this.name = name; } /** * 获取过滤器类名 * @return 过滤器类名 */ public String getClassName() { return className; } /** * 设置过滤器类名 * @param className 过滤器类名 */ public void setClassName(String className) { this.className = className; } /** * 获取过滤器的参数,在过滤器定义的时候 * * @return 过滤器参数 */ public Map<String, Object> getParameters() { return paramters; } /** * 获取过滤器的参数,在过滤器定义的时候 * @param name 过滤器参数名 * @return 过滤器参数值 */ public Object getParameter(String name) { return paramters.get(name); } /** * 获取HttpBuizFilter过滤器实例 * * @return 过滤器实例 */ public HttpFilter getHttpFilterInstance() { try { //单例模式 if (httpFilter == null) { httpFilter = TReflect.newInstance(className); } return httpFilter; } catch (ReflectiveOperationException e) { Logger.error("[ERROR] New HttpFilter ["+className+"] error."); e.printStackTrace(); return null; } } /** * 新的过滤器配置对象 * @param name 过滤器名称 * @param className 过滤器类 * @param parameters 过滤器参数 * @return 过滤器配置对象 */ public static HttpFilterConfig newInstance(String name, String className, Map<String, Object> parameters){ return new HttpFilterConfig(name,className,parameters); } /** * 新的过滤器配置对象 * @param name 过滤器名称 * @param clazz 过滤器类 * @param parameters 过滤器参数 * @return 过滤器配置对象 */ public static HttpFilterConfig newInstance(String name, Class clazz, Map<String, Object> parameters){ return new HttpFilterConfig(name,clazz.getCanonicalName(),parameters); } }