JDK-8252195 : AWT Accessibility API nested classes rely on default constructors
  • Type: Enhancement
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 16
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2020-08-23
  • Updated: 2024-11-22
  • Resolved: 2020-09-22
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 16
16 b17Fixed
Related Reports
CSR :  
Relates :  
Relates :  
Relates :  
Description
The situation discussed in JDK-8251921, a class that is part of the formal API but has at least some protected rather than public, containing types, occurs for several AWT classes:

java.awt.Component.AccessibleAWTComponent.AccessibleAWTComponentHandler java.awt.Component.AccessibleAWTComponent.AccessibleAWTFocusHandler
java.awt.Container.AccessibleAWTContainer.AccessibleContainerHandler

This pattern doesn't seem to appear elsewhere in the JDK.

A fix for issue can be a follow-up to JDK-8250856.
Comments
Changeset: 93a2018d Author: Phil Race <prr@openjdk.org> Date: 2020-09-22 22:14:51 +0000 URL: https://git.openjdk.java.net/jdk/commit/93a2018d
22-09-2020

Filed these two for the swing ones https://bugs.openjdk.java.net/browse/JDK-8252721 https://bugs.openjdk.java.net/browse/JDK-8252722
02-09-2020

Gulp. That was an undercount indeed. A little more sub-dividing coming I think. The public 2D ones in this list are there because that fix hasn't yet been finished. Actually 104 is an undercount. A bit north of 160 new ones.
02-09-2020

From the attached list the following is the complete list in the AWT name space, all related to accessibility is these 20 src/java.desktop/share/classes/java/awt/Component.java:9341: warning: [missing-explicit-ctor] class Component.AccessibleAWTComponent.AccessibleAWTComponentHandler src/java.desktop/share/classes/java/awt/Component.java:9373: warning: [missing-explicit-ctor] class Component.AccessibleAWTComponent.AccessibleAWTFocusHandler src/java.desktop/share/classes/java/awt/Container.java:3802: warning: [missing-explicit-ctor] class Container.AccessibleAWTContainer src/java.desktop/share/classes/java/awt/Container.java:3862: warning: [missing-explicit-ctor] class Container.AccessibleAWTContainer.AccessibleContainerHandler src/java.desktop/share/classes/java/awt/Window.java:3159: warning: [missing-explicit-ctor] class Window.AccessibleAWTWindow src/java.desktop/share/classes/java/awt/Dialog.java:1654: warning: [missing-explicit-ctor] class Dialog.AccessibleAWTDialog src/java.desktop/share/classes/java/awt/Frame.java:1293: warning: [missing-explicit-ctor] class Frame.AccessibleAWTFrame src/java.desktop/share/classes/java/awt/MenuBar.java:507: warning: [missing-explicit-ctor] class MenuBar.AccessibleAWTMenuBar src/java.desktop/share/classes/java/awt/MenuItem.java:818: warning: [missing-explicit-ctor] class MenuItem.AccessibleAWTMenuItem src/java.desktop/share/classes/java/awt/Menu.java:620: warning: [missing-explicit-ctor] class Menu.AccessibleAWTMenu src/java.desktop/share/classes/java/awt/Button.java:532: warning: [missing-explicit-ctor] class Button.AccessibleAWTButton src/java.desktop/share/classes/java/awt/TextField.java:784: warning: [missing-explicit-ctor] class TextField.AccessibleAWTTextField src/java.desktop/share/classes/java/awt/Scrollbar.java:1257: warning: [missing-explicit-ctor] class Scrollbar.AccessibleAWTScrollBar src/java.desktop/share/classes/java/awt/ScrollPane.java:787: warning: [missing-explicit-ctor] class ScrollPane.AccessibleAWTScrollPane src/java.desktop/share/classes/java/awt/TextArea.java:715: warning: [missing-explicit-ctor] class TextArea.AccessibleAWTTextArea src/java.desktop/share/classes/java/awt/Canvas.java:239: warning: [missing-explicit-ctor] class Canvas.AccessibleAWTCanvas src/java.desktop/share/classes/java/awt/Panel.java:118: warning: [missing-explicit-ctor] class Panel.AccessibleAWTPanel src/java.desktop/share/classes/java/awt/PopupMenu.java:224: warning: [missing-explicit-ctor] class PopupMenu.AccessibleAWTPopupMenu src/java.desktop/share/classes/java/awt/CheckboxMenuItem.java:531: warning: [missing-explicit-ctor] class CheckboxMenuItem.AccessibleAWTCheckboxMenuItem src/java.desktop/share/classes/java/applet/Applet.java:574: warning: [missing-explicit-ctor] class Applet.AccessibleApplet The rest, another 147 (!) are in the swing name space and I will file new bugs for those.
02-09-2020

On a sync'ed up jdk repo, I modified the build to enable the default constructor warning for the java.desktop module. As shown in the attached log, there were 104 instances of a protected default constructor being found -- my initial filing was an under-count.
02-09-2020

Joe: What about https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Container.AccessibleAWTContainer.html ? It seems to be missing a default constructor too. Shouldn't whatever tooling you used to find the ones above have found that one too ? Or is it being given a pass since it's parent class AccessibleAWTComponent does have one ? If so what is the pattern that makes it OK ?
26-08-2020