Skip to content

Conversation

pjcollins
Copy link
Member

@pjcollins pjcollins commented Jan 25, 2022

Context: dotnet/android#6662

The @(JavaSourceJar) item supports the following metadata:

<JavaSourceJar Include="javasourcejartest-sources.jar" >
  <CopyrightFile>$(MSBuildThisFileDirectory)javadoc-copyright.xml</CopyrightFile>
  <UrlPrefix>https://developer.android.com/reference</UrlPrefix>
  <UrlStyle>developer.android.com/reference@2020-Nov</UrlStyle>
  <DocRootUrl>https://developer.android.com</DocRootUrl>
</JavaSourceJar>

If a copyright file is provided which contains more than 500 characters
the type of the documentation file will not be correctly identified.
This results in the following build error:

Task "ClassParse" (TaskId:143)
  Task Parameter:ToolPath=C:\Users\cloudtest\android-toolchain\dotnet\packs\Microsoft.Android.Sdk.Windows\31.0.200-ci.pr.gh6662.38\tools (TaskId:143)
  Task Parameter:OutputFile=obj\Debug\api.xml.class-parse (TaskId:143)
  Task Parameter:SourceJars=javasourcejartest.jar (TaskId:143)
  Task Parameter:
      DocumentationPaths=
          obj\Debug\javadoc-javasourcejartest-sources-C93909CC4CF9CB39.xml
                  CopyrightFile=C:\a\_work\1\a\TestRelease\01-25_05.25.10\temp\JavaSourceJar\javadoc-copyright.xml
                  DocRootUrl=https://developer.android.com
                  Hash=C93909CC4CF9CB39
                  OriginalItemSpec=javasourcejartest-sources.jar
                  UrlPrefix=https://developer.android.com/reference
                  UrlStyle=developer.android.com/reference@2020-Nov (TaskId:143)
  Using: dotnet C:\Users\cloudtest\android-toolchain\dotnet\packs\Microsoft.Android.Sdk.Windows\31.0.200-ci.pr.gh6662.38\tools\class-parse.dll (TaskId:143)
  [class-parse] response file: obj\Debug\class-parse.rsp (TaskId:143)
  --o="obj\Debug\api.xml.class-parse" (TaskId:143)
  --docspath="obj\Debug\javadoc-javasourcejartest-sources-C93909CC4CF9CB39.xml" (TaskId:143)
  "javasourcejartest.jar" (TaskId:143)
  dotnet C:\Users\cloudtest\android-toolchain\dotnet\packs\Microsoft.Android.Sdk.Windows\31.0.200-ci.pr.gh6662.38\tools\class-parse.dll @obj\Debug\class-parse.rsp  (TaskId:143)
  Unhandled exception. System.Exception: Directory 'obj\Debug\javadoc-javasourcejartest-sources-C93909CC4CF9CB39.xml' does not exist (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.AndroidDocScraper..ctor(String dir, String patternHead, String resetPatternHead, String parameterPairSplitter, Boolean continuousParamLines, String openMethod, String paramSep, String closeMethod, String postCloseMethodParens) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/JavaDocumentScraper.cs:line 165 (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.AndroidDocScraper..ctor(String dir, String patternHead, String resetPatternHead, String parameterPairSplitter, Boolean continuousParamLines) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/JavaDocumentScraper.cs:line 147 (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.DroidDocScraper..ctor(String dir) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/JavaDocumentScraper.cs:line 41 (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.ClassPath.CreateDocScraper(String src) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs:line 274 (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.ClassPath.FixupParametersFromDocs(XElement api, String path) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs:line 285 (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.ClassPath.FixupParametersFromDocs(XElement api) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs:line 266 (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.ClassPath.ToXElement() in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs:line 360 (TaskId:143)
     at Xamarin.Android.Tools.Bytecode.ClassPath.SaveXmlDescription(TextWriter textWriter) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs:line 379 (TaskId:143)
     at Xamarin.Android.Tools.App.Main(String[] args) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/tools/class-parse/Program.cs:line 94 (TaskId:143)

Fix the JavaDocletType._ApiXml doc type detection in such cases by
also checking for the <javadoc-metadata> element that is created by
java-source-utils.jar

@pjcollins pjcollins changed the title Extend api xml detection [Xamarin.Android.Tools.Bytecode] Extend api xml detection Jan 25, 2022
@pjcollins pjcollins marked this pull request as ready for review January 25, 2022 16:46
@pjcollins pjcollins requested review from jonpryor and jpobst January 25, 2022 16:46
@pjcollins pjcollins changed the title [Xamarin.Android.Tools.Bytecode] Extend api xml detection [Xamarin.Android.Tools.Bytecode] Extend api xml doc type detection Jan 25, 2022
@jonpryor jonpryor merged commit 32635fd into dotnet:main Jan 25, 2022
@pjcollins pjcollins deleted the more-api-xml-detection branch January 25, 2022 22:38
@github-actions github-actions bot locked and limited conversation to collaborators Apr 13, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants