Skip to content

Commit 54f9e14

Browse files
author
Stewart Miles
committed
Exposed manifest aliases from the ManifestReferences class.
Bug: 150471207 Change-Id: I4ea9f5e673fe3636b88bbc97eff52d71f5535349
1 parent 6f705f3 commit 54f9e14

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

source/VersionHandlerImpl/src/VersionHandlerImpl.cs

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,7 +1448,9 @@ private Dictionary<string, HashSet<string>> GetManifestAliasesByName() {
14481448
/// <summary>
14491449
/// Use manifest aliases to cosolidate manifest metadata.
14501450
/// </summary>
1451-
public void ConsolidateManifests() {
1451+
/// <returns>Flattened map of highest priority manifest name by each alias of the manifest
1452+
/// name.</returns>
1453+
public Dictionary<string, string> ConsolidateManifests() {
14521454
var aliasesByName = GetManifestAliasesByName();
14531455
// Flatten graph of manifest aliases so that each entry maps to the highest priority
14541456
// name.
@@ -1494,6 +1496,7 @@ public void ConsolidateManifests() {
14941496
canonicalFilenameAndMetadataByVersion.Value);
14951497
}
14961498
}
1499+
return manifestAliases;
14971500
}
14981501

14991502
/// <summary>
@@ -1685,6 +1688,16 @@ public class ManifestReferences {
16851688
/// </summary>
16861689
public HashSet<string> obsoleteFiles = new HashSet<string>();
16871690

1691+
/// <summary>
1692+
/// Backing store of Aliases.
1693+
/// </summary>
1694+
private HashSet<string> aliases = new HashSet<string>();
1695+
1696+
/// <summary>
1697+
/// Alias names of this manifest.
1698+
/// </summary>
1699+
public ICollection<string> Aliases { get { return aliases; } }
1700+
16881701
/// <summary>
16891702
/// Cache of all manifest references indexed by package name.
16901703
/// </summary>
@@ -1838,12 +1851,28 @@ public static List<ManifestReferences> FindAndReadManifests(FileMetadataSet meta
18381851
/// <returns>Dictionary of ManifestReferences indexed by package name.</returns>
18391852
public static Dictionary<string, ManifestReferences> FindAndReadManifestsByPackageName(
18401853
FileMetadataSet metadataSet) {
1841-
metadataSet.ConsolidateManifests();
1854+
var manifestAliases = metadataSet.ConsolidateManifests();
1855+
// Invert the map of manifest aliases to create a dictionary that maps canonical name
1856+
// to a set of aliases.
1857+
var aliasesByName = new Dictionary<string, HashSet<string>>();
1858+
foreach (var aliasAndName in manifestAliases) {
1859+
var alias = aliasAndName.Key;
1860+
var name = aliasAndName.Value;
1861+
HashSet<string> aliases;
1862+
if (!aliasesByName.TryGetValue(name, out aliases)) {
1863+
aliases = new HashSet<string>();
1864+
aliasesByName[name] = aliases;
1865+
}
1866+
aliases.Add(alias);
1867+
}
1868+
18421869
var manifestReferencesByPackageName = new Dictionary<string, ManifestReferences>();
18431870
foreach (var metadataByVersion in metadataSet.Values) {
18441871
ManifestReferences manifestReferences = new ManifestReferences();
18451872
if (manifestReferences.ParseManifests(metadataByVersion,
18461873
metadataSet)) {
1874+
manifestReferences.aliases =
1875+
aliasesByName[manifestReferences.filenameCanonical];
18471876
manifestReferencesByPackageName[manifestReferences.filenameCanonical] =
18481877
manifestReferences;
18491878
}

0 commit comments

Comments
 (0)