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.18
Committed: Tue Mar 13 20:56:01 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.17: +4 -4 lines
Log Message:
Now has correct code for disconnecting from the ORB.

We were using the ORB to do the disconnect however it appears this is deprecated.  Thus we now use the new method of deactivating from the POA.

File Contents

# User Rev Content
1 tdb 1.11 //---PACKAGE DECLARATION---
2 ajm 1.13 package uk.ac.ukc.iscream.core;
3 tdb 1.11
4     //---IMPORTS---
5 ajm 1.14 import uk.ac.ukc.iscream.util.*;
6 tdb 1.15 import uk.ac.ukc.iscream.componentmanager.*;
7 ajm 1.14 import java.util.Properties;
8     import java.util.Date;
9 tdb 1.11 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 ajm 1.12 * the ConfigurationManager, which will locate their config,
18 tdb 1.11 * 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 tdb 1.16 * @author $Author: tdb1 $
25 tdb 1.18 * @version $Id: ConfigurationServant.java,v 1.17 2001/03/13 19:14:15 tdb1 Exp $
26 tdb 1.11 */
27     class ConfigurationServant extends ConfigurationPOA {
28    
29     //---FINAL ATTRIBUTES---
30    
31     /**
32     * The current CVS revision of this class
33     */
34 tdb 1.18 public final String REVISION = "$Revision: 1.17 $";
35 tdb 1.11
36     //---STATIC METHODS---
37    
38     //---CONSTRUCTORS---
39    
40     /**
41     * Creates a new ConfigurationServant taking a hook
42 ajm 1.12 * to a Properties object containing the configuration.
43 tdb 1.11 *
44 ajm 1.12 * @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 tdb 1.11 */
49 ajm 1.14 ConfigurationServant(Properties properties, String fileList, long lastModified) {
50 ajm 1.12 // assign local variables
51 tdb 1.11 _properties = properties;
52     _lastModified = lastModified;
53     _fileList = fileList;
54 ajm 1.14 _logger.write(toString(), Logger.SYSINIT, "created");
55 tdb 1.11 String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(new Date(getLastModified()));
56 ajm 1.14 _logger.write(toString(), Logger.SYSMSG, "last modified - " + date);
57     _logger.write(toString(), Logger.DEBUG, "file list - " + _fileList);
58 tdb 1.11 }
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 ajm 1.14 * This uses the uk.ac.ukc.iscream.util.FormatName class
78     * to format the toString()
79     *
80 tdb 1.11 * @return the name of this class and its CVS revision
81     */
82     public String toString() {
83 ajm 1.14 return FormatName.getName(
84     _name,
85     getClass().getName(),
86     REVISION);
87 tdb 1.11 }
88 tdb 1.17
89     /**
90     * Unhooks this Configuration object from the ORB
91     */
92 tdb 1.16 public void disconnect() {
93     try {
94 tdb 1.18 byte[] oid = _refman.getRootPOA().servant_to_id(this);
95     _refman.getRootPOA().deactivate_object(oid);
96 tdb 1.16 } catch(Exception e) {
97     _logger.write(this.toString(), Logger.ERROR, "disconnect failed: "+e);
98     }
99     }
100    
101    
102 tdb 1.11 //---PRIVATE METHODS---
103    
104 ajm 1.12 /**
105     * Overridden for debugging purposes
106     * to see when an instance of this class
107     * is destroyed
108     */
109 tdb 1.11 protected void finalize() throws Throwable {
110 ajm 1.14 _logger.write(this.toString(), Logger.DEBUG, "finalized");
111 tdb 1.11 }
112    
113     //---ACCESSOR/MUTATOR METHODS---
114    
115     /**
116     * Returns the date stamp of the configuration file
117     * this object is using.
118     *
119     * @return the last modified time for the file
120     */
121     public long getLastModified() {
122     return _lastModified;
123     }
124    
125 ajm 1.12 /**
126     * Returns the list of files used to build the Properties
127     * this object is using.
128     *
129     * @return the list of files
130     */
131 tdb 1.11 public String getFileList() {
132     return _fileList;
133     }
134    
135     //---ATTRIBUTES---
136    
137     /**
138     * The properties object that this class provides a CORBA interface to
139     */
140     private Properties _properties = new Properties();
141    
142     /**
143 ajm 1.14 * This holds a reference to the
144     * system logger that is being used.
145 tdb 1.11 */
146 ajm 1.14 private Logger _logger = ReferenceManager.getInstance().getLogger();
147 tdb 1.16
148     /**
149     * A reference to the reference manager in use
150     */
151     private ReferenceManager _refman = ReferenceManager.getInstance();
152 ajm 1.14
153     /**
154     * This is the friendly identifier of the
155     * component this class is running in.
156     * eg, a Filter may be called "filter1",
157     * If this class does not have an owning
158     * component, a name from the configuration
159     * can be placed here. This name could also
160     * be changed to null for utility classes.
161     */
162     private String _name = Core.NAME;
163 tdb 1.11
164     /**
165     * The date stamp of the configuration file
166     * this object is using
167     */
168     private long _lastModified;
169 ajm 1.12
170     /**
171     * The list of files that were used to build this configuration
172     */
173 tdb 1.11 private String _fileList;
174    
175     //---STATIC ATTRIBUTES---
176    
177     }