[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[equinox-dev] IWeavingServiceFactory.createWeavingService takes a BundleDescription

Keep in mind this is a discussion for Luna, not Kepler.  I have been spending some time lately around the new framework implementation based on the OSGi R5 generic capability/requirement model.

I was looking at porting the Equinox weaving hooks (org.eclipse.equinox.weaving.hook) over to a new Equinox framework implementation that is based internally on the generic capability/requirement model of the OSGi R5 specification.  This framework implementation no longer is based on the old Equinox resolver API (org.eclipse.osgi.service.resolver).  As such the weaving hook implementation no longer has access to BundleDescription objects or a State object at runtime.  Instead it would have access to org.osgi.framework.wiring.BundleRevsion/BundleWiring objects.

How disruptive would it be to make a breaking API change to org.eclipse.equinox.service.weaving.IWeavingServiceFactory to take a org.osgi.framework.wiring.BundleRevsion instead of the old org.eclipse.osgi.service.resolver.BundleDescription and no longer take a org.eclipse.osgi.service.resolver.State?

I noticed the bundle org.eclipse.equinox.weaving.hook exports the package org.eclipse.equinox.service.weaving with no version (defaulting to 0.0.0).  For the next release I suggest we bump this version to 1.0.0 and indicate a breaking change for implementors of org.eclipse.equinox.service.weaving.IWeavingServiceFactory.  I'm not sure how many others outside of the org.eclipse.equinox.weaving.aspectj bundle implement this interface.  But without this type of change I see no way to support Equinox Weaving on the new framework.  Beyond this I still want someone to investigate moving as much of the Equiniox weaving hooks onto the standard OSGi WeavingHook services [1].

If you want to see the work I have done so far then load up the twatson/container branches from both the rt.equinox.framework [2] and rt.equinox.bundles [3] git repositories.  You should be able to self-host Eclipse if you load up the framework project (org.eclipse.osg) and the compatibility state project (org.eclipse.osgi.compatibility.state) which provides an implementation of the old equinox PlatformAdmin/State mainly to support PDE.  I have not done any testing of the weaving hook changes.  I only spent the morning getting rid of compile errors which pointed me to this API issue with BundleDescription in the Equinox Weaving API.

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=377422
[2] http://git.eclipse.org/c/equinox/rt.equinox.framework.git/log/?h=twatson/container
[3] http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/log/?h=twatson/container