diff options
author | dj | 2011-09-28 13:37:12 +0000 |
---|---|---|
committer | dj | 2011-09-28 13:37:12 +0000 |
commit | 61fdbcbaccd7d3432e1d6e5db500be4634d2a31b (patch) | |
tree | 7bd4d7ea180be5808c3169221c3a40f9650c771c | |
parent | 41e215bfde9dc5d7041c963db1feb366989e34bc (diff) | |
download | rt.equinox.p2-bug348124.tar.gz rt.equinox.p2-bug348124.tar.xz rt.equinox.p2-bug348124.zip |
2 files changed, 7 insertions, 6 deletions
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java index 55affc2a2..ff6e1fc31 100644 --- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java +++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java @@ -51,7 +51,6 @@ public class SimplePlanner implements IPlanner { private IProvisioningPlan generateProvisioningPlan(Collection<IInstallableUnit> fromState, Collection<IInstallableUnit> toState, ProfileChangeRequest changeRequest, IProvisioningPlan installerPlan, ProvisioningContext context) { IProvisioningPlan plan = engine.createPlan(changeRequest.getProfile(), context); - plan.setFuturePlan(new CollectionResult<IInstallableUnit>(toState)); planIUOperations(plan, fromState, toState); planPropertyOperations(plan, changeRequest, toState); @@ -78,15 +77,16 @@ public class SimplePlanner implements IPlanner { return plan; } - private Map<IInstallableUnit, RequestStatus>[] buildDetailedErrors(ProfileChangeRequest changeRequest) { + private Map<IInstallableUnit, RequestStatus>[] buildDetailedErrors(ProfileChangeRequest changeRequest, Set<Explanation> explanation) { + // TODO extract info from the explanation Collection<IInstallableUnit> requestedAdditions = changeRequest.getAdditions(); Collection<IInstallableUnit> requestedRemovals = changeRequest.getRemovals(); Map<IInstallableUnit, RequestStatus> requestStatus = new HashMap<IInstallableUnit, RequestStatus>(requestedAdditions.size() + requestedAdditions.size()); for (IInstallableUnit added : requestedAdditions) { - requestStatus.put(added, new RequestStatus(added, RequestStatus.ADDED, IStatus.ERROR, null)); + requestStatus.put(added, new RequestStatus(added, RequestStatus.ADDED, IStatus.ERROR, explanation)); } for (IInstallableUnit removed : requestedRemovals) { - requestStatus.put(removed, new RequestStatus(removed, RequestStatus.REMOVED, IStatus.ERROR, null)); + requestStatus.put(removed, new RequestStatus(removed, RequestStatus.REMOVED, IStatus.ERROR, explanation)); } @SuppressWarnings("unchecked") Map<IInstallableUnit, RequestStatus>[] maps = new Map[] {requestStatus, null}; @@ -351,7 +351,7 @@ public class SimplePlanner implements IPlanner { Set<Explanation> explanation = projector.getExplanation(sub.newChild(ExpandWork / 4)); IStatus explanationStatus = convertExplanationToStatus(explanation); - Map<IInstallableUnit, RequestStatus>[] changes = buildDetailedErrors(profileChangeRequest); + Map<IInstallableUnit, RequestStatus>[] changes = buildDetailedErrors(profileChangeRequest, explanation); Map<IInstallableUnit, RequestStatus> requestChanges = (changes == null) ? null : changes[0]; Map<IInstallableUnit, RequestStatus> requestSideEffects = (changes == null) ? null : changes[1]; PlannerStatus plannerStatus = new PlannerStatus(explanationStatus, new RequestStatus(null, RequestStatus.REMOVED, IStatus.ERROR, explanation), requestChanges, requestSideEffects, null); diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java index 55dd3c6d6..74f0a5d77 100644 --- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java +++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java @@ -39,7 +39,8 @@ public class RequestStatus extends Status { Iterator<Explanation> iterator = explanation.iterator(); Explanation o = null; while (iterator.hasNext() && ((o = iterator.next()) instanceof Explanation.IUToInstall)) { - conflictingRootIUs.add(((IUToInstall) o).iu); + if (!((IUToInstall) o).iu.equals(iu)) + conflictingRootIUs.add(((IUToInstall) o).iu); } if (o instanceof Explanation.IUInstalled) { conflictingInstalledIUs.add(((IUInstalled) o).iu); |