public void init() {
Executors.newSingleThreadExecutor().execute(new Runnable() {
public void run() {
BundleContext context = DiscoveryActivator.getContext();
final ZooDiscoveryContainer discovery = ZooDiscoveryContainer
.getSingleton();
serviceListenerTracker = new ServiceTracker(context,
IServiceListener.class.getName(), null) {
public Object addingService(ServiceReference reference) {
discovery.addServiceListener((IServiceListener) context
.getService(reference));
return super.addingService(reference);
}
public void modifiedService(ServiceReference reference,
Object service) {
discovery
.removeServiceListener((IServiceListener) context
.getService(reference));
discovery.addServiceListener((IServiceListener) context
.getService(reference));
super.modifiedService(reference, service);
}
public void removedService(ServiceReference reference,
Object service) {
discovery
.removeServiceListener((IServiceListener) context
.getService(reference));
super.removedService(reference, service);
}
};
serviceListenerTracker.open(true);
serviceTypeListenerTracker = new ServiceTracker(context,
IServiceTypeListener.class.getName(), null) {
public Object addingService(ServiceReference reference) {
discovery
.addServiceTypeListener((IServiceTypeListener) context
.getService(reference));
return super.addingService(reference);
}
public void modifiedService(ServiceReference reference,
Object service) {
discovery
.removeServiceTypeListener((IServiceTypeListener) context
.getService(reference));
discovery
.addServiceTypeListener((IServiceTypeListener) context
.getService(reference));
super.modifiedService(reference, service);
}
public void removedService(ServiceReference reference,
Object service) {
discovery
.removeServiceTypeListener((IServiceTypeListener) context
.getService(reference));
super.removedService(reference, service);
}
};