attempting to fix a problem with the known_monitors map (by removing it)

This commit is contained in:
Eric J. Bowersox 2001-11-21 19:57:29 +00:00
parent 3752e73c2d
commit f8f83de56b
2 changed files with 9 additions and 6 deletions

View File

@ -666,13 +666,14 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
sect = loader.configGetSubSection(root_h,"security");
// Load the security monitors.
HashMap known_monitors = new HashMap();
NodeList nl = sect.getChildNodes();
for (i=0; i<nl.getLength(); i++)
{ // scan through and find security monitors to initialize
Node n = nl.item(i);
if ((n.getNodeType()==Node.ELEMENT_NODE) && (n.getNodeName().equals("security-definition")))
{ // load one of the initial security definitions
SecurityMonitor sm = new StaticSecurityMonitor((Element)n);
SecurityMonitor sm = new StaticSecurityMonitor((Element)n,known_monitors);
if (sm.getID().equals("Global"))
global_security = sm;
else if (sm.getID().equals("Community"))
@ -758,6 +759,7 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
// Now done with the sidebox config...
// Load the services config file.
subdoc = loader.loadConfigDocument(services_config);
// TODO: following needs to use the known_monitors mapping
scmgr = new ServiceControlManager(subdoc,global_security,community_security);
} // end try

View File

@ -82,7 +82,6 @@ public class StaticSecurityMonitor implements SecurityMonitor
private static Category logger = Category.getInstance(StaticSecurityMonitor.class);
private static SecurityMonitor root_monitor = null;
private static Map known_monitors = Collections.synchronizedMap(new HashMap());
private static int DEFAULT_SCOPE_OFFSET = 3;
@ -111,10 +110,12 @@ public class StaticSecurityMonitor implements SecurityMonitor
*
* @param cfg The root element of the security monitor configuration, which must be a
* <CODE>&lt;security-definition/&gt;</CODE> element.
* @param previous A mapping of all previously-known security monitors. This one will be added to
* it on success.
* @exception com.silverwrist.venice.except.ConfigException The XML configuration data was incorrect in
* some fashion.
*/
public StaticSecurityMonitor(Element cfg) throws ConfigException
public StaticSecurityMonitor(Element cfg, Map previous) throws ConfigException
{
boolean set_root_monitor = false;
@ -138,7 +139,7 @@ public class StaticSecurityMonitor implements SecurityMonitor
if (logger.isDebugEnabled())
logger.debug("defining new StaticSecurityMonitor with id=" + id);
if (known_monitors.containsKey(id))
if (previous.containsKey(id))
{ // the monitor with this ID has already been defined!
logger.fatal("security monitor with id=" + id + " is already defined!");
throw new ConfigException("security monitor id=" + id + " is already defined!");
@ -148,7 +149,7 @@ public class StaticSecurityMonitor implements SecurityMonitor
if (root_h.hasAttribute("parent"))
{ // find our parent
String parent_id = cfg.getAttribute("parent");
parent = (SecurityMonitor)(known_monitors.get(parent_id));
parent = (SecurityMonitor)(previous.get(parent_id));
if (parent==null)
{ // no parent! that's bogus!
logger.fatal("parent security monitor with id=" + parent_id + " does not exist!");
@ -344,7 +345,7 @@ public class StaticSecurityMonitor implements SecurityMonitor
dynamic_permissions = Collections.EMPTY_SET;
// Finish up by adding ourselves to the known monitors list.
known_monitors.put(id,this);
previous.put(id,this);
if (set_root_monitor)
root_monitor = this;