Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Equinox » Info on fragments implementation?
Info on fragments implementation? [message #46231] Thu, 06 January 2005 17:33 Go to next message
Joel Kamentz is currently offline Joel KamentzFriend
Messages: 30
Registered: July 2009
Member
Can someone point me to some docs (or where to start looking in the
source) to understand how fragments are implemented on top of OSGi?

The Eclipse on-line help mentions that fragments can be used to
deliver internationalization, code patches, etc..

So, what happens when a fragment is installed for a plugin which is
already loaded and active?

When a plugin and several of its fragments all contain different
versions of the same class name, which one is used?

Can adding a fragment to a plugin alter the set of things that plugin
exports (like packages) as seen by other plugins which depend upon it?

Is there some service or other programmatic means by which a fragment
can be attached to a plugin? By that plugin's own activator?


Is there any other way for a plugin to have a dynamic exported package
list? Perhaps using PackageAdmin or some other service?

I'm interested in creating a dynamic library plugin, where the set of
exported jars may not be known ahead of time. For example, they might
come from the network. Would fragments be a way to achieve this?

Thanks,

Joel
Re: Info on fragments implementation? [message #46263 is a reply to message #46231] Sat, 08 January 2005 01:50 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: pascal.ibm.canada

Except the code, there is not much documentation. The final doc will be
the R4.0 of the osgi spec which is not due before later this year.


> So, what happens when a fragment is installed for a plugin which is
> already loaded and active?
It is not taken into acccount until the host bundle is refreshed (which
will trigger a restart of the bundle and dependent).

> When a plugin and several of its fragments all contain different
> versions of the same class name, which one is used?
Jars from the host bundle are searched first, then the fragments are
searched (I believe they are consulted in their installation order).
Note that there is trick that you can play:
the bundle declares that it has a jar, but does not actually provides
it and let the fragments provide it. This way a fragment can "hide" a
class from its host.

> Can adding a fragment to a plugin alter the set of things that plugin
> exports (like packages) as seen by other plugins which depend upon it?
I don't think I understood your question, but I'll try an answer:
fragments can declare export and import of packages which therefore
may alter what is visible

> Is there some service or other programmatic means by which a fragment
> can be attached to a plugin? By that plugin's own activator?
No. No. fragments declare in their manifest to which plugin they can
be attached, that's it.


> Is there any other way for a plugin to have a dynamic exported package
> list? Perhaps using PackageAdmin or some other service?
The set of export can not be changed dynamically.

> I'm interested in creating a dynamic library plugin, where the set of
> exported jars may not be known ahead of time. For example, they might
> come from the network. Would fragments be a way to achieve this?
Will the jars coming from the network contains API or just
implementation?

HTH,

PaScaL
Re: Info on fragments implementation? [message #46290 is a reply to message #46263] Fri, 14 January 2005 15:57 Go to previous message
Joel Kamentz is currently offline Joel KamentzFriend
Messages: 30
Registered: July 2009
Member
Email kept bouncing, so I'll post.

On Fri, 07 Jan 2005 20:50:50 -0500, Pascal Rapicault
<pascal@ibm.canada> wrote:

>Except the code, there is not much documentation. The final doc will be
>the R4.0 of the osgi spec which is not due before later this year.
>
>
>> So, what happens when a fragment is installed for a plugin which is
>> already loaded and active?
>It is not taken into acccount until the host bundle is refreshed (which
>will trigger a restart of the bundle and dependent).

It's been a little while since I looked at the source. What do you
mean by refreshing the host bundle? What triggers it? Or are you
talking about the UpdateConfigurator automatic scan the next time
Eclipse starts up?

>> When a plugin and several of its fragments all contain different
>> versions of the same class name, which one is used?
>Jars from the host bundle are searched first, then the fragments are
>searched (I believe they are consulted in their installation order).
>Note that there is trick that you can play:
> the bundle declares that it has a jar, but does not actually provides
>it and let the fragments provide it. This way a fragment can "hide" a
>class from its host.
>
>> Can adding a fragment to a plugin alter the set of things that plugin
>> exports (like packages) as seen by other plugins which depend upon it?
>I don't think I understood your question, but I'll try an answer:
> fragments can declare export and import of packages which therefore
>may alter what is visible
>
>> Is there some service or other programmatic means by which a fragment
>> can be attached to a plugin? By that plugin's own activator?
> No. No. fragments declare in their manifest to which plugin they can
>be attached, that's it.
>
>
>> Is there any other way for a plugin to have a dynamic exported package
>> list? Perhaps using PackageAdmin or some other service?
> The set of export can not be changed dynamically.
>
>> I'm interested in creating a dynamic library plugin, where the set of
>> exported jars may not be known ahead of time. For example, they might
>> come from the network. Would fragments be a way to achieve this?
> Will the jars coming from the network contains API or just
>implementation?

The idea would be to have extra content coming from the network. This
is simpler if the initial version of the plugin can be basically
empty, and outside factors determine its entire content and export
lists. (In other words, the main plugin exports no packages at all,
but the fragments might contribute and export API?)

The idea is sort of to have a generic plugin which can do the external
communication and make it data driven. Some of the configuration data
for what it loads might be included in the plugin, or it might be
completely separate (but likely cached). The actual class content,
etc. would be external to the plugin (coming from the network and
cached somewhere locally), but I would like it to appear as if the
plugin were the source.

Perhaps think of it as a proxying network loader plugin? The list of
what to load could come from anywhere -- maybe even a preferences
page. But the content specified is then exported to other plugins
which list this plugin as a dependency.

Well, that's the idea, anyway.


>HTH,
>
> PaScaL

Joel
Previous Topic:Discussion of Classloaders for (de) serialization
Next Topic:ANNOUNCEMENT - Security "Work Area" in Equinox/Eclipse
Goto Forum:
  


Current Time: Thu Dec 26 15:16:07 GMT 2024

Powered by FUDForum. Page generated in 0.05204 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top