Merge pull request #1551 from DOCGroup/plm_jira_333
[ACE_TAO.git] / TAO / examples / Simulator / DOVEBrowser / PushConsumerFactory.java.JDK1.2
blobb718b984a7f68f2fb7428767bec447453b4d4dd4
1 // ============================================================================
2 //
3 // = FILENAME
4 //    PushConsumerFactory.java
5 //
6 // = AUTHOR
7 //    Michael Kircher (mk1@cs.wustl.edu)
8 //
9 // = DESCRIPTION
10 //   This is the administor/factory for a PushConsumer.
12 // ============================================================================
15 public class PushConsumerFactory
18   private org.omg.CORBA.ORB orb_;
19   private org.omg.CORBA.Object naming_service_object_;
20   private DataHandler dataHandler_;
21   private Navigation navigation_;
22   private Weapons weapons_;
25   public PushConsumerFactory (DataHandler dataHandler,
26                               String nameServiceIOR,
27                               String[] args,
28                               java.applet.Applet applet)
29     {
30       try {
31         dataHandler_ = dataHandler;
33         // if the DOVE Browser is running as an Applet
34         if (applet != null) {
35           orb_ = org.omg.CORBA.ORB.init (applet, null);
36         }
37         else { // not running as an Applet, but as an normal Application
38           orb_ = org.omg.CORBA.ORB.init (args, null);
39         }
41         // Get the Naming Service initial reference
43         // Name Service Lookup cannot be used when running as an Applet
44         if (nameServiceIOR == null && applet != null) {
45           System.out.println (" Name Service Lookup cannot be used when running as an Applet! Quit!");
46           System.exit (1);
47         }
49         if (nameServiceIOR == null) {  // only used when running via "java" or "vbj"
50           System.out.println ("Using the lookup protocol!");
51           NS_Resolve ns_resolve = new NS_Resolve ();
52           naming_service_object_ = ns_resolve.resolve_name_service (orb_);
53         }
54         else {
55           System.out.println ("Using the following IOR: " + nameServiceIOR);
56           naming_service_object_ = orb_.string_to_object (nameServiceIOR);
57         }
59       }
60       catch(org.omg.CORBA.SystemException e) {
61         System.err.println ("PushConsumerFactory constructor: ORB and Name Service initialization");
62         System.err.println(e);
63       }
65     }
67   public class Object_is_null_exception extends Exception
68   {
69     Object_is_null_exception (String s)
70       {
71         super (s);
72       }
73   }
75   public void run ()
76     {
77       try
78         {
80           // Get the Naming Context to allow resolving the EventService and
81           // ScheduleService
82           CosNaming.NamingContext naming_context =
83             CosNaming.NamingContextHelper.narrow (naming_service_object_);
85           if (naming_context == null)
86             {
87               System.err.println ("The Naming Context is null");
88               System.exit (1);
89             }
90           System.out.println ("Reference to the Naming Service is ok.");
92           // Get a reference for the EventService
94           CosNaming.NameComponent[] ec_name_components = new CosNaming.NameComponent[1];
95           ec_name_components[0] = new CosNaming.NameComponent ("EventService","");
96           org.omg.CORBA.Object event_channel_object = naming_context.resolve (ec_name_components);
98           if (event_channel_object == null)
99             {
100               throw new Object_is_null_exception("EventService Object is null");
101             }
103           RtecEventChannelAdmin.EventChannel event_channel =
104             RtecEventChannelAdmin.EventChannelHelper.narrow (event_channel_object);
106           System.out.println ("Reference to the Event Service is ok.");
108           // Get a reference for the ScheduleService
110           CosNaming.NameComponent[] s_name_components = new CosNaming.NameComponent[1];
111           s_name_components[0] = new CosNaming.NameComponent ("ScheduleService","");
112           org.omg.CORBA.Object scheduler_object = naming_context.resolve (s_name_components);
114           if (scheduler_object == null)
115             {
116               throw new Object_is_null_exception("ScheduleService Object is null");
117             }
119           RtecScheduler.Scheduler scheduler =
120             RtecScheduler.SchedulerHelper.narrow (scheduler_object);
122           System.out.println ("Reference to the Naming Service is ok.");
125           // Start the consumer
126           System.out.println ("Instantiating the Push Consumer.");
127           PushConsumer pushConsumer = new PushConsumer (orb_, dataHandler_);
128           System.out.println ("Initializing the Push Consumer.");
129           pushConsumer.open_consumer (event_channel, scheduler, "demo_consumer");
131           // Tell the CORBA environment that we are ready
133           orb_.connect (pushConsumer);
135           System.out.println ("Going into the event dispatching loop.");
138           java.lang.Object sync = new java.lang.Object();
139           synchronized (sync) {
140             sync.wait();
141           }
142         }
143       catch (java.lang.InterruptedException e)
144         {
145         }
146       catch (CosNaming.NamingContextPackage.CannotProceed e)
147         {
148           System.err.println ("CosNaming.NamingContextPackage.CannotProceed");
149           System.err.println (e);
150         }
151       catch (CosNaming.NamingContextPackage.InvalidName e)
152         {
153           System.err.println ("CosNaming.NamingContextPackage.InvalidName");
154           System.err.println (e);
155         }
156       catch (CosNaming.NamingContextPackage.NotFound e)
157         {
158           System.err.println ("CosNaming.NamingContextPackage.NotFound");
159           System.err.println (e);
160         }
161       catch (Object_is_null_exception e)
162         {
163           System.err.println (e);
164         }
165       catch(org.omg.CORBA.SystemException e)
166         {
167           System.err.println ("PushConsumerFactory.run: Failure");
168           System.err.println(e);
169         }
170     }
171 } // public class PushConsumerFactory