Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel LeBerre2010-04-25 21:03:50 +0000
committerDaniel LeBerre2010-04-25 21:03:50 +0000
commit48174e49e677dcfd552880a293ebf2583c8bce0a (patch)
tree630b8d75837711d3a9e898754cc6c677e29ed6a2 /bundles/org.eclipse.equinox.p2.director
parenta683e3f41308cac70b1ade734069c9f1579b6a52 (diff)
downloadrt.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')
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties2
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.

Back to the top