diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/provisional/p2/metadata/query/LatestIUVersionQuery.java')
-rw-r--r-- | bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/provisional/p2/metadata/query/LatestIUVersionQuery.java | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/provisional/p2/metadata/query/LatestIUVersionQuery.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/provisional/p2/metadata/query/LatestIUVersionQuery.java index f1baa98bd..1a6f66b48 100644 --- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/provisional/p2/metadata/query/LatestIUVersionQuery.java +++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/provisional/p2/metadata/query/LatestIUVersionQuery.java @@ -17,35 +17,30 @@ import org.eclipse.equinox.p2.metadata.query.IQueryResult; * This query returns the latest version for each unique VersionedID. * All other elements are discarded. */ -public class LatestIUVersionQuery extends ContextQuery { +public class LatestIUVersionQuery<T extends IVersionedId> extends ContextQuery<T> { /** * Performs the LatestIUVersionQuery */ - public IQueryResult perform(Iterator iterator) { - HashMap greatestIUVersion = new HashMap(); + public IQueryResult<T> perform(Iterator<T> iterator) { + HashMap<String, T> greatestIUVersion = new HashMap<String, T>(); while (iterator.hasNext()) { - Object next = iterator.next(); - - if (!(next instanceof IVersionedId)) - // Don't accept things if they are not IUs - continue; - IVersionedId versionedID = (IVersionedId) next; + T versionedID = iterator.next(); if (greatestIUVersion.containsKey(versionedID.getId())) { - IVersionedId currentIU = (IVersionedId) greatestIUVersion.get(versionedID.getId()); + T currentIU = greatestIUVersion.get(versionedID.getId()); if (currentIU.getVersion().compareTo(versionedID.getVersion()) < 0) greatestIUVersion.put(versionedID.getId(), versionedID); } else greatestIUVersion.put(versionedID.getId(), versionedID); } - Collection values = greatestIUVersion.values(); - Iterator valuesIterator = values.iterator(); + Collection<T> values = greatestIUVersion.values(); + Iterator<T> valuesIterator = values.iterator(); boolean continueGather = true; - Collector result = new Collector(); + Collector<T> result = new Collector<T>(); while (valuesIterator.hasNext() && continueGather) { - IVersionedId nextIU = (IVersionedId) valuesIterator.next(); + T nextIU = valuesIterator.next(); continueGather = result.accept(nextIU); } return result; |