Skip to content

Commit a52842c

Browse files
Update AreAPICodeFilesTheSame (#8641)
* Handle AreAPICodeFilesTheSame for cases where the Parser Version is different * Deserialize code file using correct format * Sanitize token code file name
1 parent f5d5955 commit a52842c

3 files changed

Lines changed: 20 additions & 1 deletion

File tree

src/dotnet/APIView/APIViewWeb/Languages/LanguageProcessor.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ public override async Task<CodeFile> GetCodeFileAsync(string originalName, Strea
2626
var tempDirectory = Path.Combine(tempPath, "ApiView", randomSegment);
2727
Directory.CreateDirectory(tempDirectory);
2828
originalName = Path.GetFileName(originalName);
29+
// Replace spaces and parentheses in the file name to remove invalid file name in cosmos DB.
30+
// temporary work around. We need to make sure FileName is set for all requests.
31+
originalName = originalName.Replace(" ", "_").Replace("(", "").Replace(")","");
2932
var originalFilePath = Path.Combine(tempDirectory, originalName);
3033

3134
var jsonFilePath = (LanguageServiceHelpers.UseTreeStyleParser(this.Name)) ? Path.ChangeExtension(originalFilePath, ".json.tgz") : Path.ChangeExtension(originalFilePath, ".json");

src/dotnet/APIView/APIViewWeb/Managers/CodeFileManager.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,11 @@ public async Task<APICodeFileModel> CreateReviewCodeFileModel(string apiRevision
201201
/// <returns></returns>
202202
public async Task<bool> AreAPICodeFilesTheSame(RenderedCodeFile codeFileA, RenderedCodeFile codeFileB)
203203
{
204+
if (codeFileA.CodeFile.VersionString != codeFileA.CodeFile.VersionString)
205+
{
206+
return false;
207+
}
208+
204209
if (LanguageServiceHelpers.UseTreeStyleParser(codeFileA.CodeFile.Language))
205210
{
206211
var diffTree =CodeFileHelpers.ComputeAPIForestDiff(codeFileA.CodeFile.APIForest, codeFileB.CodeFile.APIForest);

src/dotnet/APIView/APIViewWeb/Repositories/BlobCodeFileRepository.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,18 @@ public async Task<RenderedCodeFile> GetCodeFileAsync(string revisionId, string c
4545

4646
var info = await client.DownloadAsync();
4747

48-
codeFile = new RenderedCodeFile(await CodeFile.DeserializeAsync(info.Value.Content, doTreeStyleParserDeserialization: LanguageServiceHelpers.UseTreeStyleParser(language)));
48+
CodeFile deserializedCodeFile = null;
49+
// Try to deserialize the code file twice, as the first time might fail due to the file being not yet updated to new tree token format.
50+
// This is a temporary work around. We should have a property in Cosmos revision to indicate whether a token is using new format or old format.
51+
try
52+
{
53+
deserializedCodeFile = await CodeFile.DeserializeAsync(info.Value.Content, doTreeStyleParserDeserialization: LanguageServiceHelpers.UseTreeStyleParser(language));
54+
}
55+
catch
56+
{
57+
deserializedCodeFile = await CodeFile.DeserializeAsync(info.Value.Content, doTreeStyleParserDeserialization: false);
58+
}
59+
codeFile = new RenderedCodeFile(deserializedCodeFile);
4960

5061
if (updateCache)
5162
{

0 commit comments

Comments
 (0)