diff options
author | Daniel LeBerre | 2010-04-25 21:03:50 +0000 |
---|---|---|
committer | Daniel LeBerre | 2010-04-25 21:03:50 +0000 |
commit | 48174e49e677dcfd552880a293ebf2583c8bce0a (patch) | |
tree | 630b8d75837711d3a9e898754cc6c677e29ed6a2 /bundles/org.eclipse.equinox.p2.director | |
parent | a683e3f41308cac70b1ade734069c9f1579b6a52 (diff) | |
download | rt.equinox.p2-48174e49e677dcfd552880a293ebf2583c8bce0a.tar.gz rt.equinox.p2-48174e49e677dcfd552880a293ebf2583c8bce0a.tar.xz rt.equinox.p2-48174e49e677dcfd552880a293ebf2583c8bce0a.zip |
Bug 270668 - [planner] Improve explanation when the installed element has a non matching filterv20100425-1840
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.director')
6 files changed, 17 insertions, 5 deletions
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java index a1a168541..d2d897f40 100644 --- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java +++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java @@ -119,10 +119,12 @@ public abstract class Explanation implements Comparable<Explanation> { public static class MissingIU extends Explanation { public final IInstallableUnit iu; public final IRequirement req; + public boolean rootIu; - public MissingIU(IInstallableUnit iu, IRequirement req) { + public MissingIU(IInstallableUnit iu, IRequirement req, boolean rootIU) { this.iu = iu; this.req = req; + this.rootIu = rootIu; } public int orderValue() { @@ -134,6 +136,9 @@ public abstract class Explanation implements Comparable<Explanation> { } public String toString() { + if (rootIu) { + return NLS.bind(Messages.Explanation_missingRootRequired, req); + } if (req.getFilter() == null) { return NLS.bind(Messages.Explanation_missingRequired, iu, req); } diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java index 72b9e11b5..7e04e0648 100644 --- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java +++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java @@ -39,8 +39,10 @@ public class Messages extends NLS { public static String Explanation_hardDependency; public static String Explanation_patchedHardDependency; public static String Explanation_missingRequired; + public static String Explanation_missingRootRequired; public static String Explanation_missingNonGreedyRequired; public static String Explanation_missingRequiredFilter; + public static String Explanation_missingRootFilter; public static String Explanation_optionalDependency; public static String Explanation_rootMissing; public static String Explanation_rootSingleton; diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java index 764200c64..4e4d98684 100644 --- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java +++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java @@ -368,7 +368,7 @@ public class Projector { if (DEBUG) { Tracing.debug(iu + "=0"); //$NON-NLS-1$ } - dependencyHelper.setFalse(iu, new Explanation.MissingIU(iu, req)); + dependencyHelper.setFalse(iu, new Explanation.MissingIU(iu, req, iu == this.entryPoint)); } // Check whether the requirement is applicable 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 7fea137f2..9ce9628ca 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 @@ -316,8 +316,11 @@ public class SimplePlanner implements IPlanner { IInstallableUnit[] availableIUs = gatherAvailableInstallableUnits(extraIUs.toArray(new IInstallableUnit[extraIUs.size()]), context, sub.newChild(ExpandWork / 4)); Slicer slicer = new Slicer(new QueryableArray(availableIUs), newSelectionContext, satisfyMetaRequirements(profileChangeRequest.getProfileProperties())); - IQueryable<IInstallableUnit> slice = slicer.slice(new IInstallableUnit[] {(IInstallableUnit) updatedPlan[0]}, sub.newChild(ExpandWork / 4)); - slicer.getNonGreedyIUs(); + IInstallableUnit[] rootIus = new IInstallableUnit[profileChangeRequest.getAdditions().size() + 1]; + profileChangeRequest.getAdditions().toArray(rootIus); + rootIus[rootIus.length - 1] = (IInstallableUnit) updatedPlan[0]; + IQueryable<IInstallableUnit> slice = slicer.slice(rootIus, sub.newChild(ExpandWork / 4)); + if (slice == null) { IProvisioningPlan plan = engine.createPlan(profile, context); plan.setStatus(slicer.getStatus()); diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java index dff0c135f..4f5d87a76 100644 --- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java +++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java @@ -85,7 +85,7 @@ public class Slicer { private void validateInput(IInstallableUnit[] ius) { for (int i = 0; i < ius.length; i++) { if (!isApplicable(ius[i])) - throw new IllegalStateException("The IU " + ius[i] + " can't be installed in this environment because its filter does not match."); //$NON-NLS-1$//$NON-NLS-2$ + throw new IllegalStateException(NLS.bind(Messages.Explanation_missingRootFilter, ius[i])); } } diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties index 42e255c12..f91eb82bd 100644 --- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties +++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties @@ -25,8 +25,10 @@ Explanation_fromPatch=From Patch: {0} Explanation_hardDependency=Cannot satisfy dependency: {0} depends on: {1} Explanation_patchedHardDependency=Cannot satisfy patched ({0}) dependency: {1} depends on: {2} Explanation_missingRequired=Missing requirement: {0} requires ''{1}'' but it could not be found +Explanation_missingRootRequired=You requested to install ''{0}'' but it could not be found Explanation_missingNonGreedyRequired=Missing non greedy requirement: ''{0}'' is required non greedily but it could not be found Explanation_missingRequiredFilter=Missing requirement for filter {0}: {1} requires ''{2}'' but it could not be found +Explanation_missingRootFilter={0} can't be installed in this environment because its filter is not applicable. Explanation_optionalDependency=Optional dependency Explanation_rootMissing=Cannot complete the install because one or more required items could not be found. Explanation_rootSingleton=Cannot complete the install because of a conflicting dependency. |