diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/QueryableUpdates.java')
-rw-r--r-- | bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/QueryableUpdates.java | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/QueryableUpdates.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/QueryableUpdates.java index 96b00f645..fbcad64ce 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/QueryableUpdates.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/QueryableUpdates.java @@ -13,52 +13,47 @@ package org.eclipse.equinox.internal.p2.ui.query; import java.util.ArrayList; import org.eclipse.core.runtime.*; -import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper; -import org.eclipse.equinox.internal.p2.ui.ProvUIActivator; import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; import org.eclipse.equinox.internal.provisional.p2.director.IPlanner; -import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext; -import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; -import org.eclipse.equinox.internal.provisional.p2.metadata.query.*; -import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI; -import org.eclipse.ui.statushandlers.StatusManager; +import org.eclipse.equinox.p2.engine.ProvisioningContext; +import org.eclipse.equinox.p2.metadata.IInstallableUnit; +import org.eclipse.equinox.p2.query.*; +import org.eclipse.equinox.p2.ui.ProvisioningUI; /** * An object that implements a query for available updates */ -public class QueryableUpdates implements IQueryable { +public class QueryableUpdates implements IQueryable<IInstallableUnit> { private IInstallableUnit[] iusToUpdate; + ProvisioningUI ui; - public QueryableUpdates(IInstallableUnit[] iusToUpdate) { + public QueryableUpdates(ProvisioningUI ui, IInstallableUnit[] iusToUpdate) { + this.ui = ui; this.iusToUpdate = iusToUpdate; } - public Collector query(Query query, Collector result, IProgressMonitor monitor) { + public IQueryResult<IInstallableUnit> query(IQuery<IInstallableUnit> query, IProgressMonitor monitor) { if (monitor == null) monitor = new NullProgressMonitor(); int totalWork = 2000; monitor.beginTask(ProvUIMessages.QueryableUpdates_UpdateListProgress, totalWork); - IPlanner planner = (IPlanner) ServiceHelper.getService(ProvUIActivator.getContext(), IPlanner.class.getName()); - if (planner == null) { - ProvUI.reportStatus(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, ProvUIMessages.ProvisioningUtil_NoPlannerFound), StatusManager.SHOW | StatusManager.LOG); - return result; - } + IPlanner planner = ui.getSession().getPlanner(); try { - ArrayList allUpdates = new ArrayList(); + ArrayList<IInstallableUnit> allUpdates = new ArrayList<IInstallableUnit>(); for (int i = 0; i < iusToUpdate.length; i++) { if (monitor.isCanceled()) - return result; + return Collector.emptyCollector(); IInstallableUnit[] updates = planner.updatesFor(iusToUpdate[i], new ProvisioningContext(), new SubProgressMonitor(monitor, totalWork / 2 / iusToUpdate.length)); for (int j = 0; j < updates.length; j++) allUpdates.add(updates[j]); } - query.perform(allUpdates.iterator(), result); + return query.perform(allUpdates.iterator()); } catch (OperationCanceledException e) { // Nothing more to do, return result + return Collector.emptyCollector(); } finally { monitor.done(); } - return result; } } |