blob: 9e8953afd3d6455ebbe193e6f811684b8565dc3f [file] [log] [blame]
package $packageName$;
import java.util.Hashtable;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceEvent;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
public class $activator$ implements BundleActivator, ServiceListener {
private DictionaryService service;
private ServiceTracker dictionaryServiceTracker;
private BundleContext fContext;
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
fContext = context;
service = new DictionaryServiceImpl();
Hashtable props = new Hashtable();
// register the service
context.registerService(DictionaryService.class.getName(), service, props);
// create a tracker and track the service
dictionaryServiceTracker = new ServiceTracker(context, DictionaryService.class.getName(), null);
dictionaryServiceTracker.open();
// have a service listener to implement the whiteboard pattern
fContext.addServiceListener(this, "(objectclass=" + Dictionary.class.getName() + ")");
// grab the service
service = (DictionaryService) dictionaryServiceTracker.getService();
// register the dictionary
service.registerDictionary(new DictionaryImpl());
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
// close the service tracker
dictionaryServiceTracker.close();
dictionaryServiceTracker = null;
service = null;
fContext = null;
}
public void serviceChanged(ServiceEvent ev) {
ServiceReference sr = ev.getServiceReference();
switch(ev.getType()) {
case ServiceEvent.REGISTERED:
{
Dictionary dictionary = (Dictionary) fContext.getService(sr);
service.registerDictionary(dictionary);
}
break;
case ServiceEvent.UNREGISTERING:
{
Dictionary dictionary = (Dictionary) fContext.getService(sr);
service.unregisterDictionary(dictionary);
}
break;
}
}
}