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

Comparing projects/cms/source/util/uk/org/iscream/cms/util/ReferenceManager.java (file contents):
Revision 1.5 by ajm, Mon Dec 11 16:38:09 2000 UTC vs.
Revision 1.6 by ajm, Tue Dec 12 17:13:22 2000 UTC

# Line 33 | Line 33 | public class ReferenceManager {
33   //---STATIC METHODS---
34  
35      /**
36 <     * This creates the single instance of the ReferenceManager by
37 <     * calling the private constructor.  If it is called twice,
38 <     * it detects an instance already exits and throws an exception.
39 <     *
40 <     * @param args the args to be passed to the ORB
41 <     * @param name the name of the component that will use this singleton
42 <     *
43 <     * @return a reference to the ReferenceManager
44 <     *
45 <     * @throws AlreadyInitialisedException if this method has already been called
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          }
# Line 56 | Line 49 | public class ReferenceManager {
49       * This returns a reference to the single instance of the
50       * ReferenceManager.
51       *
52 <     * @return a reference to the ReferenceManager
52 >     * This creates the single instance of the ReferenceManager
53 >     * if it does not exist by calling the private constructor.
54       *
55 <     * @throws NotInitialisedException if the reference manager has not been initialised
55 >     * @return a reference to the ReferenceManager
56       */
57 <    public static ReferenceManager getInstance() throws NotInitialisedException {
57 >    public static ReferenceManager getInstance() {
58          if (_instance == null) {
59 <            throw new NotInitialisedException("attempt to obtain reference when not initialised");
59 >            _instance = new ReferenceManager();
60          }
61          return _instance;
62      }
# Line 72 | Line 66 | public class ReferenceManager {
66      /**
67       * This is a private constructor
68       * This ensures that the system performs according to a Singleton design pattern
75     *
76     * @param args the args to be passed to the ORB
77     * @param name the name of the component that will use this singleton
69       */
70 +    private ReferenceManager() {
71 +        _orb = ORB.init(new String[] {}, null);
72 +    }
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      }
# Line 97 | Line 97 | public class ReferenceManager {
97          try {
98              objRef = getNS().resolve(getNS().to_name(name));
99          } catch (org.omg.CosNaming.NamingContextPackage.CannotProceed e) {
100 <            throw new Error("\nCRITICAL:Naming Service Cannot Proceed - when resolving reference to " + name + "!\n" +
100 >            dieWithError("\nCRITICAL:Naming Service Cannot Proceed - when resolving reference to " + name + "!\n" +
101                                "         Please check with your CORBA naming service provider.");
102          } catch (org.omg.CosNaming.NamingContextPackage.InvalidName e) {
103 <            throw new Error("\nCRITICAL:Invalid Name - when resolving reference to " + name + "!\n" +
103 >            dieWithError("\nCRITICAL:Invalid Name - when resolving reference to " + name + "!\n" +
104                                "         Please check with your CORBA naming service provider.");
105          } catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
106 <            throw new Error("\nCRITICAL:Not Found - when resolving reference to " + name + "!\n" +
106 >            dieWithError("\nCRITICAL:Not Found - when resolving reference to " + name + "!\n" +
107                                "         Please check that this component is running.");
108          }
109          return objRef;
# Line 112 | Line 112 | public class ReferenceManager {
112      /**
113       * Binds a given servant with the given name
114       * to the naming service.
115 <     * This will throw a Error if there is an error
115 >     * Calls the dieWithError()!
116       *
117       * @param objRef a reverence to the servant object
118       * @param name the name to bind to the naming service with
# Line 121 | Line 121 | public class ReferenceManager {
121          try {
122              getNS().bind(getNS().to_name(name), getRootPOA().servant_to_reference(objRef));
123          } catch (org.omg.PortableServer.POAPackage.WrongPolicy e) {
124 <            throw new Error("\nCRITICAL:Wrong POA Policy - when binding " + name + "!\n" +
124 >            dieWithError("\nCRITICAL:Wrong POA Policy - when binding " + name + "!\n" +
125                                "         This indicates an error with your ORB.");
126          } catch (org.omg.PortableServer.POAPackage.ServantNotActive e) {
127 <            throw new Error("\nCRITICAL:ServantNotActive - when binding " + name + "!\n" +
127 >            dieWithError("\nCRITICAL:ServantNotActive - when binding " + name + "!\n" +
128                                "         This indicates an error with your ORB.");
129          } catch (org.omg.CosNaming.NamingContextPackage.InvalidName e) {
130 <            throw new Error("\nCRITICAL:Invalid Name - when binding " + name + "!\n" +
130 >            dieWithError("\nCRITICAL:Invalid Name - when binding " + name + "!\n" +
131                                "         Please check with your CORBA naming service provider.");
132          } catch (org.omg.CosNaming.NamingContextPackage.CannotProceed e) {
133 <            throw new Error("\nCRITICAL:Naming Service Cannot Proceed - when binding " + name + "!\n" +
133 >            dieWithError("\nCRITICAL:Naming Service Cannot Proceed - when binding " + name + "!\n" +
134                                "         Please check with your CORBA naming service provider.");
135          } catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
136 <            throw new Error("\nCRITICAL:Naming Service Not Found - when binding " + name + "!\n" +
136 >            dieWithError("\nCRITICAL:Naming Service Not Found - when binding " + name + "!\n" +
137                                "         Please check with your CORBA naming service provider.");
138          } catch (org.omg.CosNaming.NamingContextPackage.AlreadyBound e) {
139 <            throw new Error("\nCRITICAL:Already Bound - when binding " + name + "!\n" +
139 >            dieWithError("\nCRITICAL:Already Bound - when binding " + name + "!\n" +
140                                "         Another component with this name is already running.");
141          }
142      }
# Line 149 | Line 149 | public class ReferenceManager {
149          try {
150              getRootPOA().the_POAManager().activate();
151          } catch (org.omg.PortableServer.POAManagerPackage.AdapterInactive e) {
152 <            throw new Error("\nCRITICAL:POA Set Inactive - when trying to activate POA!\n" +
152 >            dieWithError("\nCRITICAL:POA Set Inactive - when trying to activate POA!\n" +
153                                "         This indicates an error with your ORB.");
154          }
155      }
# Line 158 | Line 158 | public class ReferenceManager {
158       * Overrides the {@link java.lang.Object#toString() Object.toString()}
159       * method to provide clean logging (every class should have this).
160       *
161 +     * This uses the uk.ac.ukc.iscream.util.NameFormat class
162 +     * to format the toString()
163 +     *
164       * @return the name of this class and its CVS revision
165       */
166      public String toString() {
167 <        return getName() + "{" + getClass().getName() + "}(" + REVISION.substring(11, REVISION.length() - 2) + ")";
167 >        return FormatName.getName(
168 >            null,
169 >            this.getClass().getName(),
170 >            REVISION);
171      }
172  
173   //---PRIVATE METHODS---
174  
175 +    /**
176 +     * If there are any CORBA errors this method is called with the
177 +     * error message.
178 +     *
179 +     * Currently this prints the error, on the local err stream.  Will
180 +     * print to the logger if one is available.
181 +     *
182 +     * ANY CALLS TO THIS METHOD CAUSE
183 +     * THE SYSTEM TO EXIT WITH A NON
184 +     * ZERO CODE!
185 +     *
186 +     * @param message the error message to die with
187 +     */
188 +    private void dieWithError(String message) {
189 +        System.err.println(message);
190 +        if (_logger != null) {
191 +            _logger.write(toString(), Logger.FATAL, message);
192 +        }
193 +        System.exit(1);
194 +    }
195 +
196   //---ACCESSOR/MUTATOR METHODS---
197  
198      /**
# Line 189 | Line 216 | public class ReferenceManager {
216              try {
217                  objRef = getORB().resolve_initial_references("RootPOA");
218              } catch (org.omg.CORBA.ORBPackage.InvalidName e) {
219 <                throw new Error("\nCRITICAL:Unable to resolve reference to the RootPOA!\n" +
219 >                dieWithError("\nCRITICAL:Unable to resolve reference to the RootPOA!\n" +
220                                    "         This indicates an error with your ORB.");
221              }
222              _rootPOA = POAHelper.narrow(objRef);
# Line 209 | Line 236 | public class ReferenceManager {
236              try {
237                  objRef = getORB().resolve_initial_references("NameService");
238              } catch (org.omg.CORBA.ORBPackage.InvalidName e) {
239 <                throw new Error("\nCRITICAL:Unable to resolve reference to the Naming Service!\n" +
239 >                dieWithError("\nCRITICAL:Unable to resolve reference to the Naming Service!\n" +
240                                    "         Please check with your CORBA naming service provider.");
241              }
242              _ns = NamingContextExtHelper.narrow(objRef);
243          }
244          // check we managed to talk to the naming service
245          if (_ns == null) {
246 <            throw new Error("\nCRITICAL:Unable to resolve reference to the Naming Service!\n" +
246 >            dieWithError("\nCRITICAL:Unable to resolve reference to the Naming Service!\n" +
247                                "         Please check with your CORBA naming service provider.");
248          }
249          return _ns;
# Line 234 | Line 261 | public class ReferenceManager {
261          }
262          // check we managed to talk to the configuration manager
263          if (_cm == null) {
264 <            throw new Error("\nCRITICAL:Unable to resolve reference to the Configuration Manager!\n" +
264 >            dieWithError("\nCRITICAL:Unable to resolve reference to the Configuration Manager!\n" +
265                                "         Please check with your CORBA naming service provider.");
266          }
267          return _cm;
# Line 255 | Line 282 | public class ReferenceManager {
282  
283      /**
284       * Sets the reference to the name
285 <     *
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      }
293      
294      /**
295       * Returns a reference to the name
296 <     *
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  
# Line 300 | Line 331 | public class ReferenceManager {
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
336       */
337      private String _name;
338  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines