RFR: JDK-8242056,Merge support for AnnotationType builders/writers into support for other types

Hannes Wallnoefer HANNES.WALLNOEFER at ORACLE.COM
Sat Apr 4 08:05:04 UTC 2020


Wow, that’s a substantial amount of code/classes removed!

The code changes and generated docs look good. +1.

Hannes

> Am 02.04.2020 um 22:37 schrieb Jonathan Gibbons <jonathan.gibbons at oracle.com>:
> 
> Please review a mostly-cleanup change to merge support for annotation types into the support for other types, like classs, interfaces, enums, and records. Apart from some very small changes, there should be no visible difference to any generated documentation.
> 
> At the high level this means moving annottaion-type-specific functionality, i.e. for required and optional elements, from AnnotationType{Builder,Writer,WriterImpl} to Class{Builder,Writer,WriterImpl} so that the annotation-type classes can be deleted.
> 
> A bonus is that what was previously treated as ANNOTATION_FIELD is really the same as FIELD, and so the AnnotationTypeField{Builder,Writer,WriterImpl} classes can be removed as well.
> 
> The changes are mostly moving or deleting code. There are some minor exceptions:
> 
> * In VisibleMemberTable, we more accurately determine the kind of fields and methods in annotation types, and suppress the methods inherited from java.lang.Annotation, which otherwise show up in the "inherited methods" summary.
> 
> * In ClassWriterImpl, we suppress writing out the extends/implements clauses for annotation types. Also, there is one minor notatable difference that for annotation types, an additional "id" is declared on the details section. This "id" is referenced by the annotation-type support in the navbar.  Maybe this could be cleaned up later; for now it seems better to minimize the changes in the generated code.
> 
> * In various places, references to ANNOTATION_TYPE_FIELDS is changed to FIELDS
> 
> * In various places, signatures referencing AnnotationTypeBuilder and friends were updated to use ClassBuilder and friends.
> 
> Tests: 3 tests need to be updated.
> 
> 1. TestAnnotationTypes is updated for the ANNOTATET_TYPE_FIELD to FIELD rename. It seems perverse to retain the old behavior.
> 
> 2. Bug fix: the old code incorrectly used CSS class "member-name-label" when the more appropriate name is "type-name-label".
> 
> 3. TestMetadata.java is updated to indicate that AnnotationTypeWriterImpl no longer writes out any pages (because it has been deleted.)
> 
> 
> There are some potential downstream enhancements, for later:
> 
> * Improve the reporting of annotation type member elements in the static A-Z index. Right now, they're reported as "methods".
> 
> * Verify that nested types are now properly handled in annotation types. (And maybe anno types in regular classes)
> 
> * Improve the navigation (i.e. top nav bar) to nested types in annotation types.
> 
> 
> -- Jon
> 
> JBS: https://bugs.openjdk.java.net/browse/JDK-8242056
> Webrev: http://cr.openjdk.java.net/~jjg/8242056/webrev.00/
> API: http://cr.openjdk.java.net/~jjg/8242056/api.00/
> 



More information about the javadoc-dev mailing list