moved security monitor initialization from VeniceEngineImpl down to

GlobalSiteImpl, removed env_getSecurityMonitor from envEngine
This commit is contained in:
Eric J. Bowersox 2002-05-27 04:09:38 +00:00
parent 0afe28588d
commit 48266c4f73
11 changed files with 85 additions and 72 deletions

View File

@ -11,7 +11,7 @@
* *
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>, * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
*/ */
@ -80,8 +80,7 @@ class ServiceControlManager implements ServiceControl
*-------------------------------------------------------------------------------- *--------------------------------------------------------------------------------
*/ */
ServiceControlManager(GlobalSite globalsite, Document cfg, SecurityMonitorEnvironment sm_env) ServiceControlManager(GlobalSite globalsite, Document cfg) throws ConfigException
throws ConfigException
{ {
XMLLoader loader = XMLLoader.get(); XMLLoader loader = XMLLoader.get();
Element root = loader.configGetRootElement(cfg,"services-config"); Element root = loader.configGetRootElement(cfg,"services-config");
@ -98,7 +97,7 @@ class ServiceControlManager implements ServiceControl
{ // load the services for the section { // load the services for the section
HashMap tmp_symbol_to_service = new HashMap(); HashMap tmp_symbol_to_service = new HashMap();
HashMap tmp_index_to_service = new HashMap(); HashMap tmp_index_to_service = new HashMap();
SecurityMonitor sm_comm = sm_env.getMonitor("Community"); SecurityMonitor sm_comm = (SecurityMonitor)(globalsite.queryService(SecurityMonitor.class,"Community"));
nl = sect.getChildNodes(); nl = sect.getChildNodes();
for (i=0; i<nl.getLength(); i++) for (i=0; i<nl.getLength(); i++)
{ // get each element node... { // get each element node...

View File

@ -29,8 +29,6 @@ import com.silverwrist.venice.core.internals.*;
import com.silverwrist.venice.db.*; import com.silverwrist.venice.db.*;
import com.silverwrist.venice.except.*; import com.silverwrist.venice.except.*;
import com.silverwrist.venice.htmlcheck.*; import com.silverwrist.venice.htmlcheck.*;
import com.silverwrist.venice.htmlcheck.dict.*;
import com.silverwrist.venice.htmlcheck.filters.*;
import com.silverwrist.venice.security.*; import com.silverwrist.venice.security.*;
import com.silverwrist.venice.svc.*; import com.silverwrist.venice.svc.*;
import com.silverwrist.venice.svc.internal.GlobalSite; import com.silverwrist.venice.svc.internal.GlobalSite;
@ -263,9 +261,6 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
private HashSet no_compress_types = new HashSet(); // the file types that can't be compressed private HashSet no_compress_types = new HashSet(); // the file types that can't be compressed
private HashMap password_changes = new HashMap(); // current password change requests private HashMap password_changes = new HashMap(); // current password change requests
private OptionSet global_flags = new OptionSet(); // global option flags private OptionSet global_flags = new OptionSet(); // global option flags
private SecurityMonitor global_security; // the global security monitor
private SecurityMonitor community_security; // the community security monitor
private SecurityMonitor conference_security; // conference security monitor (will move eventually)
private ServiceControlManager scmgr; // service control manager private ServiceControlManager scmgr; // service control manager
/*-------------------------------------------------------------------------------- /*--------------------------------------------------------------------------------
@ -534,35 +529,13 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
// Create the global site. // Create the global site.
globalsite = new GlobalSiteImpl(this,root,app_root); globalsite = new GlobalSiteImpl(this,root,app_root);
// Get the <security/> section.
sect = loader.configGetSubSection(root_h,"security");
// Load the security monitors.
SecurityMonitorEnvironment sm_env = new SecurityMonitorEnvironment();
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,sm_env);
if (sm.getID().equals("Global"))
global_security = sm;
else if (sm.getID().equals("Community"))
community_security = sm;
else if (sm.getID().equals("Conference"))
conference_security = sm;
} // end if
} // end for
// Get the <upload/> section. // Get the <upload/> section.
sect = loader.configGetSubSection(root_h,"upload"); sect = loader.configGetSubSection(root_h,"upload");
sect_h = new DOMElementHelper(sect); sect_h = new DOMElementHelper(sect);
// Look for a "no-compress" blacklist. // Look for a "no-compress" blacklist.
Element subsect = sect_h.getSubElement("no-compress"); Element subsect = sect_h.getSubElement("no-compress");
NodeList nl;
if (subsect!=null) if (subsect!=null)
{ // Initialize the no-compress list. { // Initialize the no-compress list.
nl = subsect.getChildNodes(); nl = subsect.getChildNodes();
@ -607,7 +580,7 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
// Now done with the sidebox config... // Now done with the sidebox config...
// Load the services config file. // Load the services config file.
subdoc = loader.loadConfigDocument(services_config); subdoc = loader.loadConfigDocument(services_config);
scmgr = new ServiceControlManager(globalsite,subdoc,sm_env); scmgr = new ServiceControlManager(globalsite,subdoc);
} // end try } // end try
catch (ConfigException ce) catch (ConfigException ce)
@ -667,6 +640,7 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
} // end if } // end if
scmgr.shutdown(); scmgr.shutdown();
scmgr = null;
env = null; env = null;
globalsite.shutdown(); globalsite.shutdown();
globalsite = null; globalsite = null;
@ -888,7 +862,8 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
throws DataException, AccessError throws DataException, AccessError
{ {
checkInitialized(); checkInitialized();
Role new_role = global_security.getDefaultRole("Global.NewUser"); SecurityMonitor smon = (SecurityMonitor)(globalsite.queryService(SecurityMonitor.class));
Role new_role = smon.getDefaultRole("Global.NewUser");
// email confirmation # is between 1000000 and 9999999 // email confirmation # is between 1000000 and 9999999
int confirm_num = Generator.get().getNewConfirmationNumber(); int confirm_num = Generator.get().getNewConfirmationNumber();
@ -1350,7 +1325,8 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
public SecurityInfo getSecurityInfo() public SecurityInfo getSecurityInfo()
{ {
return new SecurityInfoWrapper(global_security); SecurityMonitor smon = (SecurityMonitor)(globalsite.queryService(SecurityMonitor.class));
return new SecurityInfoWrapper(smon);
} // end getSecurityInfo } // end getSecurityInfo
@ -1474,7 +1450,12 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
public Role getParamRole(int selector) public Role getParamRole(int selector)
{ {
if (selector==ROLEP_CREATECOMMUNITY) if (selector==ROLEP_CREATECOMMUNITY)
return global_security.getRoleForLevel(gp_ints[IP_CREATECOMMUNITYLVL]); { // resolve with respect to the global security monitor
SecurityMonitor smon = (SecurityMonitor)(globalsite.queryService(SecurityMonitor.class));
return smon.getRoleForLevel(gp_ints[IP_CREATECOMMUNITYLVL]);
} // end if
return null; return null;
} // end getParamRole } // end getParamRole
@ -1596,18 +1577,6 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
} // end setProperties } // end setProperties
public SecurityMonitor env_getSecurityMonitor(int selector)
{
if (selector==SM_GLOBAL)
return global_security;
if (selector==SM_COMMUNITY)
return community_security;
if (selector==SM_CONFERENCE)
return conference_security;
return null;
} // end env_getSecurityMonitor
/*-------------------------------------------------------------------------------- /*--------------------------------------------------------------------------------
* Static initializer * Static initializer
*-------------------------------------------------------------------------------- *--------------------------------------------------------------------------------

View File

@ -20,8 +20,6 @@ package com.silverwrist.venice.core.internals;
import java.util.BitSet; import java.util.BitSet;
import java.util.List; import java.util.List;
import com.silverwrist.venice.security.Role; import com.silverwrist.venice.security.Role;
import com.silverwrist.venice.security.SecurityMonitor;
import com.silverwrist.venice.htmlcheck.HTMLChecker;
import com.silverwrist.venice.core.GlobalProperties; import com.silverwrist.venice.core.GlobalProperties;
import com.silverwrist.venice.core.SideBoxDescriptor; import com.silverwrist.venice.core.SideBoxDescriptor;
import com.silverwrist.venice.core.TopicMessageContext; import com.silverwrist.venice.core.TopicMessageContext;
@ -48,11 +46,6 @@ public interface EngineBackend
// role parameter indexes // role parameter indexes
public static final int ROLEP_CREATECOMMUNITY = 0; public static final int ROLEP_CREATECOMMUNITY = 0;
// Selectors for security monitors
public static final int SM_GLOBAL = 0;
public static final int SM_COMMUNITY = 1;
public static final int SM_CONFERENCE = 2;
public abstract VeniceEngine getSelf(); public abstract VeniceEngine getSelf();
public abstract CommunityData getCommunityDataObject(int cid) throws DataException; public abstract CommunityData getCommunityDataObject(int cid) throws DataException;
@ -89,6 +82,4 @@ public interface EngineBackend
public abstract void setProperties(GlobalProperties props) throws DataException; public abstract void setProperties(GlobalProperties props) throws DataException;
public abstract SecurityMonitor env_getSecurityMonitor(int selector);
} // end interface EngineBackend } // end interface EngineBackend

View File

@ -11,7 +11,7 @@
* *
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>, * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
*/ */
@ -56,7 +56,7 @@ public class EnvCommunity extends EnvUser
{ {
super(parent); super(parent);
this.comm = comm; this.comm = comm;
this.sm = getEngine().env_getSecurityMonitor(EngineBackend.SM_COMMUNITY); this.sm = (SecurityMonitor)(getGlobalSite().queryService(SecurityMonitor.class,"Community"));
} // end constructor } // end constructor
@ -178,7 +178,8 @@ public class EnvCommunity extends EnvUser
public final Role getConferenceDefaultRole(String symbol) public final Role getConferenceDefaultRole(String symbol)
{ {
return getEngine().env_getSecurityMonitor(EngineBackend.SM_CONFERENCE).getDefaultRole(symbol); SecurityMonitor smon = (SecurityMonitor)(getGlobalSite().queryService(SecurityMonitor.class,"Conference"));
return smon.getDefaultRole(symbol);
} // end getCommunityDefaultRole } // end getCommunityDefaultRole

View File

@ -11,7 +11,7 @@
* *
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>, * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
*/ */
@ -62,7 +62,7 @@ public class EnvCommunityData extends EnvEngine
protected SecurityMonitor getStaticMonitor() protected SecurityMonitor getStaticMonitor()
{ {
return getEngine().env_getSecurityMonitor(EngineBackend.SM_COMMUNITY); return (SecurityMonitor)(getGlobalSite().queryService(SecurityMonitor.class,"Community"));
} // end getStaticMonitor } // end getStaticMonitor

View File

@ -11,7 +11,7 @@
* *
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>, * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
*/ */
@ -40,7 +40,7 @@ public class EnvConference extends EnvCommunity
{ {
super(parent); super(parent);
this.conf = conf; this.conf = conf;
this.sm = getEngine().env_getSecurityMonitor(EngineBackend.SM_CONFERENCE); this.sm = (SecurityMonitor)(getGlobalSite().queryService(SecurityMonitor.class,"Conference"));
} // end constructor } // end constructor

View File

@ -11,7 +11,7 @@
* *
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>, * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
*/ */
@ -46,7 +46,7 @@ public class EnvConferenceData extends EnvEngine
protected SecurityMonitor getStaticMonitor() protected SecurityMonitor getStaticMonitor()
{ {
return getEngine().env_getSecurityMonitor(EngineBackend.SM_CONFERENCE); return (SecurityMonitor)(getGlobalSite().queryService(SecurityMonitor.class,"Conference"));
} // end getStaticMonitor } // end getStaticMonitor

View File

@ -76,7 +76,7 @@ public class EnvEngine
protected SecurityMonitor getStaticMonitor() protected SecurityMonitor getStaticMonitor()
{ {
return engine.env_getSecurityMonitor(EngineBackend.SM_GLOBAL); return (SecurityMonitor)(globalsite.queryService(SecurityMonitor.class));
} // end getStaticMonitor } // end getStaticMonitor

View File

@ -11,7 +11,7 @@
* *
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>, * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
*/ */
@ -60,7 +60,7 @@ public class EnvUser extends EnvEngine
{ {
super(parent); super(parent);
this.user = user; this.user = user;
this.sm = getEngine().env_getSecurityMonitor(EngineBackend.SM_GLOBAL); this.sm = (SecurityMonitor)(getGlobalSite().queryService(SecurityMonitor.class));
} // end constructor } // end constructor
@ -213,7 +213,8 @@ public class EnvUser extends EnvEngine
public final Role getCommunityDefaultRole(String symbol) public final Role getCommunityDefaultRole(String symbol)
{ {
return getEngine().env_getSecurityMonitor(EngineBackend.SM_COMMUNITY).getDefaultRole(symbol); SecurityMonitor smon = (SecurityMonitor)(getGlobalSite().queryService(SecurityMonitor.class,"Community"));
return smon.getDefaultRole(symbol);
} // end getCommunityDefaultRole } // end getCommunityDefaultRole

View File

@ -27,6 +27,8 @@ import com.silverwrist.venice.except.*;
import com.silverwrist.venice.htmlcheck.*; import com.silverwrist.venice.htmlcheck.*;
import com.silverwrist.venice.htmlcheck.dict.*; import com.silverwrist.venice.htmlcheck.dict.*;
import com.silverwrist.venice.htmlcheck.filters.*; import com.silverwrist.venice.htmlcheck.filters.*;
import com.silverwrist.venice.security.*;
import com.silverwrist.venice.svc.*;
import com.silverwrist.venice.svc.internal.GlobalSite; import com.silverwrist.venice.svc.internal.GlobalSite;
import com.silverwrist.venice.util.ServiceProvider; import com.silverwrist.venice.util.ServiceProvider;
import com.silverwrist.venice.util.MailSend; import com.silverwrist.venice.util.MailSend;
@ -52,6 +54,7 @@ public class GlobalSiteImpl implements GlobalSite
private javax.mail.Session mailsession = null; // email session object private javax.mail.Session mailsession = null; // email session object
private StockMessages stock_messages = null; // stock messages holder private StockMessages stock_messages = null; // stock messages holder
private HashMap html_checkers = new HashMap(); // HTML checkers private HashMap html_checkers = new HashMap(); // HTML checkers
private SecurityMonitorEnvironment sm_env; // security monitor environment
/*-------------------------------------------------------------------------------- /*--------------------------------------------------------------------------------
* Constructor * Constructor
@ -117,7 +120,8 @@ public class GlobalSiteImpl implements GlobalSite
// Get the <html-checker/> section. // Get the <html-checker/> section.
sect = loader.configGetSubSection(config_h,"html-checker"); sect = loader.configGetSubSection(config_h,"html-checker");
NodeList nl = sect.getChildNodes(); NodeList nl = sect.getChildNodes();
for (int i=0; i<nl.getLength(); i++) int i;
for (i=0; i<nl.getLength(); i++)
{ // get each node in turn and test to see if it's an element { // get each node in turn and test to see if it's an element
Node n = nl.item(i); Node n = nl.item(i);
if (n.getNodeType()==Node.ELEMENT_NODE) if (n.getNodeType()==Node.ELEMENT_NODE)
@ -134,6 +138,21 @@ public class GlobalSiteImpl implements GlobalSite
intermediate_map.clear(); // cut all extra references intermediate_map.clear(); // cut all extra references
// Get the <security/> section.
sect = loader.configGetSubSection(config_h,"security");
// Load the security monitors.
sm_env = new SecurityMonitorEnvironment();
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
new StaticSecurityMonitor((Element)n,sm_env);
} // end for
} // end class GlobalSiteImpl } // end class GlobalSiteImpl
/*-------------------------------------------------------------------------------- /*--------------------------------------------------------------------------------
@ -364,6 +383,10 @@ public class GlobalSiteImpl implements GlobalSite
return datapool; return datapool;
if (klass==MailSend.class) if (klass==MailSend.class)
return new BaseMailSend(this,email_props,mailsession); return new BaseMailSend(this,email_props,mailsession);
if (klass==SecurityMonitorEnvironment.class)
return sm_env;
if (klass==SecurityMonitor.class)
return sm_env.getMonitor("Global");
throw new NoSuchServiceException("GlobalSite",klass); throw new NoSuchServiceException("GlobalSite",klass);
} // end queryService } // end queryService
@ -384,6 +407,7 @@ public class GlobalSiteImpl implements GlobalSite
} // end catch } // end catch
} // end if } // end if
if (klass==HTMLCheckerConfig.class) if (klass==HTMLCheckerConfig.class)
{ // get the HTML Checker config { // get the HTML Checker config
Object rc = html_checkers.get(serviceid); Object rc = html_checkers.get(serviceid);
@ -402,6 +426,15 @@ public class GlobalSiteImpl implements GlobalSite
} // end if } // end if
if (klass==SecurityMonitor.class)
{ // get a security monitor from the environment
SecurityMonitor rc = sm_env.getMonitor(serviceid);
if (rc==null)
throw new NoSuchServiceException("GlobalSite",klass,serviceid);
return rc;
} // end if
return this.queryService(klass); return this.queryService(klass);
} // end queryService } // end queryService
@ -431,8 +464,18 @@ public class GlobalSiteImpl implements GlobalSite
public void shutdown() public void shutdown()
{ {
engine = null;
if (datapool!=null) if (datapool!=null)
datapool.closeAllConnections(); datapool.closeAllConnections();
datapool = null;
email_props = null;
mailsession = null;
stock_messages = null;
html_checkers.clear();
html_checkers = null;
if (sm_env!=null)
sm_env.shutdown();
sm_env = null;
} // end shutdown } // end shutdown

View File

@ -11,7 +11,7 @@
* *
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>, * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
*/ */
@ -77,4 +77,13 @@ public final class SecurityMonitorEnvironment
} // end storeMonitor } // end storeMonitor
public final void shutdown()
{
map.clear();
map = null;
root = null;
} // end shutdown
} // end class SecurityMonitorEnvironment } // end class SecurityMonitorEnvironment