### Eclipse Workspace Patch 1.0 #P org.eclipse.equinox.p2.director.app Index: src/org/eclipse/equinox/internal/p2/director/app/Application.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Application.java,v retrieving revision 1.57 diff -u -r1.57 Application.java --- src/org/eclipse/equinox/internal/p2/director/app/Application.java 8 Oct 2009 13:32:12 -0000 1.57 +++ src/org/eclipse/equinox/internal/p2/director/app/Application.java 15 Oct 2009 17:43:50 -0000 @@ -407,7 +407,7 @@ IProfile profile = initializeProfile(); query = new InstallableUnitQuery(root, version == null ? VersionRange.emptyRange : new VersionRange(version, true, version, true)); - roots = collectRootIUs(metadataRepositoryLocations, new CompositeQuery(new Query[] {query, new LatestIUVersionQuery()}), new Collector()); + roots = collectRootIUs(metadataRepositoryLocations, new PipedQuery(new Query[] {query, new LatestIUVersionQuery()}), new Collector()); if (roots.size() <= 0) roots = profile.query(query, roots, new NullProgressMonitor()); if (roots.size() <= 0) { Index: src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java,v retrieving revision 1.15 diff -u -r1.15 DirectorApplication.java --- src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java 14 Oct 2009 02:52:02 -0000 1.15 +++ src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java 15 Oct 2009 17:43:50 -0000 @@ -258,7 +258,7 @@ Query query = new InstallableUnitQuery(rootName.getId(), Version.emptyVersion.equals(v) ? VersionRange.emptyRange : new VersionRange(v, true, v, true)); Collector roots; if (forInstall) - roots = collectRootIUs(new CompositeQuery(new Query[] {query, new LatestIUVersionQuery()}), new Collector()); + roots = collectRootIUs(new PipedQuery(new Query[] {query, new LatestIUVersionQuery()}), new Collector()); else roots = new Collector(); if (roots.size() <= 0) #P org.eclipse.equinox.p2.metadata Index: src/org/eclipse/equinox/internal/provisional/p2/metadata/query/CompositeQuery.java =================================================================== RCS file: src/org/eclipse/equinox/internal/provisional/p2/metadata/query/CompositeQuery.java diff -N src/org/eclipse/equinox/internal/provisional/p2/metadata/query/CompositeQuery.java --- src/org/eclipse/equinox/internal/provisional/p2/metadata/query/CompositeQuery.java 6 Oct 2009 21:25:25 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,64 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009 EclipseSource and others. All rights reserved. This -* program and the accompanying materials are made available under the terms of -* the Eclipse Public License v1.0 which accompanies this distribution, and is -* available at http://www.eclipse.org/legal/epl-v10.html -* -* Contributors: -* EclipseSource - initial API and implementation -******************************************************************************/ -package org.eclipse.equinox.internal.provisional.p2.metadata.query; - - -import java.util.Iterator; - -/** - * A Composite Query is an aggregate query in which each sub-query - * is executed in succession. The results from the ith sub-query - * are piped as input into the i+1th sub-query. - */ -public class CompositeQuery implements Query { - protected Query[] queries; - - public CompositeQuery(Query[] queries) { - this.queries = queries; - } - - /** - * Gets the ID for this Query. - */ - public String getId() { - return QueryHelpers.getId(this); - } - - /** - * Gets a particular property of the query. - * @param property The property to retrieve - */ - public Object getProperty(String property) { - return QueryHelpers.getProperty(this, property); - } - - /** - * Set the queries of this composite. This is needed to allow subclasses of - * CompsiteQuery to set the queries in a constructor - */ - protected final void setQueries(Query[] queries) { - this.queries = queries; - } - - public Collector perform(Iterator iterator, Collector result) { - Collector collector; - Iterator iter = iterator; - for (int i = 0; i < queries.length; i++) { - // Take the results of the previous query and using them - // to drive the next one (i.e. composing queries) - collector = queries[i].perform(iter, new Collector()); - iter = collector.iterator(); - } - boolean gatherResults = true; - while (iter.hasNext() && gatherResults) - gatherResults = result.accept(iter.next()); - return result; - } -} Index: src/org/eclipse/equinox/internal/provisional/p2/metadata/query/PipedQuery.java =================================================================== RCS file: src/org/eclipse/equinox/internal/provisional/p2/metadata/query/PipedQuery.java diff -N src/org/eclipse/equinox/internal/provisional/p2/metadata/query/PipedQuery.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/equinox/internal/provisional/p2/metadata/query/PipedQuery.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,64 @@ +/******************************************************************************* +* Copyright (c) 2009 EclipseSource and others. All rights reserved. This +* program and the accompanying materials are made available under the terms of +* the Eclipse Public License v1.0 which accompanies this distribution, and is +* available at http://www.eclipse.org/legal/epl-v10.html +* +* Contributors: +* EclipseSource - initial API and implementation +******************************************************************************/ +package org.eclipse.equinox.internal.provisional.p2.metadata.query; + + +import java.util.Iterator; + +/** + * A Composite Query is an aggregate query in which each sub-query + * is executed in succession. The results from the ith sub-query + * are piped as input into the i+1th sub-query. + */ +public class PipedQuery implements Query { + protected Query[] queries; + + public PipedQuery(Query[] queries) { + this.queries = queries; + } + + /** + * Gets the ID for this Query. + */ + public String getId() { + return QueryHelpers.getId(this); + } + + /** + * Gets a particular property of the query. + * @param property The property to retrieve + */ + public Object getProperty(String property) { + return QueryHelpers.getProperty(this, property); + } + + /** + * Set the queries of this composite. This is needed to allow subclasses of + * CompsiteQuery to set the queries in a constructor + */ + protected final void setQueries(Query[] queries) { + this.queries = queries; + } + + public Collector perform(Iterator iterator, Collector result) { + Collector collector; + Iterator iter = iterator; + for (int i = 0; i < queries.length; i++) { + // Take the results of the previous query and using them + // to drive the next one (i.e. composing queries) + collector = queries[i].perform(iter, new Collector()); + iter = collector.iterator(); + } + boolean gatherResults = true; + while (iter.hasNext() && gatherResults) + gatherResults = result.accept(iter.next()); + return result; + } +} #P org.eclipse.equinox.p2.publisher Index: src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java,v retrieving revision 1.35 diff -u -r1.35 AbstractPublisherAction.java --- src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java 14 Oct 2009 02:52:04 -0000 1.35 +++ src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java 15 Oct 2009 17:43:53 -0000 @@ -505,7 +505,7 @@ query = new InstallableUnitQuery(iuId, version); collector = new SingleElementCollector(); } else { - query = new CompositeQuery(new Query[] {new InstallableUnitQuery(iuId), new LatestIUVersionQuery()}); + query = new PipedQuery(new Query[] {new InstallableUnitQuery(iuId), new LatestIUVersionQuery()}); collector = new Collector(); } #P org.eclipse.equinox.p2.repository.tools Index: src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/IUDescription.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/IUDescription.java,v retrieving revision 1.7 diff -u -r1.7 IUDescription.java --- src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/IUDescription.java 9 Oct 2009 20:49:13 -0000 1.7 +++ src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/IUDescription.java 15 Oct 2009 17:43:55 -0000 @@ -119,7 +119,7 @@ if (queries.size() == 1) return (Query) queries.get(0); - return new CompositeQuery((Query[]) queries.toArray(new Query[queries.size()])); + return new PipedQuery((Query[]) queries.toArray(new Query[queries.size()])); } private Query processQueryString() { #P org.eclipse.equinox.p2.tests Index: src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java,v retrieving revision 1.3 diff -u -r1.3 AggregateQueryTest.java --- src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java 6 Oct 2009 21:24:46 -0000 1.3 +++ src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java 15 Oct 2009 17:43:56 -0000 @@ -28,7 +28,7 @@ } public void testEmptyCompositeQuery() { - CompositeQuery query = new CompositeQuery(new Query[0]); + PipedQuery query = new PipedQuery(new Query[0]); query.perform(getABCDE().iterator(), new Collector()); // We should not throw an exception. No guarantee on what perform // will return in this case @@ -108,11 +108,11 @@ } }; - CompositeQuery compoundQuery = new CompositeQuery(new Query[] {getLatest, getAllBut3}); + PipedQuery compoundQuery = new PipedQuery(new Query[] {getLatest, getAllBut3}); Collector result = compoundQuery.perform(get123().iterator(), new Collector()); assertEquals(0, result.size()); - compoundQuery = new CompositeQuery(new Query[] {getAllBut3, getLatest}); + compoundQuery = new PipedQuery(new Query[] {getAllBut3, getLatest}); result = compoundQuery.perform(get123().iterator(), new Collector()); assertEquals(1, result.size()); assertEquals("2", result.toCollection().iterator().next()); Index: src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java,v retrieving revision 1.4 diff -u -r1.4 CompoundQueryableTest.java --- src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java 6 Oct 2009 21:24:47 -0000 1.4 +++ src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java 15 Oct 2009 17:43:56 -0000 @@ -349,7 +349,7 @@ CompoundQueryable cQueryable1 = new CompoundQueryable(new IQueryable[] {queryable3, queryable2}); CompoundQueryable cQueryable = new CompoundQueryable(new IQueryable[] {cQueryable1, queryable1}); CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor(); - Collector collector = cQueryable.query(new CompositeQuery(new Query[] {contextQuery, greatestNumberQuery}), new Collector(), monitor); + Collector collector = cQueryable.query(new PipedQuery(new Query[] {contextQuery, greatestNumberQuery}), new Collector(), monitor); assertEquals("1.0", 1, collector.size()); Collection collection = collector.toCollection(); assertTrue("1.2", collection.contains(12)); Index: src/org/eclipse/equinox/p2/tests/core/QueryTest.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/QueryTest.java,v retrieving revision 1.7 diff -u -r1.7 QueryTest.java --- src/org/eclipse/equinox/p2/tests/core/QueryTest.java 6 Oct 2009 21:24:46 -0000 1.7 +++ src/org/eclipse/equinox/p2/tests/core/QueryTest.java 15 Oct 2009 17:43:56 -0000 @@ -203,7 +203,7 @@ Collector collector = new Collector(); PerformHookQuery query1 = new PerformHookQuery(); PerformHookQuery query2 = new PerformHookQuery(); - CompositeQuery cQuery = new CompositeQuery(new Query[] {query1, query2}); + PipedQuery cQuery = new PipedQuery(new Query[] {query1, query2}); assertFalse("1.0", query1.isComplete()); assertFalse("1.1", query1.isPrepared()); assertFalse("1.2", query2.isComplete()); @@ -246,7 +246,7 @@ Collector collector = new Collector(); PerformHookQuery query1 = new PerformHookQuery(); PerformHookQuery query2 = new PerformHookQuery(); - CompositeQuery cQuery = new CompositeQuery(new Query[] {query1, query2}); + PipedQuery cQuery = new PipedQuery(new Query[] {query1, query2}); assertFalse("1.0", query1.isComplete()); assertFalse("1.1", query1.isPrepared()); assertFalse("1.2", query2.isComplete()); Index: src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java,v retrieving revision 1.15 diff -u -r1.15 CompositeMetadataRepositoryTest.java --- src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java 8 Oct 2009 13:32:16 -0000 1.15 +++ src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java 15 Oct 2009 17:43:56 -0000 @@ -478,7 +478,7 @@ CompositeMetadataRepository compositeRepo = createRepo(false); compositeRepo.addChild(location1); compositeRepo.addChild(location2); - CompositeQuery cQuery = new CompositeQuery(new Query[] {new MatchQuery() { + PipedQuery cQuery = new PipedQuery(new Query[] {new MatchQuery() { public boolean isMatch(Object candidate) { if (candidate instanceof IInstallableUnit) { IInstallableUnit iInstallableUnit = (IInstallableUnit) candidate; #P org.eclipse.equinox.p2.ui Index: src/org/eclipse/equinox/internal/p2/ui/DefaultQueryProvider.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/DefaultQueryProvider.java,v retrieving revision 1.21 diff -u -r1.21 DefaultQueryProvider.java --- src/org/eclipse/equinox/internal/p2/ui/DefaultQueryProvider.java 6 Oct 2009 21:24:20 -0000 1.21 +++ src/org/eclipse/equinox/internal/p2/ui/DefaultQueryProvider.java 15 Oct 2009 17:43:57 -0000 @@ -93,7 +93,7 @@ if (context.getViewType() == IUViewQueryContext.AVAILABLE_VIEW_FLAT || !context.getUseCategories()) { AvailableIUWrapper wrapper = new AvailableIUWrapper(queryable, element, false, context.getShowAvailableChildren()); if (showLatest) - topLevelQuery = new CompositeQuery(new Query[] {topLevelQuery, new LatestIUVersionQuery()}); + topLevelQuery = new PipedQuery(new Query[] {topLevelQuery, new LatestIUVersionQuery()}); if (targetProfile != null) wrapper.markInstalledIUs(targetProfile, hideInstalled); return new ElementQueryDescriptor(queryable, topLevelQuery, new Collector(), wrapper); @@ -116,12 +116,12 @@ // be visible in the category. if (element instanceof CategoryElement) { if (showLatest) - meetsAnyRequirementQuery = new CompositeQuery(new Query[] {meetsAnyRequirementQuery, new LatestIUVersionQuery()}); + meetsAnyRequirementQuery = new PipedQuery(new Query[] {meetsAnyRequirementQuery, new LatestIUVersionQuery()}); return new ElementQueryDescriptor(queryable, meetsAnyRequirementQuery, new Collector(), availableIUWrapper); } Query query = CompoundQuery.createCompoundQuery(new Query[] {topLevelQuery, meetsAnyRequirementQuery}, true); if (showLatest) - query = new CompositeQuery(new Query[] {query, new LatestIUVersionQuery()}); + query = new PipedQuery(new Query[] {query, new LatestIUVersionQuery()}); // If it's not a category, these are generic requirements and should be filtered by the visibility property (topLevelQuery) return new ElementQueryDescriptor(queryable, query, new Collector(), availableIUWrapper); } #P org.eclipse.equinox.p2.updatesite Index: src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java,v retrieving revision 1.26 diff -u -r1.26 SiteXMLAction.java --- src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java 8 Oct 2009 13:32:11 -0000 1.26 +++ src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java 15 Oct 2009 17:43:58 -0000 @@ -126,7 +126,7 @@ Query query = null; Collector collector = null; if (version.equals(Version.emptyVersion)) { - query = new CompositeQuery(new Query[] {new InstallableUnitQuery(id), new LatestIUVersionQuery()}); + query = new PipedQuery(new Query[] {new InstallableUnitQuery(id), new LatestIUVersionQuery()}); collector = new Collector(); } else if (version.getQualifier() != null && version.getQualifier().endsWith(QUALIFIER)) { final String v = versionString.substring(0, versionString.indexOf(QUALIFIER)); @@ -141,7 +141,7 @@ return false; } }; - query = new CompositeQuery(new Query[] {qualifierQuery, new LatestIUVersionQuery()}); + query = new PipedQuery(new Query[] {qualifierQuery, new LatestIUVersionQuery()}); collector = new Collector(); } else { query = new InstallableUnitQuery(id, version);