[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] What is the best way to get the version of abundle

I think Pascal is asking how to find an installed bundle given a specific BSN and version (range?).  I suggest you take a look at the PackageAdminImpl for the getBundles method:

https://git.eclipse.org/c/equinox/rt.equinox.framework.git/tree/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/legacy/PackageAdminImpl.java?h=R4_6_maintenance#n170

The FrameworkWiring.findProviders method is the way to discover capabilities of bundles in the framework, including the osgi.identity capability which holds the bundles BSN and version.

Tom





From:        Raymond Auge <raymond.auge@xxxxxxxxxxx>
To:        Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
Date:        12/13/2016 10:16 PM
Subject:        Re: [equinox-dev] What is the best way to get the version of a        bundle
Sent by:        equinox-dev-bounces@xxxxxxxxxxx




Pascal, from which perspective would you like to get the bundle version?

From the Bundle itself:

org.osgi.framework.Version version = org.osgi.framework.Bundle.getVersion();

Through the resolver API (arguably a little trickier):

Map<org.osgi.resource.Resource,List<org.osgi.resource.Wire>> results = org.osgi.service.resolver.Resolver.resolve(org.osgi.service.resolver.ResolveContext ctx);
Resource resource = results.keySet().iterator().next();

List<Capability> capabilities = resource.getCapabilities(IdentityNamespace.IDENTITY_NAMESPACE);
Map<String,Object> attributes = capabilities.get(0).getAttributes();
org.osgi.framework.Version version = (org.osgi.framework.Version)attributes.get(IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE);

There are a number of convenience APIs as well, but as I said earlier it really depends from which perspective you are trying... from a running framework or from some external agent analyzing a set of bundles.

Sincerely,
- Ray


On Tue, Dec 13, 2016 at 9:45 PM, Pascal Rapicault <pascal@xxxxxxxxxxxxx> wrote:
With Platform.getBundle officially removed, and PackageAdmin on its way out, could someone indicate the API of choice (and recommended code snippet) to use to get the version of a given bundle?


_______________________________________________
equinox-dev mailing list

equinox-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

https://dev.eclipse.org/mailman/listinfo/equinox-dev



--

Raymond Augé (@rotty3000)
Senior Software Architect Liferay, Inc. (@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance (@OSGiAlliance)_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev