working with pax runner.
[xmlrouter] / router / bundle / src / main / java / org / wamblee / xmlrouter / bundle / XmlrouterActivator.java
1 /*
2  * Copyright 2005-2011 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.xmlrouter.bundle;
17
18 import java.util.Timer;
19 import java.util.TimerTask;
20
21 import org.osgi.framework.BundleActivator;
22 import org.osgi.framework.BundleContext;
23 import org.osgi.util.tracker.ServiceTracker;
24 import org.wamblee.xmlrouter.subscribe.Destination;
25
26 public class XmlrouterActivator implements BundleActivator {
27
28     private BundleContext context;
29     private ServiceTracker destinations;
30     private Timer timer;
31
32     @Override
33     public void start(BundleContext aContext) throws Exception {
34         System.out.println("=== Starting bundle");
35         context = aContext;
36         destinations = new ServiceTracker(aContext,
37             Destination.class.getName(), null);
38         destinations.open();
39         timer = new Timer();
40         timer.schedule(new TimerTask() {
41
42             @Override
43             public void run() {
44                 Destination dest = (Destination) destinations.getService();
45                 System.out.println("  === timer expired");
46                 if (dest != null) {
47                     System.out.println("   == calling");
48                     dest.receive(null);
49                 }
50             }
51         }, 1000, 1000);
52     }
53
54     @Override
55     public void stop(BundleContext aContext) throws Exception {
56         System.out.println("=== Stopping bundle");
57         timer.cancel();
58         destinations.close();
59     }
60
61 }