Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[equinox-dev] problems with registry change events

Hi,

I am working on a program that performs some additional integrity checks between bundles collaborating through extension points and extensions. I want to trigger verification whenever new extensions or extension points are registered. I have done a little spike: I wrote a plugin that starts early (by adding it to config.ini), and added the following code to the start method in the Activator class (the Activator also implements IRegistryChangeListener):

private boolean initialized = false;
public void registryChanged(IRegistryChangeEvent e) {
   System.out.println("registry changed");
}
public void start(final BundleContext context) throws Exception {
   super.start(context);
   System.out.println("activating");
   plugin = this;
   BundleListener l = new BundleListener() {
       public void bundleChanged(BundleEvent e) {
System.out.println("bundle changed: "+e.getBundle().getSymbolicName());
           if (!initialized && Platform.getExtensionRegistry()!=null) {
Platform.getExtensionRegistry().addRegistryChangeListener(Activator.this);
               System.out.println("registry loaded");
               initialized = true;
           }
       }
   };
   context.addBundleListener(l);
}


The idea is to wait for the extension registry, and once it becomes available to start listening for registry change events. The output on the console is the following:

activating
bundle changed: nz.ac.massey.treaty.spikes.events.main
registry loaded
bundle changed: org.eclipse.jface
bundle changed: org.eclipse.ui

... (more bundle changed: .. - )


It seems that registryChanged is never invoked. Even if I install a plugin later (once the eclipse instance is running) from a local update site, the method is never called (no print out, I have tried to debug as well). Why is this?

Any help is appreciated!

Jens



Back to the top