ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/core/ConfigurationServant.java
Revision: 1.16
Committed: Tue Mar 13 19:05:22 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.15: +18 -3 lines
Log Message:
Provides a disconnect() method to unhook the object from the ORB.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.core;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.util.*;
6 import uk.ac.ukc.iscream.componentmanager.*;
7 import java.util.Properties;
8 import java.util.Date;
9 import java.text.DateFormat;
10
11 /**
12 * An implementation of the Configuration IDL
13 * This class allows i-scream modules to read and even
14 * set their configuration from a central location.
15 *
16 * When classes want their configuration, they contact
17 * the ConfigurationManager, which will locate their config,
18 * open it and pass it to a Configuration object which is
19 * then passed back to the calling class.
20 *
21 * Essentially this class behaves in a similar fashion
22 * to the java.util.Properties class.
23 *
24 * @author $Author: tdb1 $
25 * @version $Id: ConfigurationServant.java,v 1.15 2001/01/18 23:10:44 tdb1 Exp $
26 */
27 class ConfigurationServant extends ConfigurationPOA {
28
29 //---FINAL ATTRIBUTES---
30
31 /**
32 * The current CVS revision of this class
33 */
34 public final String REVISION = "$Revision: 1.15 $";
35
36 //---STATIC METHODS---
37
38 //---CONSTRUCTORS---
39
40 /**
41 * Creates a new ConfigurationServant taking a hook
42 * to a Properties object containing the configuration.
43 *
44 * @param properties a Properties object that contains the full properties for this configuration
45 * @param fileList the list of config files used to build this configuration
46 * @param lastModified the most recent last modified value for the file list
47 * @param logRef a reference to the logger system
48 */
49 ConfigurationServant(Properties properties, String fileList, long lastModified) {
50 // assign local variables
51 _properties = properties;
52 _lastModified = lastModified;
53 _fileList = fileList;
54 _logger.write(toString(), Logger.SYSINIT, "created");
55 String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(new Date(getLastModified()));
56 _logger.write(toString(), Logger.SYSMSG, "last modified - " + date);
57 _logger.write(toString(), Logger.DEBUG, "file list - " + _fileList);
58 }
59
60 //---PUBLIC METHODS---
61
62 /**
63 * A wrapper for java.util.Properties.getProperty
64 * When given a key it returns the value of that key
65 * ie, key = value
66 *
67 * @param key the key the value of which is wanted
68 */
69 public String getProperty(String key) {
70 return _properties.getProperty(key);
71 }
72
73 /**
74 * Overrides the {@link java.lang.Object#toString() Object.toString()}
75 * method to provide clean logging (every class should have this).
76 *
77 * This uses the uk.ac.ukc.iscream.util.FormatName class
78 * to format the toString()
79 *
80 * @return the name of this class and its CVS revision
81 */
82 public String toString() {
83 return FormatName.getName(
84 _name,
85 getClass().getName(),
86 REVISION);
87 }
88
89 public void disconnect() {
90 try {
91 org.omg.CORBA.Object objRef = _refman.getRootPOA().servant_to_reference(this);
92 _refman.getORB().disconnect(objRef);
93 } catch(Exception e) {
94 _logger.write(this.toString(), Logger.ERROR, "disconnect failed: "+e);
95 }
96 }
97
98
99 //---PRIVATE METHODS---
100
101 /**
102 * Overridden for debugging purposes
103 * to see when an instance of this class
104 * is destroyed
105 */
106 protected void finalize() throws Throwable {
107 _logger.write(this.toString(), Logger.DEBUG, "finalized");
108 }
109
110 //---ACCESSOR/MUTATOR METHODS---
111
112 /**
113 * Returns the date stamp of the configuration file
114 * this object is using.
115 *
116 * @return the last modified time for the file
117 */
118 public long getLastModified() {
119 return _lastModified;
120 }
121
122 /**
123 * Returns the list of files used to build the Properties
124 * this object is using.
125 *
126 * @return the list of files
127 */
128 public String getFileList() {
129 return _fileList;
130 }
131
132 //---ATTRIBUTES---
133
134 /**
135 * The properties object that this class provides a CORBA interface to
136 */
137 private Properties _properties = new Properties();
138
139 /**
140 * This holds a reference to the
141 * system logger that is being used.
142 */
143 private Logger _logger = ReferenceManager.getInstance().getLogger();
144
145 /**
146 * A reference to the reference manager in use
147 */
148 private ReferenceManager _refman = ReferenceManager.getInstance();
149
150 /**
151 * This is the friendly identifier of the
152 * component this class is running in.
153 * eg, a Filter may be called "filter1",
154 * If this class does not have an owning
155 * component, a name from the configuration
156 * can be placed here. This name could also
157 * be changed to null for utility classes.
158 */
159 private String _name = Core.NAME;
160
161 /**
162 * The date stamp of the configuration file
163 * this object is using
164 */
165 private long _lastModified;
166
167 /**
168 * The list of files that were used to build this configuration
169 */
170 private String _fileList;
171
172 //---STATIC ATTRIBUTES---
173
174 }