Hi Thomas thanks for the insights...
My initial idea was to track for scoped subsystems installation as a
whole based on its capabilities. After detecting one by a global
extender it would to create specific configurations (ConfigurationAdmin)
for components in their parent kernel subsystem. So each scoped
subsystem would import only those services for their contents to consume.
more bellow...
On 17/05/2017 10:23, Thomas Watson wrote:
In order to do that you would have to track capabilities by using the
system.bundle context in order to see capabilities being provided by
the individual bundles within the scoped subsystems being installed by
using something like a BundleTracker. Then you would have to figure
out which subsystem the bundle belonged to and determine which
capabilities that subsystem exports with its own sharing policy
headers (Provide-Capability, Export-Capability etc). I'm not sure
this makes any sense with your scenario.
I'm already doing something like this, but out of subsystem.
I thought doing that, but I was not able to determine which subsystem
the detected bundle belongs to. do you have ideas how to figure this out ?
For the extender pattern is far better to act upon the individual
bundles within the subsystem by looking at their
capabilities/requirements (or some other meta-data like DS component
XML) and using their BundleContext to get a properly scoped view of
the world according to the subsystem they are installed in. For
example, this is how a single blueprint or DS implementation can work
across all bundles contained in various scoped subsystems. They track
bundles using the system.bundle context, but they consume/register
services on behalf of the extendee bundle by using the extendee
bundle's context.
Tom
----- Original message -----
From: Cristiano Gavião <[email protected]>
Sent by: [email protected]
To: [email protected]
Cc:
Subject: Re: [osgi-dev] How to get the custom capabilities
provided by a scoped subsystem ?
Date: Wed, May 17, 2017 7:58 AM
Hummm... :-\
I was about to create a kind of extender provider tracking on the
subsystem capabilities... will need to rethink it then...
thanks BJ.
On 16/05/2017 22:09, BJ Hargrave wrote:
I doubt it. The region bundles don't provide or require the
capabilities themselves.
You will probably need to use the subsystem service to get the
subsystem manifest and parse the headers yourself.
--
BJ Hargrave
Senior Technical Staff Member, IBM // office: +1 386 848 1781
OSGi Fellow and CTO of the OSGi Alliance // mobile: +1 386 848 3788
[email protected] <mailto:[email protected]>
----- Original message -----
From: Cristiano Gavião <[email protected]>
<mailto:[email protected]>
Sent by: [email protected]
<mailto:[email protected]>
To: OSGi Developer Mail List <[email protected]>
<mailto:[email protected]>
Cc:
Subject: [osgi-dev] How to get the custom capabilities
provided by a scoped subsystem ?
Date: Tue, May 16, 2017 4:46 PM
Hello OSGi experts,
In a subsystem manifest we can declare provided capabilities
using the
header "Provide-Capability:".
I'm trying to get them using the bundle context from the
subsystem
service (injected by DS):
> List<Capability> caps = pScopeSubsystem.getBundleContext()
> .getBundle().adapt(BundleRevision.class)
> .getCapabilities(null);
> for (Capability capability : caps) {
> System.out.println("Cap: " +
capability.toString());
> }
Also tried BundleWiring:
> BundleWiring bw =
pKernelSubsystem.getBundleContext().getBundle()
> .adapt(BundleWiring.class);
> List<BundleCapability> capabilities = bw.getCapabilities(null);
But the only capabilities that I was able to get are those:
> Cap: osgi.wiring.bundle; bundle-version:Version="1.0.0";
>
osgi.wiring.bundle="org.osgi.service.subsystem.region.context.1"
> Cap: osgi.wiring.host; bundle-version:Version="1.0.0";
> osgi.wiring.host="org.osgi.service.subsystem.region.context.1"
> Cap: osgi.identity;
> osgi.identity="org.osgi.service.subsystem.region.context.1";
> type="osgi.bundle"; version:Version="1.0.0"
So, what is the way to get the custom capabilities declared
for a scope
subsystem?
many thanks,
Cristiano
_______________________________________________
OSGi Developer Mail List
[email protected] <mailto:[email protected]>
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected] <mailto:[email protected]>
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev