diff options
author | Pascal Rapicault (JBoss) | 2013-05-02 19:03:31 +0000 |
---|---|---|
committer | Pascal Rapicault | 2013-05-02 20:48:46 +0000 |
commit | 83c85716ebfe71e8fa1d2cc12adcfddfd78e1d71 (patch) | |
tree | cb27fd936139ded24f799e8b40ecb9eccb25066c /bundles/org.eclipse.equinox.p2.operations | |
parent | 697de6584f6ae94e4020d92a541a33405ce9181c (diff) | |
download | rt.equinox.p2-83c85716ebfe71e8fa1d2cc12adcfddfd78e1d71.tar.gz rt.equinox.p2-83c85716ebfe71e8fa1d2cc12adcfddfd78e1d71.tar.xz rt.equinox.p2-83c85716ebfe71e8fa1d2cc12adcfddfd78e1d71.zip |
Bug 407099 - [Remediation] Operation should not special case isCheckForUpdates
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.operations')
2 files changed, 22 insertions, 35 deletions
diff --git a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemediationOperation.java b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemediationOperation.java index df1a4e159..143afc409 100644 --- a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemediationOperation.java +++ b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemediationOperation.java @@ -38,6 +38,11 @@ public class RemediationOperation extends ProfileChangeOperation { private Remedy bestSolutionChangingTheRequest; private Remedy bestSolutionChangingWhatIsInstalled; private Remedy currentRemedy; + private RemedyConfig[] remedyConfigs; + + public RemedyConfig[] getRemedyConfigs() { + return remedyConfigs; + } public Remedy getCurrentRemedy() { return currentRemedy; @@ -49,26 +54,17 @@ public class RemediationOperation extends ProfileChangeOperation { } private IProfileChangeRequest originalRequest; - private boolean isCheckForUpdates; - - public boolean isCheckForUpdates() { - return isCheckForUpdates; - } public RemediationOperation(ProvisioningSession session, IProfileChangeRequest iProfileChangeRequest) { - this(session, iProfileChangeRequest, null); - - } + this(session, iProfileChangeRequest, RemedyConfig.getAllRemedyConfigs()); - public RemediationOperation(ProvisioningSession session, IProfileChangeRequest originalRequest, List<RemedyConfig> configuration) { - this(session, originalRequest, false); } - public RemediationOperation(ProvisioningSession session, IProfileChangeRequest originalRequest, boolean isCheckForUpdates) { + public RemediationOperation(ProvisioningSession session, IProfileChangeRequest originalRequest, RemedyConfig[] remedyConfigs) { super(session); this.originalRequest = originalRequest; remedies = new ArrayList<Remedy>(); - this.isCheckForUpdates = isCheckForUpdates; + this.remedyConfigs = remedyConfigs; } public Remedy bestSolutionChangingTheRequest() { @@ -92,34 +88,14 @@ public class RemediationOperation extends ProfileChangeOperation { return; } try { - if (isCheckForUpdates) - status.add(computeCheckForUpdates(sub.newChild(1))); - else - status.add(computeAllRemediations(sub.newChild(1))); + status.add(computeAllRemediations(sub.newChild(1))); } catch (OperationCanceledException e) { status.add(Status.CANCEL_STATUS); } - if (!isCheckForUpdates) { - determineBestSolutions(); - } - } - - private IStatus computeCheckForUpdates(IProgressMonitor monitor) { - RemedyConfig config = new RemedyConfig(); - config.allowDifferentVersion = true; - config.allowInstalledRemoval = false; - config.allowInstalledUpdate = true; - config.allowPartialInstall = false; - Remedy remedy = computeRemedy(config, monitor); - if (remedy != null) { - remedies.add(remedy); - } - return Status.OK_STATUS; + determineBestSolutions(); } private IStatus computeAllRemediations(IProgressMonitor monitor) { - RemedyConfig[] remedyConfigs = RemedyConfig.getAllRemdyConfigs(); - //SubMonitor sub = SubMonitor.convert(monitor, Messages.RemediationOperation_ProfileChangeRequestProgress, remedyConfigs.length); SubMonitor sub = SubMonitor.convert(monitor, remedyConfigs.length); sub.setTaskName(Messages.RemediationOperation_ProfileChangeRequestProgress); List<Remedy> tmpRemedies = new ArrayList<Remedy>(remedyConfigs.length); diff --git a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemedyConfig.java b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemedyConfig.java index d18d2b2af..a4221d72a 100644 --- a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemedyConfig.java +++ b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/RemedyConfig.java @@ -33,7 +33,18 @@ public class RemedyConfig { } - public static RemedyConfig[] getAllRemdyConfigs() { + private RemedyConfig(boolean allowPartialInstall, boolean allowDifferentVersion, boolean allowInstalledUpdate, boolean allowInstalledRemoval) { + this.allowDifferentVersion = allowDifferentVersion; + this.allowInstalledRemoval = allowInstalledRemoval; + this.allowInstalledUpdate = allowInstalledUpdate; + this.allowPartialInstall = allowPartialInstall; + } + + public static RemedyConfig[] getCheckForUpdateRemedyConfigs() { + return new RemedyConfig[] {new RemedyConfig(false, true, true, false)}; + } + + public static RemedyConfig[] getAllRemedyConfigs() { Collection<RemedyConfig> remedyConfigs = new ArrayList<RemedyConfig>(); int allMasks = (1 << 4); for (int i = 1; i < allMasks; i++) { |