01: /*
02:
03: This software is OSI Certified Open Source Software.
04: OSI Certified is a certification mark of the Open Source Initiative.
05:
06: The license (Mozilla version 1.0) can be read at the MMBase site.
07: See http://www.MMBase.org/license
08:
09: */
10: package org.mmbase.security;
11:
12: import org.mmbase.util.ResourceWatcher;
13:
14: import org.mmbase.util.logging.Logger;
15: import org.mmbase.util.logging.Logging;
16:
17: /**
18: * Both Authorization and Authentication are configurable.
19: * This class provides the shared functionality for that.
20: *
21: * @author Eduard Witteveen
22: * @author Michiel Meeuwissen
23: * @version $Id: Configurable.java,v 1.13 2007/07/25 06:47:11 michiel Exp $
24: * @since MMBase-1.7
25: */
26: public abstract class Configurable {
27: private static final Logger log = Logging
28: .getLoggerInstance(Configurable.class);
29:
30: /**
31: * The SecurityManager, which created this instance
32: */
33: protected MMBaseCop manager;
34:
35: /**
36: * This specific security configuration file. The file is absolute. Might be
37: * null if the implementation does not have its own configuruation file.
38: * @since MMBase-1.8
39: */
40: protected String configResource; // relative to securityLoader
41:
42: /**
43: * This filewatcher checks the configuration file for changes.
44: */
45: protected ResourceWatcher configWatcher;
46:
47: /**
48: * The method which initialized an instance of this class. This method cannot be be overrided.
49: * This methods sets the member variables of this object and then
50: * calls the method load();
51: * @param manager The class that created this instance.
52: * @param configWatcher checks the files for changes
53: * @param configPath The url which contains the config information for the authorization (e.g. context/config.xml). Or null (if configured to be "")
54: * @see #load
55: */
56: public final void load(MMBaseCop manager,
57: ResourceWatcher configWatcher, String configPath) {
58: if (log.isDebugEnabled()) {
59: log.debug("Calling load() with as config file:"
60: + configPath);
61: }
62: this .manager = manager;
63: this .configWatcher = configWatcher;
64:
65: configWatcher.setDelay(10 * 1000);
66:
67: if (configPath != null && !configPath.equals("")) {
68: if (configPath.startsWith("/")) {
69: configResource = "file://" + configPath;
70: } else {
71: configResource = configPath;
72: }
73:
74: configWatcher.add(configResource);
75: }
76:
77: load();
78: }
79:
80: /**
81: * This method should be overrided by an extending class. It should further initialize the
82: * class. It can optionally retrieve settings from the general security configuration file
83: * (available as the 'configResource' member). Security implementations with complicated
84: * configuration would typically retrieve a path to their own configuration file only.
85: */
86: protected abstract void load();
87: }
|