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.1 by ajm, Thu Nov 30 00:54:27 2000 UTC vs.
Revision 1.5 by ajm, Mon Dec 11 16:38:09 2000 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 < package uk.ac.ukc.iscream.refman;
2 > package uk.ac.ukc.iscream.util;
3  
4   //---IMPORTS---
5   import org.omg.CORBA.ORB;
# Line 11 | Line 11 | import uk.ac.ukc.iscream.core.*;
11   * This class returns references for global system objects.
12   * This class is used to create and return references to objects
13   * that are required throughout the system.  Most of which
14 < * are CORBA based.  It also handles ORB initialisation.
14 > * are CORBA based.  It also manages the ORB for the component.
15   *
16   * It is a singleton object with a static method to obtain a
17   * reference to it.  This removes the need for passing
# Line 33 | Line 33 | public class ReferenceManager {
33   //---STATIC METHODS---
34  
35      /**
36     * This essentially formats the toString() source for an
37     * object wanting to make a log entry.
38     *
39     * @param source the source of the call
40     * @param rev the CVS revision number of the caller
41     *
42     * @return the formatted string
43    
44    public static String logString(Object source, String rev) {
45        if (_instance == null) {
46            return "unamed{" + source.getClass().getName() + "}(" + rev.substring(11, rev.length() - 2) + ")";
47        }
48        return getInstance().getName() + "{" + source.getClass().getName() + "}(" + rev.substring(11, rev.length() - 2) + ")";
49    }
50 `    */
51
52    /**
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.
# Line 96 | Line 79 | public class ReferenceManager {
79      private ReferenceManager(String[] args, String name) {
80          _orb = ORB.init(args, null);
81          _name = name;
99        getLogger().write(toString(), Logger.SYSINIT, "created");
82      }
83  
84   //---PUBLIC METHODS---
85  
86      /**
87 +     * Obtains a CORBA reference through the naming service
88 +     * for the named object.
89 +     * This will throw a Error if there is an error
90 +     *
91 +     * @param name the name of the CORBA object to resolve
92 +     *
93 +     * @return a reference to the object
94 +     */
95 +    public org.omg.CORBA.Object getCORBARef(String name) {
96 +        org.omg.CORBA.Object objRef = null;
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" +
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" +
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" +
107 +                              "         Please check that this component is running.");
108 +        }
109 +        return objRef;
110 +    }
111 +
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
116 +     *
117 +     * @param objRef a reverence to the servant object
118 +     * @param name the name to bind to the naming service with
119 +     */
120 +    public void bindToOrb(org.omg.PortableServer.Servant objRef, String name) {
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" +
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" +
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" +
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" +
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" +
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" +
140 +                              "         Another component with this name is already running.");
141 +        }
142 +    }
143 +    
144 +    /**
145 +     * Activates the POA
146 +     * This will throw a Error if there is an error
147 +     */
148 +    public void activatePOA() {
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" +
153 +                              "         This indicates an error with your ORB.");
154 +        }
155 +    }
156 +    
157 +    /**
158       * Overrides the {@link java.lang.Object#toString() Object.toString()}
159       * method to provide clean logging (every class should have this).
160       *
# Line 126 | Line 179 | public class ReferenceManager {
179  
180      /**
181       * Returns a reference to the Root POA
182 <     * This will throw a RuntimeException if there is an error
182 >     * This will throw a Error if there is an error
183       *
184       * @return the reference this class holds
185       */
# Line 136 | Line 189 | public class ReferenceManager {
189              try {
190                  objRef = getORB().resolve_initial_references("RootPOA");
191              } catch (org.omg.CORBA.ORBPackage.InvalidName e) {
192 <                throw new RuntimeException("CRITICAL:Unable to resolve reference to the RootPOA!\n" +
193 <                                           "         This indicates an error with your ORB.");
192 >                throw new Error("\nCRITICAL:Unable to resolve reference to the RootPOA!\n" +
193 >                                  "         This indicates an error with your ORB.");
194              }
195              _rootPOA = POAHelper.narrow(objRef);
196          }
# Line 146 | Line 199 | public class ReferenceManager {
199      
200      /**
201       * Returns a reference to the Naming Service
202 <     * This will throw a RuntimeException if there is an error
202 >     * This will throw a Error if there is an error
203       *
204       * @return the reference this class holds
205       */
# Line 156 | Line 209 | public class ReferenceManager {
209              try {
210                  objRef = getORB().resolve_initial_references("NameService");
211              } catch (org.omg.CORBA.ORBPackage.InvalidName e) {
212 <                throw new RuntimeException("CRITICAL:Unable to resolve reference to the Naming Service!\n" +
213 <                                           "         Please check with your CORBA naming service provider.");
212 >                throw new Error("\nCRITICAL:Unable to resolve reference to the Naming Service!\n" +
213 >                                  "         Please check with your CORBA naming service provider.");
214              }
215              _ns = NamingContextExtHelper.narrow(objRef);
216          }
217 +        // check we managed to talk to the naming service
218 +        if (_ns == null) {
219 +            throw new Error("\nCRITICAL:Unable to resolve reference to the Naming Service!\n" +
220 +                              "         Please check with your CORBA naming service provider.");
221 +        }
222          return _ns;
223      }
224      
225      /**
226       * Returns a reference to the configuration manager
227 <     * This will throw a RuntimeException if there is an error
227 >     * This will throw a Error if there is an error
228       *
229       * @return the reference this class holds
230       */
231      public ConfigurationManager getCM() {
232          if (_cm == null) {
233 <            org.omg.CORBA.Object objRef = null;
176 <            try {
177 <                objRef = getNS().resolve(getNS().to_name("iscream.ConfigurationManager"));
178 <            } catch (org.omg.CosNaming.NamingContextPackage.CannotProceed e) {
179 <                throw new RuntimeException("CRITICAL:Cannot Proceed - when resolving reference to iscream.ConfigurationManager!\n" +
180 <                                           "         This indicates an error with your ORB.");
181 <            } catch (org.omg.CosNaming.NamingContextPackage.InvalidName e) {
182 <                throw new RuntimeException("CRITICAL:Invalid Name - when resolving reference to iscream.ConfigurationManager!\n" +
183 <                                           "         This indicates an error with your ORB.");
184 <            } catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
185 <                throw new RuntimeException("CRITICAL:Not Found - when resolving reference to iscream.ConfigurationManager!\n" +
186 <                                           "         Please check that this component is running.");
187 <            }
188 <            _cm = ConfigurationManagerHelper.narrow(objRef);
233 >            _cm = ConfigurationManagerHelper.narrow(getCORBARef("iscream.ConfigurationManager"));
234          }
235 +        // check we managed to talk to the configuration manager
236 +        if (_cm == null) {
237 +            throw new Error("\nCRITICAL:Unable to resolve reference to the Configuration Manager!\n" +
238 +                              "         Please check with your CORBA naming service provider.");
239 +        }
240          return _cm;
241      }
242  
243      /**
244       * Returns a reference to the logger
245 <     * This will throw a RuntimeException if there is an error
245 >     * This will throw a Error if there is an error
246       *
247       * @return the reference this class holds
248       */
249      public Logger getLogger() {
250          if (_logger == null) {
251 <            org.omg.CORBA.Object objRef = null;
202 <            try {
203 <                objRef = getNS().resolve(getNS().to_name("iscream.Logger"));
204 <            } catch (org.omg.CosNaming.NamingContextPackage.CannotProceed e) {
205 <                throw new RuntimeException("CRITICAL:Cannot Proceed - when resolving reference to iscream.Logger!\n" +
206 <                                           "         This indicates an error with your ORB.");
207 <            } catch (org.omg.CosNaming.NamingContextPackage.InvalidName e) {
208 <                throw new RuntimeException("CRITICAL:Invalid Name - when resolving reference to iscream.Logger!\n" +
209 <                                           "         This indicates an error with your ORB.");
210 <            } catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
211 <                throw new RuntimeException("CRITICAL:Not Found - when resolving reference to iscream.Logger!\n" +
212 <                                           "         Please check that this component is running.");
213 <            }
214 <            _logger = LoggerHelper.narrow(objRef);
251 >            _logger = LoggerHelper.narrow(getCORBARef("iscream.Logger"));
252          }
253          return _logger;
254 +    }
255 +
256 +    /**
257 +     * Sets the reference to the name
258 +     *
259 +     * @param the new name
260 +     */
261 +    public void setName(String name) {
262 +        _name = name;
263      }
264      
265      /**

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines