Community
Participate
Working Groups
Build Identifier: Current HEAD In the target definition editor location section a location lose its children (the resolved referenced units) after “Edit”. The behavior is caused by an inconsistency between the IUBundleContainer objects and their related synchronizer (P2TargetUtils). Attached patch proposal will mark the synchronizer for a TargetDefinition dirty on each set # setBundleContainers(IBundleContainer[] containers). This seems reasonable as the target definition synchronizer “knows” the internal state of related IUBundleContainer objects. (see IUBundleContainer# synchronizerChanged()). Reproducible: Always Steps to Reproduce: 1. Define a target definition with at least two locations referencing some features. 2. Select a location and press “Edit”. 3. Leave Edit dialog without a change using “Finish”. As a result the location in the locations tree loses its children. (See attached screenshots)
Created attachment 189938 [details] Screenshots
Created attachment 189939 [details] patch proposal
Jeff, can you take a look at this?
Just saw this bug now. I will take a look later today.
Created attachment 190335 [details] revised patch The fix approach looks good. I tweaked it a bit to put the mark dirty call in IUBundleContainer.associateWithTarget() rather than in TargetDefinition. That keeps TargetDefinition clean of particulars of various containers. It means that markDirty() will be called once for each IU container but the call is just a field set so its not a big deal. I tested that it did indeed address the problem (thanks btw)
I assume that the jdt pref changes are incidental, so this is just a one line fix.
Fixed in HEAD. Thanks for the contribution!
yes, the pref change was incidental. Needed to do it to make the build system happy as I don't have a 1.4 VM. Interestingly when I generated the patch I deselected that change so assumed it would not show up in the patch. Go figure. Thanks for taking care of this.