Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rapicault2010-03-11 13:34:31 +0000
committerPascal Rapicault2010-03-11 13:34:31 +0000
commitf18799a696fdc46d9fdbcb0e955ad4313b5bcd06 (patch)
tree705dbafa69b279c36b28c333d42d6f84e7465bb2 /bundles/org.eclipse.equinox.p2.director
parentdf403c23f191e21b61c8d33b9a5deaad4a0ab42f (diff)
downloadrt.equinox.p2-f18799a696fdc46d9fdbcb0e955ad4313b5bcd06.tar.gz
rt.equinox.p2-f18799a696fdc46d9fdbcb0e955ad4313b5bcd06.tar.xz
rt.equinox.p2-f18799a696fdc46d9fdbcb0e955ad4313b5bcd06.zip
Bug 305447 - Planner related methods on ProvisioningContext
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/SimplePlanner.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java8
3 files changed, 22 insertions, 2 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 a6fbcf96a..e6771de38 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
@@ -687,8 +687,8 @@ public class SimplePlanner implements IPlanner {
}
//Now add any other requirement that we need to see satisfied
- if (context != null && context.getAdditionalRequirements() != null)
- gatheredRequirements.addAll(context.getAdditionalRequirements());
+ if (profileChangeRequest.getExtraRequirements() != null)
+ gatheredRequirements.addAll(profileChangeRequest.getExtraRequirements());
return new Object[] {createIURepresentingTheProfile(gatheredRequirements), alreadyInstalled.toArray(IInstallableUnit.class)};
}
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java
index f7af12510..06872f009 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/ProfileChangeRequest.java
@@ -19,6 +19,7 @@ import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.engine.IProfile;
import org.eclipse.equinox.p2.engine.IProfileRegistry;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IRequirement;
import org.eclipse.equinox.p2.planner.IProfileChangeRequest;
public class ProfileChangeRequest implements Cloneable, IProfileChangeRequest {
@@ -31,6 +32,7 @@ public class ProfileChangeRequest implements Cloneable, IProfileChangeRequest {
private HashMap<IInstallableUnit, Map<String, String>> iuPropertiesToAdd = null; // map iu->map of key->value pairs for properties to be added for an iu
private HashMap<IInstallableUnit, List<String>> iuPropertiesToRemove = null; // map of iu->list of property keys to be removed for an iu
private boolean isAbsolute = false; //Indicate whether or not the request is an absolute one
+ private ArrayList<IRequirement> additionalRequirements;
public static ProfileChangeRequest createByProfileId(IProvisioningAgent agent, String profileId) {
IProfileRegistry profileRegistry = (IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME);
@@ -258,4 +260,14 @@ public class ProfileChangeRequest implements Cloneable, IProfileChangeRequest {
}
return result.toString();
}
+
+ public void addExtraRequirements(Collection<IRequirement> requirements) {
+ if (additionalRequirements == null)
+ additionalRequirements = new ArrayList<IRequirement>(requirements.size());
+ additionalRequirements.addAll(requirements);
+ }
+
+ public Collection<IRequirement> getExtraRequirements() {
+ return additionalRequirements;
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
index 9b533a7e2..af3f2dab1 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
@@ -13,6 +13,7 @@ package org.eclipse.equinox.p2.planner;
import java.util.Collection;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IRequirement;
/**
* A profile change request is a description of a set of changes that a client
@@ -53,6 +54,13 @@ public interface IProfileChangeRequest {
public abstract void removeAll(Collection<IInstallableUnit> toUninstall);
/**
+ * Add extra requirements that must be satisfied by the planner.
+ *
+ * @param requirements the additional requirements
+ */
+ public void addExtraRequirements(Collection<IRequirement> requirements);
+
+ /**
* Associate an inclusion rule with the installable unit. An inclusion rule will dictate how
* the installable unit is treated when its dependencies are not satisfied.
* <p>

Back to the top