Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 345640

Summary: composite bundle which has substitutable exports does not work
Product: [Eclipse Project] Equinox Reporter: Thomas Watson <tjwatson>
Component: FrameworkAssignee: Thomas Watson <tjwatson>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: dj.houghton, hargrave, pwebster
Version: 3.6Flags: hargrave: review+
dj.houghton: review+
Target Milestone: 3.7 RC2   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Bug Depends on:    
Bug Blocks: 350739    
Attachments:
Description Flags
patch + tests
none
updated patch and tests
none
updated patch and tests none

Description Thomas Watson CLA 2011-05-12 14:16:14 EDT
If a composite bundle exports and imports the same package things do not work as expected when the resolver chooses the composite to be the exporter of the package.  When ends up happening is we incorrectly create a surrogate that has metadata to export and import the package.  The resolver for the surrogate/composite framework then may choose to make the surrogate an importer or an exporter of the package.  Since the surrogate is at bundle id 0 it is very likely that it will be resolved first and given preference to be the exporter.

So now we have the composite bundle on the outside thinking it is the exporter of the package, and the surrogate on the inside thinking it is the exporter of the package, but meanwhile no one gets wired to the actual provider of the package, which must be from another bundle installed inside of the composite.
Comment 1 Thomas Watson CLA 2011-05-12 14:22:42 EDT
Created attachment 195519 [details]
patch + tests

Here is a patch and test for the issue.  This patch applies cleanly to both 3.6 and 3.7 streams.
Comment 2 Thomas Watson CLA 2011-05-12 14:29:22 EDT
Considering for RC2.  Will need 2 additional committer reviews.
Comment 3 Thomas Watson CLA 2011-05-12 14:31:43 EDT
DJ, please review also.

DJ and BJ, please ping me to discuss.  This is not very straight forward.
Comment 4 Thomas Watson CLA 2011-05-13 14:23:19 EDT
Created attachment 195620 [details]
updated patch and tests

Updated patch to fix copy and paste error in the test.  It was using the wrong test method name for the composite bundle location.  Now it justs getName() instead.
Comment 5 Thomas Watson CLA 2011-05-13 14:37:59 EDT
Created attachment 195623 [details]
updated patch and tests

Same patch but removed the extra resource files that were meant for the testcase in bug 345743.
Comment 6 Thomas Watson CLA 2011-05-13 15:58:35 EDT
Patch released.