Better preserve repository order in target generator when not sorting
diff --git a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
index 9be5093..95b1651 100644
--- a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
+++ b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
@@ -81,7 +81,6 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
@@ -631,7 +630,7 @@
private static Set<IVersionedId> getExtraUnits(Annotation annotation)
{
- Set<IVersionedId> extraUnits = new HashSet<>();
+ Set<IVersionedId> extraUnits = new LinkedHashSet<>();
String values = annotation.getDetails().get(ANNOTATION_EXTRA_UNITS);
if (!StringUtil.isEmpty(values))
@@ -675,13 +674,13 @@
List<String> preferredURLs, boolean generateImplicitUnits, boolean minimizeImplicitUnits, boolean singleLocation, boolean sortLocations,
boolean ignoreJavaRequirements, IProgressMonitor monitor)
{
- Set<String> workspaceIDs = new HashSet<>();
+ Set<String> workspaceIDs = new LinkedHashSet<>();
for (IInstallableUnit iu : workspaceIUInfos.keySet())
{
workspaceIDs.add(iu.getId());
}
- Set<IInstallableUnit> profileIUs = new HashSet<>();
+ Set<IInstallableUnit> profileIUs = new LinkedHashSet<>();
for (IInstallableUnit iu : P2Util.asIterable(profile.query(QueryUtil.createIUAnyQuery(), monitor)))
{
String id = iu.getId();
@@ -775,7 +774,7 @@
}
private static Map<IMetadataRepository, Set<IInstallableUnit>> assignUnits(Map<String, IMetadataRepository> queryables, Set<IVersionedId> extraUnits,
- boolean generateImplicitUnits, boolean minimizeImplicitUnits, boolean singleLocation, boolean sortLocations, boolean igoreJavaRquirements,
+ boolean generateImplicitUnits, boolean minimizeImplicitUnits, boolean singleLocation, boolean sortLocations, boolean ignoreJavaRequirements,
Set<IInstallableUnit> resolvedIUs, IProgressMonitor monitor)
{
Map<IMetadataRepository, Set<IInstallableUnit>> result = sortLocations ? new TreeMap<>(new Comparator<IMetadataRepository>()
@@ -787,6 +786,14 @@
}
}) : new LinkedHashMap<>();
+ if (!sortLocations)
+ {
+ for (IMetadataRepository metadataRepository : queryables.values())
+ {
+ CollectionUtil.getSet(result, metadataRepository);
+ }
+ }
+
if (singleLocation)
{
IQueryable<IInstallableUnit> queryable = QueryUtil.compoundQueryable(queryables.values());
@@ -804,7 +811,7 @@
if (!generateImplicitUnits)
{
- RootAnalyzer.removeImplicitUnits(ius, queryable, monitor, false, igoreJavaRquirements);
+ RootAnalyzer.removeImplicitUnits(ius, queryable, monitor, false, ignoreJavaRequirements);
}
else if (minimizeImplicitUnits)
{
@@ -841,7 +848,7 @@
if (!generateImplicitUnits)
{
- RootAnalyzer.removeImplicitUnits(result, monitor, false, igoreJavaRquirements);
+ RootAnalyzer.removeImplicitUnits(result, monitor, false, ignoreJavaRequirements);
}
else if (minimizeImplicitUnits)
{