diff options
author | Pascal Rapicault | 2010-03-11 13:34:31 +0000 |
---|---|---|
committer | Pascal Rapicault | 2010-03-11 13:34:31 +0000 |
commit | f18799a696fdc46d9fdbcb0e955ad4313b5bcd06 (patch) | |
tree | 705dbafa69b279c36b28c333d42d6f84e7465bb2 /bundles/org.eclipse.equinox.p2.director | |
parent | df403c23f191e21b61c8d33b9a5deaad4a0ab42f (diff) | |
download | rt.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')
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> |