Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSusan Franklin2008-02-29 00:12:54 +0000
committerSusan Franklin2008-02-29 00:12:54 +0000
commit3e227ecff8d9feb2cc445402b00558677027521c (patch)
treefc763b48f2506e6563ce561231d5ccaa6fbf456e /bundles/org.eclipse.equinox.p2.updatechecker
parentff6deef9600f6e8a2611fb73ef775a35abedf112 (diff)
downloadrt.equinox.p2-3e227ecff8d9feb2cc445402b00558677027521c.tar.gz
rt.equinox.p2-3e227ecff8d9feb2cc445402b00558677027521c.tar.xz
rt.equinox.p2-3e227ecff8d9feb2cc445402b00558677027521c.zip
Bug 220786 - [ui] UpdateChecker should let callers supply a query for what updates to check
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.updatechecker')
-rw-r--r--bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/provisional/p2/updatechecker/IUpdateChecker.java4
2 files changed, 14 insertions, 9 deletions
diff --git a/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java b/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java
index 205fe1abc..761126214 100644
--- a/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java
+++ b/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java
@@ -21,6 +21,7 @@ import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery;
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager;
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
+import org.eclipse.equinox.internal.provisional.p2.query.Query;
import org.eclipse.equinox.internal.provisional.p2.updatechecker.*;
/**
@@ -42,11 +43,13 @@ public class UpdateChecker implements IUpdateChecker {
long poll, delay;
IUpdateListener listener;
String profileId;
+ Query query;
- UpdateCheckThread(String profileId, long delay, long poll, IUpdateListener listener) {
+ UpdateCheckThread(String profileId, Query query, long delay, long poll, IUpdateListener listener) {
this.poll = poll;
this.delay = delay;
this.profileId = profileId;
+ this.query = query;
this.listener = listener;
}
@@ -58,7 +61,7 @@ public class UpdateChecker implements IUpdateChecker {
while (!done) {
log("Checking for updates for " + profileId + " at " + getTimeStamp()); //$NON-NLS-1$ //$NON-NLS-2$
- IInstallableUnit[] iusWithUpdates = checkForUpdates(profileId);
+ IInstallableUnit[] iusWithUpdates = checkForUpdates(profileId, query);
if (iusWithUpdates.length > 0) {
log("Notifying listener of available updates"); //$NON-NLS-1$
UpdateEvent event = new UpdateEvent(profileId, iusWithUpdates);
@@ -84,9 +87,9 @@ public class UpdateChecker implements IUpdateChecker {
/* (non-Javadoc)
* @see org.eclipse.equinox.internal.provisional.p2.updatechecker.IUpdateChecker#addUpdateCheck(java.lang.String, long, long, org.eclipse.equinox.internal.provisional.p2.updatechecker.IUpdateListener)
*/
- public void addUpdateCheck(String profileId, long delay, long poll, IUpdateListener listener) {
+ public void addUpdateCheck(String profileId, Query query, long delay, long poll, IUpdateListener listener) {
log("Adding update checker for " + profileId + " at " + getTimeStamp()); //$NON-NLS-1$ //$NON-NLS-2$
- UpdateCheckThread thread = new UpdateCheckThread(profileId, delay, poll, listener);
+ UpdateCheckThread thread = new UpdateCheckThread(profileId, query, delay, poll, listener);
checkers.add(thread);
thread.start();
}
@@ -110,15 +113,15 @@ public class UpdateChecker implements IUpdateChecker {
* Return the array of ius in the profile that have updates
* available.
*/
- IInstallableUnit[] checkForUpdates(String profileId) {
- // TODO this is naive. We get all the ius every time whereas we
- // could monitor changes in the profile.
+ IInstallableUnit[] checkForUpdates(String profileId, Query query) {
IProfile profile = getProfileRegistry().getProfile(profileId);
ArrayList iusWithUpdates = new ArrayList();
if (profile == null)
return new IInstallableUnit[0];
ProvisioningContext context = new ProvisioningContext(getAvailableRepositories());
- Iterator iter = profile.query(InstallableUnitQuery.ANY, new Collector(), null).iterator();
+ if (query == null)
+ query = InstallableUnitQuery.ANY;
+ Iterator iter = profile.query(query, new Collector(), null).iterator();
while (iter.hasNext()) {
IInstallableUnit iu = (IInstallableUnit) iter.next();
IInstallableUnit[] replacements = getPlanner().updatesFor(iu, context, null);
diff --git a/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/provisional/p2/updatechecker/IUpdateChecker.java b/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/provisional/p2/updatechecker/IUpdateChecker.java
index 335a82b93..a343d7858 100644
--- a/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/provisional/p2/updatechecker/IUpdateChecker.java
+++ b/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/provisional/p2/updatechecker/IUpdateChecker.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.equinox.internal.provisional.p2.updatechecker;
+import org.eclipse.equinox.internal.provisional.p2.query.Query;
+
/**
* An UpdateChecker periodically polls for updates to specified profiles and
* informs listeners if updates are available. Listeners may then determine
@@ -19,7 +21,7 @@ public interface IUpdateChecker {
public static final String SERVICE_NAME = IUpdateChecker.class.getName();
public static long ONE_TIME_CHECK = -1L;
- public abstract void addUpdateCheck(String profileId, long delay, long poll, IUpdateListener listener);
+ public abstract void addUpdateCheck(String profileId, Query iusToCheckQuery, long delay, long poll, IUpdateListener listener);
public abstract void removeUpdateCheck(IUpdateListener listener);

Back to the top