Oleg,

Ok, this explains it. Is this startup procedure documented somewhere? Also, I think it would be a good idea to fire a FrameWorkEvent once the "regular" bundles have been started and the registry events are being switched on. BTW, if someone is interested why I ask those questions - I try to trigger contract verification when the registry changes, this is part of an open source research project: http://code.google.com/p/treaty/ .

Cheers, Jens




Oleg Besedin wrote:

Usually, extension registry starts early in the application life, before "regular" bundles. During the startup registry processes entries from all resolved bundles (or gets the same information from cache). When "regular" bundles start they get complete information from the registry - no registry events happen.

Usually registry events get generated when bundles are added or removed - such as during the P2 update operations that use "apply changes" rather then restart.

Hope this helps.

Thanks,
Oleg





*Jens Dietrich <[EMAIL PROTECTED]>*
Sent by: [EMAIL PROTECTED]

10/02/2008 07:06 PM
Please respond to
Equinox development mailing list <equinox-dev@eclipse.org>


        
To
        equinox-dev@eclipse.org
cc
        
Subject
        Re: [equinox-dev] problems with registry change events



        





Hi Oleg,

Thanks for your reply. I have tried this and this works for me as well. But I had also expected registry events being fired when eclipse starts up and the extension registry is populated. BTW, I start eclipse with the -clean option to prevent caching. At which point is the event delivery mechanism switched on? And is there a life cycle event signaling when this happens?

Thanks, Jens


Quoting Oleg Besedin <[EMAIL PROTECTED]>:

> Hi Jens,
> It does work for me. Using your code:
>
> 1 Create a new bundle that contributes to the registry - say, using "Hello
> world" template for the new plug-in project wizard
> 2 Add "-console" argument to the Eclipse launch configuration that you are
> using
> 3 Start it
> 4 Use "ss" command in the console to make sure your tracking bundle is
> started and to find out the ID of the bundle from the step 1
> 5. Type "refresh <bundle_id_from_step_1> in the console - you'll see the
> events.
>
> Thanks,
> Oleg
>
>
>
>
>
> Jens Dietrich <[EMAIL PROTECTED]>
> Sent by: [EMAIL PROTECTED]
> 10/01/2008 04:53 PM
> Please respond to
> Equinox development mailing list <equinox-dev@eclipse.org>
>
>
> To
> equinox-dev@eclipse.org
> cc
>
> Subject
> [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
>
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>


_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

------------------------------------------------------------------------

_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to