diff options
2 files changed, 22 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java index f2ce43ad5..aaa3e1f01 100644 --- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java +++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/UpdateHandler.java @@ -11,6 +11,7 @@ package org.eclipse.equinox.internal.p2.ui.sdk; import org.eclipse.core.runtime.*; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.equinox.p2.operations.RepositoryTracker; import org.eclipse.equinox.p2.operations.UpdateOperation; import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob; @@ -62,6 +63,12 @@ public class UpdateHandler extends PreloadingRepositoryHandler { } @Override + protected void setLoadJobProperties(Job loadJob) { + super.setLoadJobProperties(loadJob); + loadJob.setProperty(LoadMetadataRepositoryJob.SUPPRESS_REPOSITORY_ERRORS, Boolean.toString(true)); + } + + @Override protected String getProgressTaskName() { return ProvSDKMessages.UpdateHandler_ProgressTaskName; } diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java index bae1955af..4d21f9020 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LoadMetadataRepositoryJob.java @@ -68,6 +68,15 @@ public class LoadMetadataRepositoryJob extends ProvisioningJob { */ public static final QualifiedName ACCUMULATE_LOAD_ERRORS = new QualifiedName(ProvUIActivator.PLUGIN_ID, "ACCUMULATE_LOAD_ERRORS"); //$NON-NLS-1$ + /** + * The key that should be used to set a property on a repository load job to indicate + * that load errors should be suppressed. This is useful if repositories + * are being loaded in the background as part of a check for update. + * + * @since 2.2 + */ + public static final QualifiedName SUPPRESS_REPOSITORY_ERRORS = new QualifiedName(ProvUIActivator.PLUGIN_ID, "SUPPRESS_REPOSITORY_ERRORS"); //$NON-NLS-1$ + private List<IMetadataRepository> repoCache = new ArrayList<IMetadataRepository>(); private RepositoryTracker tracker; private MultiStatus accumulatedStatus; @@ -125,6 +134,8 @@ public class LoadMetadataRepositoryJob extends ProvisioningJob { } private void handleLoadFailure(ProvisionException e, URI location) { + if (shouldSuppressErrors()) // If we should suppress errors, just skip this + return; if (shouldAccumulateFailures()) { // Some ProvisionExceptions include an empty multi status with a message. // Since empty multi statuses have a severity OK, The platform status handler doesn't handle @@ -146,6 +157,10 @@ public class LoadMetadataRepositoryJob extends ProvisioningJob { } } + private boolean shouldSuppressErrors() { + return getProperty(LoadMetadataRepositoryJob.SUPPRESS_REPOSITORY_ERRORS) != null; + } + private boolean shouldAccumulateFailures() { return getProperty(LoadMetadataRepositoryJob.ACCUMULATE_LOAD_ERRORS) != null; } |