ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/componentmanager/ReferenceManager.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/componentmanager/ReferenceManager.java (file contents):
Revision 1.6 by ajm, Tue Dec 12 17:13:22 2000 UTC vs.
Revision 1.18 by tdb, Tue May 21 16:47:17 2002 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * http://www.i-scream.org.uk
4 + * Copyright (C) 2000-2002 i-scream
5 + *
6 + * This program is free software; you can redistribute it and/or
7 + * modify it under the terms of the GNU General Public License
8 + * as published by the Free Software Foundation; either version 2
9 + * of the License, or (at your option) any later version.
10 + *
11 + * This program is distributed in the hope that it will be useful,
12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 + * GNU General Public License for more details.
15 + *
16 + * You should have received a copy of the GNU General Public License
17 + * along with this program; if not, write to the Free Software
18 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 + */
20 +
21   //---PACKAGE DECLARATION---
22 < package uk.ac.ukc.iscream.util;
22 > package uk.org.iscream.cms.server.componentmanager;
23  
24   //---IMPORTS---
25   import org.omg.CORBA.ORB;
26   import org.omg.CosNaming.*;
27   import org.omg.PortableServer.*;
28 < import uk.ac.ukc.iscream.core.*;
28 > import uk.org.iscream.cms.server.core.*;
29 > import uk.org.iscream.cms.server.util.*;
30  
31   /**
32   * This class returns references for global system objects.
# Line 33 | Line 54 | public class ReferenceManager {
54   //---STATIC METHODS---
55  
56      /**
36     * TO BE REMOVED ONCE CODE TIDY HAS COMPLETED!
37     * @deprecated should know longer use this method to construct a refman
38     */
39    public static ReferenceManager init(String[] args, String name) throws AlreadyInitialisedException {
40        System.out.println("LEGACY CALL - SORT THIS OUT! name=" + name);
41        if (_instance != null) {
42            throw new AlreadyInitialisedException("init has already been called");
43        }
44        _instance = new ReferenceManager(args, name);
45        return _instance;
46    }
47    
48    /**
57       * This returns a reference to the single instance of the
58       * ReferenceManager.
59       *
# Line 54 | Line 62 | public class ReferenceManager {
62       *
63       * @return a reference to the ReferenceManager
64       */
65 <    public static ReferenceManager getInstance() {
65 >    public synchronized static ReferenceManager getInstance() {
66          if (_instance == null) {
67              _instance = new ReferenceManager();
68          }
# Line 70 | Line 78 | public class ReferenceManager {
78      private ReferenceManager() {
79          _orb = ORB.init(new String[] {}, null);
80      }
73    
74    /**
75     * TO BE REMOVED ONCE CODE TIDY HAS COMPLETED!
76     * @deprecated should know longer use this method to construct a refman
77     */
78    private ReferenceManager(String[] args, String name) {
79        System.out.println("LEGACY CALL - SORT THIS OUT! name=" + name);
80        _orb = ORB.init(args, null);
81        _name = name;
82    }
81  
82   //---PUBLIC METHODS---
83  
84      /**
85       * Obtains a CORBA reference through the naming service
86       * for the named object.
87 <     * This will throw a Error if there is an error
87 >     * Calls the dieWithError() if any exceptions happen!
88       *
89       * @param name the name of the CORBA object to resolve
90       *
# Line 103 | Line 101 | public class ReferenceManager {
101              dieWithError("\nCRITICAL:Invalid Name - when resolving reference to " + name + "!\n" +
102                                "         Please check with your CORBA naming service provider.");
103          } catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
104 <            dieWithError("\nCRITICAL:Not Found - when resolving reference to " + name + "!\n" +
104 >            recoverWithError("\nCRITICAL:Not Found - when resolving reference to " + name + "!\n" +
105                                "         Please check that this component is running.");
106          }
107          return objRef;
# Line 112 | Line 110 | public class ReferenceManager {
110      /**
111       * Binds a given servant with the given name
112       * to the naming service.
113 <     * Calls the dieWithError()!
113 >     * Calls the dieWithError() if any exceptions happen!
114       *
115       * @param objRef a reverence to the servant object
116       * @param name the name to bind to the naming service with
# Line 133 | Line 131 | public class ReferenceManager {
131              dieWithError("\nCRITICAL:Naming Service Cannot Proceed - when binding " + name + "!\n" +
132                                "         Please check with your CORBA naming service provider.");
133          } catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
134 <            dieWithError("\nCRITICAL:Naming Service Not Found - when binding " + name + "!\n" +
134 >            recoverWithError("\nCRITICAL:Naming Service Not Found - when binding " + name + "!\n" +
135                                "         Please check with your CORBA naming service provider.");
136          } catch (org.omg.CosNaming.NamingContextPackage.AlreadyBound e) {
137              dieWithError("\nCRITICAL:Already Bound - when binding " + name + "!\n" +
# Line 143 | Line 141 | public class ReferenceManager {
141      
142      /**
143       * Activates the POA
144 <     * This will throw a Error if there is an error
144 >     * Calls the dieWithError() if any exceptions happen!
145       */
146      public void activatePOA() {
147          try {
# Line 158 | Line 156 | public class ReferenceManager {
156       * Overrides the {@link java.lang.Object#toString() Object.toString()}
157       * method to provide clean logging (every class should have this).
158       *
159 <     * This uses the uk.ac.ukc.iscream.util.NameFormat class
159 >     * This uses the uk.org.iscream.cms.server.util.NameFormat class
160       * to format the toString()
161       *
162       * @return the name of this class and its CVS revision
163       */
164      public String toString() {
165          return FormatName.getName(
166 <            null,
167 <            this.getClass().getName(),
166 >            _name,
167 >            getClass().getName(),
168              REVISION);
169      }
170  
# Line 176 | Line 174 | public class ReferenceManager {
174       * If there are any CORBA errors this method is called with the
175       * error message.
176       *
177 +     * The exception this throws is generic to CORBA communication
178 +     * problems, this is a Runtime exception and is typically only
179 +     * explicitly caught in the ComponentManager for the current VM
180 +     * The ComponentManager can then decide what course of action to
181 +     * take.
182 +     *
183 +     * Also, if it can, it will log the message with the logger.
184 +     *
185 +     * @param message the error message to die with
186 +     */
187 +    private void recoverWithError(String message) throws ComponentCORBAException {
188 +        if (_logger != null) {
189 +            _logger.write(toString(), Logger.WARNING, "component CORBA error - " + message);
190 +        }
191 +        throw new ComponentCORBAException(message);
192 +    }
193 +
194 +
195 +    /**
196 +     * If there are any CORBA errors this method is called with the
197 +     * error message.
198 +     *
199       * Currently this prints the error, on the local err stream.  Will
200       * print to the logger if one is available.
201       *
# Line 193 | Line 213 | public class ReferenceManager {
213          System.exit(1);
214      }
215  
216 +
217 +
218   //---ACCESSOR/MUTATOR METHODS---
219  
220      /**
# Line 206 | Line 228 | public class ReferenceManager {
228  
229      /**
230       * Returns a reference to the Root POA
231 <     * This will throw a Error if there is an error
231 >     * Calls the dieWithError() if any exceptions happen!
232       *
233       * @return the reference this class holds
234       */
# Line 226 | Line 248 | public class ReferenceManager {
248      
249      /**
250       * Returns a reference to the Naming Service
251 <     * This will throw a Error if there is an error
251 >     * Calls the dieWithError() if any exceptions happen!
252       *
253       * @return the reference this class holds
254       */
# Line 251 | Line 273 | public class ReferenceManager {
273      
274      /**
275       * Returns a reference to the configuration manager
276 <     * This will throw a Error if there is an error
276 >     * Calls the dieWithError() if any exceptions happen!
277       *
278       * @return the reference this class holds
279       */
# Line 279 | Line 301 | public class ReferenceManager {
301          }
302          return _logger;
303      }
282
283    /**
284     * Sets the reference to the name
285     * TO BE REMOVED ONCE CODE TIDY HAS COMPLETED!
286     * @deprecated not stored in the refman any more - see Template.class
287     * @param the new name
288     */
289    public void setName(String name) {
290        System.out.println("LEGACY CALL - SORT THIS OUT! name=" + name);
291        _name = name;
292    }
304      
294    /**
295     * Returns a reference to the name
296     * TO BE REMOVED ONCE CODE TIDY HAS COMPLETED!
297     * @deprecated not stored in the refman any more - see Template.class
298     * @return the reference this class holds
299     */
300    public String getName() {
301        System.out.println("LEGACY CALL - SORT THIS OUT! name=" + _name);
302        return _name;
303    }
304
305   //---ATTRIBUTES---
306      
307      /**
# Line 330 | Line 330 | public class ReferenceManager {
330      private Logger _logger;
331      
332      /**
333 <     * The name
334 <     * TO BE REMOVED ONCE CODE TIDY HAS COMPLETED!
335 <     * @deprecated not stored in the refman any more - see Template.class
333 >     * This is the friendly identifier of the
334 >     * component this class is running in.
335 >     * eg, a Filter may be called "filter1",
336 >     * If this class does not have an owning
337 >     * component,  a name from the configuration
338 >     * can be placed here.  This name could also
339 >     * be changed to null for utility classes.
340       */
341 <    private String _name;
341 >    private String _name = null;
342  
343   //---STATIC ATTRIBUTES---
344      
345      /**
346       * A reference to the single instance of this class
347       */
348 <    private static ReferenceManager _instance;
348 >    private static ReferenceManager _instance = null;
349   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines