public void ReportExternalXRefSpec(XRefSpec spec) { ExternalXRefSpec.AddOrUpdate( spec.Uid, spec, (uid, old) => old + spec); }
public XRefSpec GetXrefSpec(string uid) { if (uid == null) { throw new ArgumentNullException(nameof(uid)); } if (string.IsNullOrWhiteSpace(uid)) { return(null); } if (XRefSpecMap.TryGetValue(uid, out XRefSpec xref)) { return(xref); } if (ExternalXRefSpec.TryGetValue(uid, out xref)) { return(xref); } if (UnknownUids.ContainsKey(uid)) { return(null); } if (_reader != null) { xref = _reader.Result.Find(uid); if (xref != null) { return(ExternalXRefSpec.AddOrUpdate(uid, xref, (_, old) => old + xref)); } } if (ExternalReferencePackages.Length > 0) { using (var externalReferences = new ExternalReferencePackageCollection(ExternalReferencePackages, MaxParallelism)) { xref = GetExternalReference(externalReferences, uid); } if (xref != null) { return(ExternalXRefSpec.AddOrUpdate(uid, xref, (_, old) => old + xref)); } } var uidList = ResolveByXRefServiceAsync(new List <string> { uid }, ExternalXRefSpec).Result; if (uidList.Count == 0) { return(ExternalXRefSpec[uid]); } UnknownUids.TryAdd(uid, null); return(null); }
public async Task ResolveExternalXRefSpecForNoneSpecsAsync() { // remove internal xref. var uidList = (from uid in XRef where !ExternalXRefSpec.ContainsKey(uid) && !XRefSpecMap.ContainsKey(uid) select uid) .Concat( from spec in ExternalXRefSpec.Values where spec.Href == null && !spec.IsSpec && !XRefSpecMap.ContainsKey(spec.Uid) select spec.Uid) .ToList(); if (uidList.Count == 0) { return; } uidList = ResolveByXRefMaps(uidList, ExternalXRefSpec); if (uidList.Count > 0) { uidList = ResolveByExternalReferencePackages(uidList, ExternalXRefSpec); } if (uidList.Count > 0) { uidList = await ResolveByXRefServiceAsync(uidList, ExternalXRefSpec); } Logger.LogVerbose($"{uidList.Count} uids are unresolved."); foreach (var uid in uidList) { UnknownUids.TryAdd(uid, null); } }
public void ReportExternalXRefSpec(XRefSpec spec) { if (string.IsNullOrWhiteSpace(spec.Uid)) { return; } ExternalXRefSpec.AddOrUpdate( spec.Uid, spec, (uid, old) => old + spec); }
public XRefSpec GetXrefSpec(string uid) { if (string.IsNullOrEmpty(uid)) { throw new ArgumentNullException(nameof(uid)); } XRefSpec xref; if (XRefSpecMap.TryGetValue(uid, out xref)) { return(xref); } if (ExternalXRefSpec.TryGetValue(uid, out xref)) { return(xref); } if (UnknownUids.ContainsKey(uid)) { return(null); } if (XRefMaps != null && XRefMaps.Count > 0) { xref = (from map in XRefMaps select new BasicXRefMapReader(map).Find(uid)).FirstOrDefault(); if (xref != null) { return(ExternalXRefSpec.AddOrUpdate(uid, xref, (_, old) => old + xref)); } } if (ExternalReferencePackages.Length > 0) { using (var externalReferences = new ExternalReferencePackageCollection(ExternalReferencePackages, MaxParallelism)) { xref = GetExternalReference(externalReferences, uid); } if (xref != null) { return(ExternalXRefSpec.AddOrUpdate(uid, xref, (_, old) => old + xref)); } } UnknownUids.TryAdd(uid, null); return(null); }
public XRefSpec GetXrefSpec(string uid) { if (string.IsNullOrEmpty(uid)) { throw new ArgumentNullException(nameof(uid)); } if (XRefSpecMap.TryGetValue(uid, out XRefSpec xref)) { return(xref); } if (ExternalXRefSpec.TryGetValue(uid, out xref)) { return(xref); } if (UnknownUids.ContainsKey(uid)) { return(null); } if (_reader != null) { xref = _reader.Result.Find(uid); if (xref != null) { return(ExternalXRefSpec.AddOrUpdate(uid, xref, (_, old) => old + xref)); } } if (ExternalReferencePackages.Length > 0) { using (var externalReferences = new ExternalReferencePackageCollection(ExternalReferencePackages, MaxParallelism)) { xref = GetExternalReference(externalReferences, uid); } if (xref != null) { return(ExternalXRefSpec.AddOrUpdate(uid, xref, (_, old) => old + xref)); } } UnknownUids.TryAdd(uid, null); return(null); }