Enhance EquinoxServiceDiscoverer to use bundle trackers
-------------------------------------------------------
Key: TUSCANY-3900
URL: https://issues.apache.org/jira/browse/TUSCANY-3900
Project: Tuscany
Issue Type: Improvement
Affects Versions: Java-SCA-2.0
Reporter: Greg Dritschler
Priority: Minor
Attachments: TUSCANY-3900.patch
Each time that the EquinoxServiceDiscoverer is called to find a service, it
obtains the list of bundles in the bundle context and filters them to identify
the Tuscany bundle providers. This could be improved by using a bundle tracker
to maintain a list of matching bundles. There actually is some bundle tracker
code in the class but it is unused. I am attaching a patch to utilize the
bundle tracker.
The patch creates two bundle trackers, one for all bundles and one for the
Tuscany service providing bundles. I changed getBundles() to get the list of
bundles from the appropriate tracker rather than the bundle context.
There are open questions in the code about what state a bundle should be in to
be considered. I tried to maintain compatibility with the existing filtering
code (isProviderBundle) which accepts all states except UNINSTALLED. Therefore
I changed the bundle tracker constructor to include all bundle states except
UNINSTALLED. I removed the check in addingBundle() for a STOPPED event because
this was not a criteria used in isProviderBundle().
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira