RFR: 8187521: In some corner cases the javadoc tool can reuse id attribute
Bhavesh Patel
bhavesh.x.patel at oracle.com
Tue Oct 10 18:10:02 UTC 2017
Looks good. A couple of minor suggestions. HtmlDocletWriter.java (Line
1480) and HtmlDocWriter.java (Line 184) could be updated to use
configuration.isOutputHtml5() the check for HTML5 version.
Ok to push.
Regards,
Bhavesh.
On 10/6/2017 7:18 PM, Jonathan Gibbons wrote:
> Updated webrev, with comment added:
> http://cr.openjdk.java.net/~jjg/8187521/webrev.02
>
> -- Jon
>
> On 09/29/2017 01:34 PM, Kumar Srinivasan wrote:
>> Jon,
>>
>> Looks good with a caveat, suggest a comment:
>> testDocEncoding.java
>>
>> + checkOutput("stylesheet.css", true,
>> + "body {\n"
>> + + " background-color:#ffffff;");
>> +
>> + charset = Charset.forName("UTF-8"); <--- this line needs
>> an explanation comment.
>>
>> I don't need to see another iteration.
>>
>> Kumar
>>
>>
>>
>>> Updated patch to address a test failure on Windows.
>>>
>>> The test failure was specifically caused by a defensive check on the
>>> default platform encoding.
>>> The fix for that test failure is to enhance JavadocTester to
>>> determine the file encoding used to
>>> write files, and to use that when reading files in order to check
>>> their content.
>>>
>>> That enhancement to JavadocTester triggered the need to update
>>> another test, TestDocEncoding.java.
>>> which can now do a better job because of the better suport for using
>>> the correct doc encoding.
>>>
>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8187521
>>> Webrev: http://cr.openjdk.java.net/~jjg/8187521/webrev.01/index.html
>>>
>>> -- Jon
>>>
>>> On 09/26/2017 03:21 PM, Jonathan Gibbons wrote:
>>>> Please review this fix regarding the handling of ID values
>>>> generated by the standard javadoc doclet.
>>>>
>>>> The root cause of the specific issue is a corner case in Java. A
>>>> class may contain a method
>>>> with the same name as the enclosing class, and any corresponding
>>>> constructor.
>>>>
>>>> The fix is to use a different name for the name of the constructor
>>>> that cannot clash with
>>>> any method name, with `<init>` being the obvious choice.
>>>>
>>>> The fix is restricted, along with some other changes, to when
>>>> generating HTML5 docs.
>>>> There are other problems with IDs/anchor names when using HTML
>>>> 4.01, which are all
>>>> better addressed by using HTML5, leaving support for HTML 4.01
>>>> unchanged at this point.
>>>>
>>>> In HTML5, there are no restrictions on the individual characters in
>>>> an ID other than to prohibit
>>>> whitespace. Therefore, there is no longer any need to use the
>>>> javadoc-specific encoding
>>>> using `:` and `-` to encode otherwise invalid characters. Thus, the
>>>> ID for a member of the class
>>>> is just the signature of the member: the name for a field, the name
>>>> and parameter-type list
>>>> for a method, and `<init>` and parameter-type list for a constructor.
>>>>
>>>> Finally, because this opens up the possibility of square brackets
>>>> appearing in a signature
>>>> (where previously "[]" was encoded as ":A"), the encoding of URLs
>>>> which have fragments
>>>> containing [] had to be improved, by using the standard URL
>>>> %-encoding for these characters.
>>>>
>>>> The tests are updated, with additional tests being added for
>>>> members with non-ASCII
>>>> identifiers, to verify that IDs and defined and referenced correctly.
>>>>
>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8187521
>>>> Webrev: http://cr.openjdk.java.net/~jjg/8187521/webrev.00/index.html
>>>>
>>>> -- Jon
>>>
>>
>
More information about the javadoc-dev
mailing list