### Eclipse Workspace Patch 1.0 #P org.eclipse.equinox.p2.artifact.repository Index: src/org/eclipse/equinox/internal/provisional/p2/artifact/repository/IArtifactRepository.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/provisional/p2/artifact/repository/IArtifactRepository.java,v retrieving revision 1.9.4.3 diff -u -r1.9.4.3 IArtifactRepository.java --- src/org/eclipse/equinox/internal/provisional/p2/artifact/repository/IArtifactRepository.java 17 Nov 2009 01:29:18 -0000 1.9.4.3 +++ src/org/eclipse/equinox/internal/provisional/p2/artifact/repository/IArtifactRepository.java 17 Nov 2009 19:27:31 -0000 @@ -15,7 +15,6 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; import org.eclipse.equinox.internal.provisional.p2.metadata.IArtifactKey; -import org.eclipse.equinox.internal.provisional.p2.metadata.query.IQueryable; import org.eclipse.equinox.internal.provisional.p2.repository.IRepository; import org.eclipse.equinox.internal.provisional.spi.p2.artifact.repository.AbstractArtifactRepository; @@ -28,7 +27,7 @@ *

* @noimplement This interface is not intended to be implemented by clients. */ -public interface IArtifactRepository extends IRepository, IQueryable { +public interface IArtifactRepository extends IRepository { /** * The return code to use when a client could/should retry a failed getArtifact() operation. #P org.eclipse.equinox.p2.metadata.repository Index: src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java,v retrieving revision 1.1.2.3 diff -u -r1.1.2.3 MetadataRepositoryComponent.java --- src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java 10 Nov 2009 21:24:42 -0000 1.1.2.3 +++ src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryComponent.java 17 Nov 2009 19:27:32 -0000 @@ -10,6 +10,8 @@ *******************************************************************************/ package org.eclipse.equinox.internal.p2.metadata.repository; +import org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager; + import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus; import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager; import org.eclipse.equinox.p2.core.IAgentLocation; @@ -22,7 +24,7 @@ public class MetadataRepositoryComponent implements IAgentServiceFactory { public Object createService(IProvisioningAgent agent) { - MetadataRepositoryManager manager = new MetadataRepositoryManager(); + AbstractRepositoryManager manager = new MetadataRepositoryManager(); final IProvisioningEventBus eventBus = (IProvisioningEventBus) agent.getService(IProvisioningEventBus.SERVICE_NAME); manager.setEventBus(eventBus); manager.setAgentLocation((IAgentLocation) agent.getService(IAgentLocation.SERVICE_NAME)); Index: src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryManager.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryManager.java,v retrieving revision 1.60.2.1 diff -u -r1.60.2.1 MetadataRepositoryManager.java --- src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryManager.java 3 Nov 2009 03:37:42 -0000 1.60.2.1 +++ src/org/eclipse/equinox/internal/p2/metadata/repository/MetadataRepositoryManager.java 17 Nov 2009 19:27:32 -0000 @@ -12,16 +12,14 @@ package org.eclipse.equinox.internal.p2.metadata.repository; import java.net.URI; -import java.util.*; +import java.util.Map; import org.eclipse.core.runtime.*; import org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager; import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; -import org.eclipse.equinox.internal.provisional.p2.metadata.query.*; import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository; import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager; import org.eclipse.equinox.internal.provisional.p2.repository.IRepository; import org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.MetadataRepositoryFactory; -import org.eclipse.equinox.p2.metadata.query.IQuery; import org.eclipse.osgi.util.NLS; /** @@ -82,9 +80,6 @@ return IRepository.TYPE_METADATA; } - /** - * @deprecated see {@link #loadRepository(URI, int, IProgressMonitor)} - */ public IMetadataRepository loadRepository(URI location, IProgressMonitor monitor) throws ProvisionException { return loadRepository(location, 0, monitor); } @@ -93,49 +88,6 @@ return (IMetadataRepository) loadRepository(location, monitor, null, flags); } - /** - * Performs a query against all of the installable units of each known - * repository, accumulating any objects that satisfy the query in the - * provided collector. - *

- * Note that using this method can be quite expensive, as every known - * metadata repository will be loaded in order to query each one. If a - * client wishes to query only certain repositories, it is better to use - * {@link #getKnownRepositories(int)} to filter the list of repositories - * loaded and then query each of the returned repositories. - *

- * This method is long-running; progress and cancellation are provided - * by the given progress monitor. - * - * @param query The query to perform against each installable unit in each known repository - * @param collector Collects the results of the query - * @param monitor a progress monitor, or null if progress - * reporting is not desired - * @return The collector argument - */ - public Collector query(IQuery query, Collector collector, IProgressMonitor monitor) { - URI[] locations = getKnownRepositories(REPOSITORIES_ALL); - List queryables = new ArrayList(locations.length); // use a list since we don't know exactly how many will load - SubMonitor sub = SubMonitor.convert(monitor, locations.length * 10); - for (int i = 0; i < locations.length; i++) { - try { - if (sub.isCanceled()) - throw new OperationCanceledException(); - queryables.add(loadRepository(locations[i], sub.newChild(9))); - } catch (ProvisionException e) { - //ignore this repository for this query - } - } - try { - IQueryable[] queryablesArray = (IQueryable[]) queryables.toArray(new IQueryable[queryables.size()]); - CompoundQueryable compoundQueryable = new CompoundQueryable(queryablesArray); - compoundQueryable.query(query, collector, sub.newChild(locations.length * 1)); - } finally { - sub.done(); - } - return collector; - } - public IMetadataRepository refreshRepository(URI location, IProgressMonitor monitor) throws ProvisionException { return (IMetadataRepository) basicRefreshRepository(location, monitor); } Index: src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepository.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepository.java,v retrieving revision 1.9.2.1 diff -u -r1.9.2.1 IMetadataRepository.java --- src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepository.java 3 Nov 2009 03:37:42 -0000 1.9.2.1 +++ src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepository.java 17 Nov 2009 19:27:32 -0000 @@ -13,7 +13,6 @@ import java.net.URI; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; -import org.eclipse.equinox.internal.provisional.p2.metadata.query.IQueryable; import org.eclipse.equinox.internal.provisional.p2.repository.IRepository; import org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.AbstractMetadataRepository; import org.eclipse.equinox.p2.metadata.query.IQuery; @@ -27,7 +26,7 @@ *

* @noimplement This interface is not intended to be implemented by clients. */ -public interface IMetadataRepository extends IRepository, IQueryable { +public interface IMetadataRepository extends IRepository { /** * Add the given installable units to this repository Index: src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepositoryManager.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepositoryManager.java,v retrieving revision 1.23.2.1 diff -u -r1.23.2.1 IMetadataRepositoryManager.java --- src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepositoryManager.java 3 Nov 2009 03:37:42 -0000 1.23.2.1 +++ src/org/eclipse/equinox/internal/provisional/p2/metadata/repository/IMetadataRepositoryManager.java 17 Nov 2009 19:27:32 -0000 @@ -15,7 +15,6 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; -import org.eclipse.equinox.internal.provisional.p2.metadata.query.IQueryable; import org.eclipse.equinox.internal.provisional.p2.repository.IRepositoryManager; /** @@ -25,7 +24,7 @@ * * @noimplement This interface is not intended to be implemented by clients. */ -public interface IMetadataRepositoryManager extends IRepositoryManager, IQueryable { +public interface IMetadataRepositoryManager extends IRepositoryManager { /** * The name used for obtaining a reference to the metadata repository manager service */ #P org.eclipse.equinox.p2.repository Index: META-INF/MANIFEST.MF =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF,v retrieving revision 1.15.2.2 diff -u -r1.15.2.2 MANIFEST.MF --- META-INF/MANIFEST.MF 10 Nov 2009 00:18:23 -0000 1.15.2.2 +++ META-INF/MANIFEST.MF 17 Nov 2009 19:27:32 -0000 @@ -21,6 +21,8 @@ org.eclipse.equinox.internal.p2.repository.helpers, org.eclipse.equinox.internal.provisional.p2.core, org.eclipse.equinox.internal.provisional.p2.metadata, + org.eclipse.equinox.internal.provisional.p2.metadata.query, + org.eclipse.equinox.p2.metadata.query, org.eclipse.equinox.security.storage, org.eclipse.osgi.service.debug, org.eclipse.osgi.util;version="1.1.0", Index: src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java,v retrieving revision 1.11.2.1 diff -u -r1.11.2.1 AbstractRepositoryManager.java --- src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java 10 Nov 2009 21:24:41 -0000 1.11.2.1 +++ src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java 17 Nov 2009 19:27:32 -0000 @@ -20,8 +20,10 @@ import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus; import org.eclipse.equinox.internal.provisional.p2.core.eventbus.ProvisioningListener; +import org.eclipse.equinox.internal.provisional.p2.metadata.query.*; import org.eclipse.equinox.internal.provisional.p2.repository.*; import org.eclipse.equinox.p2.core.IAgentLocation; +import org.eclipse.equinox.p2.metadata.query.IQuery; import org.eclipse.equinox.security.storage.EncodingUtils; import org.eclipse.osgi.util.NLS; import org.osgi.service.prefs.BackingStoreException; @@ -1041,4 +1043,46 @@ return suffixes; } + /** + * Performs a query against all of the installable units of each known + * repository, accumulating any objects that satisfy the query in the + * provided collector. + *

+ * Note that using this method can be quite expensive, as every known + * metadata repository will be loaded in order to query each one. If a + * client wishes to query only certain repositories, it is better to use + * {@link #getKnownRepositories(int)} to filter the list of repositories + * loaded and then query each of the returned repositories. + *

+ * This method is long-running; progress and cancellation are provided + * by the given progress monitor. + * + * @param query The query to perform against each installable unit in each known repository + * @param collector Collects the results of the query + * @param monitor a progress monitor, or null if progress + * reporting is not desired + * @return The collector argument + */ + public Collector query(IQuery query, Collector collector, IProgressMonitor monitor) { + URI[] locations = getKnownRepositories(REPOSITORIES_ALL); + List queryables = new ArrayList(locations.length); // use a list since we don't know exactly how many will load + SubMonitor sub = SubMonitor.convert(monitor, locations.length * 10); + for (int i = 0; i < locations.length; i++) { + try { + if (sub.isCanceled()) + throw new OperationCanceledException(); + queryables.add(loadRepository(locations[i], sub.newChild(9), null, 0)); + } catch (ProvisionException e) { + //ignore this repository for this query + } + } + try { + IQueryable[] queryablesArray = (IQueryable[]) queryables.toArray(new IQueryable[queryables.size()]); + CompoundQueryable compoundQueryable = new CompoundQueryable(queryablesArray); + compoundQueryable.query(query, collector, sub.newChild(locations.length * 1)); + } finally { + sub.done(); + } + return collector; + } } Index: src/org/eclipse/equinox/internal/provisional/p2/repository/IRepository.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/IRepository.java,v retrieving revision 1.2 diff -u -r1.2 IRepository.java --- src/org/eclipse/equinox/internal/provisional/p2/repository/IRepository.java 29 Apr 2009 16:10:52 -0000 1.2 +++ src/org/eclipse/equinox/internal/provisional/p2/repository/IRepository.java 17 Nov 2009 19:27:32 -0000 @@ -13,6 +13,7 @@ import java.net.URI; import java.util.Map; import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.equinox.internal.provisional.p2.metadata.query.IQueryable; /** * Base interface that defines common properties that may be provided by @@ -20,7 +21,7 @@ * * @noimplement This interface is not intended to be implemented by clients. */ -public interface IRepository extends IAdaptable { +public interface IRepository extends IAdaptable, IQueryable { /** * The key for a boolean property indicating that the repository * is a system repository. System repositories are implementation details Index: src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java,v retrieving revision 1.2.4.1 diff -u -r1.2.4.1 IRepositoryManager.java --- src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java 3 Nov 2009 19:13:46 -0000 1.2.4.1 +++ src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java 17 Nov 2009 19:27:32 -0000 @@ -11,6 +11,7 @@ package org.eclipse.equinox.internal.provisional.p2.repository; import java.net.URI; +import org.eclipse.equinox.internal.provisional.p2.metadata.query.IQueryable; /** * The common base class for metadata and artifact repository managers. @@ -26,7 +27,7 @@ * * @noimplement This interface is not intended to be implemented by clients. */ -public interface IRepositoryManager { +public interface IRepositoryManager extends IQueryable { /** * Constant used to indicate that all enabled repositories are of interest. */