[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] How do I dynamically install and attach a fragment?


Tom and Simon,

I had been using resolveBundles() without success. However your reference to adding constraints made me look more closely at my code and I found that the fragment had dependencies that I was not loading. It is working now.

Thanks

Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester,  SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/



Thomas Watson <tjwatson@xxxxxxxxxx>
Sent by: equinox-dev-bounces@xxxxxxxxxxx

03/01/2007 15:02

Please respond to
Equinox development mailing list <equinox-dev@xxxxxxxxxxx>

To
Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
cc
Subject
Re: [equinox-dev] How do I dynamically install and attach a fragment?






Hi,


Simon is correct, you need to use either PackageAdmin.resolveBundles(...) or PackageAdmin.refreshPackages(...) to force a fragment to resolve.  When launching from PDE, the update configurator bundle uses PackageAdmin to force all possible bundles to resolve.  When you install a bundle yourself you must do something to force it to resolve.  For fragment bundles the only way to force them to resolve is to use PackageAdmin.


The two PackageAdmin methods (resolveBundles(...) and refreshPackages(...)) have different usecases.


-  If you have a fragment which you would like to resolve and attach to an existing host bundle which is already resolved then you must use PackageAdmin.resolveBundles(...).  This method will attempt to attach a fragment to any available host bundles.  If the host bundle is already in the RESOLVED state then a fragment can only be attached dynamically if it does not add any new constraints to the host.


-  If you have a fragment which adds new constraints (i.e. new Import-Package or Require-Bundle headers), then you must use PackageAdmin.refreshPackages to force the host bundle to re-resolve.  This is because we cannot dynamically add new constraints to an already RESOLVED host bundle from fragment bundles.


Tom




"Simon Kaegi" <simon.kaegi@xxxxxxxxx>
Sent by: equinox-dev-bounces@xxxxxxxxxxx

12/29/2006 11:58 AM

Please respond to
Equinox development mailing list <equinox-dev@xxxxxxxxxxx>

To
"Equinox development mailing list" <equinox-dev@xxxxxxxxxxx>
cc
Subject
Re: [equinox-dev] How do I dynamically install and attach a fragment?







Hi Matthew,

 

What you're doing sounds right to me.

Is the fragment showing up as UNRESOLVED in the console?

If you installed the fragment first, you might need to use PackageAdmin.resolveBundles(...) and possibly refreshPackages(...) to get everything set correctly.

 

-Simon

----- Original Message -----
From:
Matthew Webster
To:
Equinox development mailing list
Sent:
Friday, December 29, 2006 6:32 AM
Subject:
[equinox-dev] How do I dynamically install and attach a fragment?


I am trying to use BundleContext.installBundle() to install a fragment and its host. However when I use Bundle.loadClass() (for the host) I cannot resolve any classes in the fragment. If use PDE (JUnit Plug-in Test) it works. I notice that in the failing case querying the fragments gives no host and vice versa for the host. Is there an additional API I must call to attach the fragment? Is the order in which I install the bundles important?


Thanks in advance.


Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester,  SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/


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