📄 checkermanager.java
字号:
package org.impact.stars.control.web.checker;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.servlet.ServletContext;import java.util.Collection;import java.util.HashMap;import org.impact.stars.control.web.RequestProcessor;import org.impact.stars.util.Debug;import org.impact.stars.control.event.StarsEvent;import org.impact.stars.control.exceptions.StarsEventException;/* *This class manages all of the access checkers within the web container * For each event, it finds or initialise a AccessRule with a data model * For each type of event, it finds or initialise a Checker * The mapping between event and checker are defined in the JNDI lookup*/public class CheckerManager implements java.io.Serializable { private RequestProcessor reqpro; private HashMap attributeMap; private HashMap checkerMap; private ServletContext sc; public CheckerManager() { } public void init(RequestProcessor reqpro, ServletContext sc) { this.reqpro = reqpro; this.sc = sc; attributeMap = new HashMap(); checkerMap = new HashMap(); } public String checkEvent(StarsEvent ese) throws StarsEventException{ Debug.println("CheckerManager: received event= " + ese); String eventName = ese.getEventName(); String permition = "OK"; if (eventName != null) { Debug.println("CheckerManager: processingEvent= " + eventName); String checkerName = getCheckerName(eventName); Debug.println("CheckerManager: process checker class = " + checkerName); ConsistentChecker checker = getChecker(checkerName); if (checker != null) { Debug.println("CheckerManager: initialzied " + checkerName); // do the magic //checker.doStart(); permition = checker.getPermition(ese); Debug.println("CheckerManager: sucessfully processed :" + eventName); } } return permition; } private String getCheckerName(String eventName) { // the checker JNDI names are set in the web layer JNDI conf. // see the web.xml file for list Debug.println("CheckerManager: looking up:" + eventName + "<"); try { InitialContext ic = new InitialContext(); return (String)ic.lookup(eventName+"Checker"); } catch (javax.naming.NamingException ex) { Debug.println("AccountChecker caught: " + ex); } return null; } public void setAttribute(String key, Object value) { attributeMap.put(key, value); } public Object getAttribute(String key) { return attributeMap.get(key); } public RequestProcessor getRequestProcessor() { return reqpro; } public ServletContext getServletContext() { return sc; } public void doStart(StarsEvent ese){ Debug.println("CheckerManager: doStart for event= " + ese); String eventName = ese.getEventName(); if (eventName != null) { String checkerName = getCheckerName(eventName); ConsistentChecker checker = getChecker(checkerName); if (checker != null) { checker.doStart(ese); Debug.println("CheckerManager: sucessfully doStart :" + eventName); } } } public void doEnd(StarsEvent ese){ Debug.println("CheckerManager: doEnd for event= " + ese); String eventName = ese.getEventName(); if (eventName != null) { String checkerName = getCheckerName(eventName); ConsistentChecker checker = getChecker(checkerName); if (checker != null) { checker.doEnd(ese); Debug.println("CheckerManager: sucessfully doEnd :" + eventName); } } } private ConsistentChecker getChecker(String checkerName) { ConsistentChecker checker = null; try { if (checkerMap.get(checkerName) != null) { checker = (ConsistentChecker)checkerMap.get(checkerName); } else { checker = (ConsistentChecker)Class.forName(checkerName).newInstance(); checker.init(this, sc); checkerMap.put(checkerName, checker); Debug.println("CheckerManager: loaded checker " + checkerName); } } catch (Exception ex) { Debug.println("CheckerManager: error loading " + checkerName + " :" + ex); } return checker; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -