system.web.InitLinkData Maven / Gradle / Ivy
The newest version!
package system.web;
import system.base.annotation.M;
import system.base.annotation.H;
import java.lang.reflect.Method;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import system.base.annotation.JWFilter;
import system.web.filter.chain.config.ConfigurationFilter;
import system.web.filter.chain.config.ConfigurationFilterService;
import system.web.filter.chain.config.LinkFilters;
import system.web.hm.model.LinkHMModel;
import system.web.servlet.Servlet;
import system.web.validate.model.InitValidateModel;
import system.base.annotation.Validate;
import system.web.hm.HMTool;
import system.web.validate.model.ValidateModel;
/**
*
* @author ik
*/
public class InitLinkData extends HMTool{
private final system.web.hm.model.LinkHMData hp = new system.web.hm.model.LinkHMData();
private final system.web.servlet.LinkServletData servlet = new system.web.servlet.LinkServletData();
private final InitValidateModel validate = new InitValidateModel();
system.base.log.SysLog log = new system.base.log.SysLog();
private final system.web.filter.chain.InitJWFilterModel filterObject = new system.web.filter.chain.InitJWFilterModel();
Method[] fs;
String url = ""; //存入@H+@M的完整路径
M at_M;//@M的数据
Validate at_Validate;//@V的数据
ValidateModel vm = null; //校验对象的数据中心
int validate_instruction = 0;//校验指令
// int method_instruction = 0;//方法指令(静态方法=16,对象方法=0)
public void doinitHMData(List cs) {
ConfigurationFilterService fconfig = new ConfigurationFilterService();
for (Class ffc : cs) {
if (ConfigurationFilter.class.isAssignableFrom(ffc) && ConfigurationFilter.class != ffc) {
fconfig.iniUserConfig(ffc);
break;
}
}
LinkFilters lf = fconfig.getLinkFilters();
log.setLogTitle("初始化服务请求资源");
for (Class c : cs) {
try {
if ((HttpServlet.class.isAssignableFrom(c) && HttpServlet.class != c)
|| (Servlet.class.isAssignableFrom(c) && Servlet.class != c)) {
servlet.DoH(c, lf, url);
} else {
this.DoH(c, lf);
}
} catch (InstantiationException | IllegalAccessException ex) {
Logger.getLogger(InitLinkData.class.getName()).log(Level.SEVERE, null, ex);
}
}
log.println();
}
private void DoH(Class c, LinkFilters lf) throws InstantiationException, IllegalAccessException {
if (null != c.getAnnotation(H.class)) {
filterObject.clear();
fs = c.getMethods();
url = ""; //存入@H+@M的完整路径 初始化
//执行过滤器判断
if (null != c.getAnnotation(JWFilter.class)) {
//执行标注在类的过滤器处理
filterObject.iniFilterModel_H(((JWFilter) c.getAnnotation(JWFilter.class)).value());
}
//执行方法过滤器判断
String hV = ((H) c.getAnnotation(H.class)).value().trim();
for (Method f : fs) {
validate_instruction = 0;//校验指令
vm = null; //校验对象的数据中心 校验对象初始化
at_M = (M) f.getAnnotation(M.class);
at_Validate = (Validate) f.getAnnotation(Validate.class);
if (null != at_M && !getMValueOrURL(at_M).isEmpty()) {
filterObject.clearM();
url = requestURL(hV, getMValueOrURL(at_M), WebContext.getWebContext().webConfig.HM_SUFFIX);
//对@H@M的,执行全局检查
filterObject.iniGrobalConfiguration(lf.getResource(url, c.getName() + "." + f.getName()));
//执行方法过滤器(全局集合+@H集合=方法集合。)
filterObject.iniFilterModel_M(
null != f.getAnnotation(JWFilter.class)
? ((JWFilter) f.getAnnotation(JWFilter.class)).value()
: null
);
if (null != at_Validate && ValidateModel.class.isAssignableFrom(at_Validate.value())) {
validate.doinitData(at_Validate.value());
vm = validate.get(at_Validate.value());
validate_instruction = XY_Instruction.VALIDATE;
}
/**
*
* @param fm1 执行前置过滤链
* @param vm 执行校验
* @param fm2 执行后置过滤链
* @param hClass 执行用户请求关连的类
* @param method 执行用户请求的关连类下的方法
* @param return_way
* 执行完毕,返回方式。使用方法返回的值:如果返回值为null,无视此参数作用。如果有值,
* @param instruction 指令1-15.
*/
hp.initPutHMModel(url, new LinkHMModel(
filterObject.getHMFilterModel_TOP()//顶部过滤链
,
vm //执行校验
,
filterObject.getHMFilterModel_CENTER()//中部过滤链
,
c //执行用户请求关连的类
,
f //执行用户请求的关连类下的方法
,
this.isStaticM(f) // , at_M.return_way()
,
filterObject.getHMFilterModel_BUTTOM() //底部过滤链
,
filterObject.getFilterInstruction() + validate_instruction//KEY
));
log.putLog(1, c.getName() + "." + f.getName() + "映射URL : " + url + "//指令:" + (filterObject.getFilterInstruction() + validate_instruction));
}
}
}
}
private boolean isStaticM(Method m) {
return m.getParameterCount() == 1 && m.getParameterTypes()[0].equals(JWeb.class);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy