JDK-8253450 : AWT Accessibility API nested classes rely on default constructors
  • Type: CSR
  • Component: client-libs
  • Sub-Component: java.awt
  • Priority: P4
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 16
  • Submitted: 2020-09-21
  • Updated: 2020-09-22
  • Resolved: 2020-09-22
Related Reports
CSR :  
Description
Summary
-------

Address reliance on default constructors for nested accessibility classes of AWT components.

Problem
-------

The nested accessibility related classes of AWT components rely on the use of implicit Default Constructors. This is unsuitable as certain access modifiers are required for some constructors and API descriptions but are not included with the use of implicit Default Constructors. The use of explicitly defined no-arg constructors is required.

Solution
--------

Add explicit no-args constructors to all these classes.

Specification
-------------
src/java.desktop/share/classes/java/applet/Applet.java
  
<pre>
    protected class AccessibleApplet :
+        /**
+         * Constructs an {@code AccessibleApplet}
+         */
+        protected AccessibleApplet() {}

</pre>
src/java.desktop/share/classes/java/awt/Button.java

<pre>
    protected class AccessibleButton :
+        /**
+         * Constructs an {@code AccessibleAWTButton}
+         */
+        protected AccessibleAWTButton() {}
</pre>

src/java.desktop/share/classes/java/awt/Canvas.java

<pre>
    protected class AccessibleCanvas :
+        /**
+         * Constructs an {@code AccessibleAWTCanvas}
+         */
+        protected AccessibleAWTCanvas() {}
</pre>

src/java.desktop/share/classes/java/awt/CheckboxMenuItem.java

<pre>
    protected class AccessibleCheckboxMenuItem :
+        /**
+         * Constructs an {@code AccessibleAWTCheckboxMenuItem}
+         */
+        protected AccessibleAWTCheckboxMenuItem() {}
</pre>

src/java.desktop/share/classes/java/awt/Component.java

<pre>
    protected class AccessibleAWTComponent.AccessibleAWTComponentHandler :
+            /**
+             * Constructs an {@code AccessibleAWTComponentHandler}
+             */
+            protected AccessibleAWTComponentHandler() {}

+            /**
+             * Constructs an {@code AccessibleAWTFocusHandler}
+             */
+            protected AccessibleAWTFocusHandler() {}
</pre>

src/java.desktop/share/classes/java/awt/Container.java

<pre>
    protected class AccessibleAWTContainer :
+        /**
+         * Constructs an {@code AccessibleAWTContainer}
+         */
+        protected AccessibleAWTContainer() {}

    protected class AccessibleAWTContainer.AccessibleContainerHandler :
+            /**
+             * Constructs an {@code AccessibleContainerHandler}
+             */
+            protected AccessibleContainerHandler() {}
</pre>

src/java.desktop/share/classes/java/awt/Dialog.java

<pre>
    protected class AccessibleAWTDialog :
+        /**
+         * Constructs an {@code AccessibleAWTDialog}
+         */
+        protected AccessibleAWTDialog() {}
</pre>

src/java.desktop/share/classes/java/awt/Frame.java

<pre>
    protected class AccessibleAWTFrame :
+        /**
+         * Constructs an {@code AccessibleAWTFrame}
+         */
+        protected AccessibleAWTFrame() {}
</pre>

src/java.desktop/share/classes/java/awt/Menu.java

<pre>
    protected class AccessibleAWTMenu :
+        /**
+         * Constructs an {@code AccessibleAWTMenu}
+         */
+        protected AccessibleAWTMenu() {}
</pre>

src/java.desktop/share/classes/java/awt/MenuBar.java

<pre>
    protected class AccessibleAWTMenuBar :
+        /**
+         * Constructs an {@code AccessibleAWTMenuBar}
+         */
+        protected AccessibleAWTMenuBar() {}
</pre>

src/java.desktop/share/classes/java/awt/MenuItem.java

<pre>
    protected class AccessibleAWTMenuItem :
+        /**
+         * Constructs an {@code AccessibleAWTMenuItem}
+         */
+        protected AccessibleAWTMenuItem() {}
</pre>

src/java.desktop/share/classes/java/awt/Panel.java

<pre>
    protected class AccessibleAWTPanel :
+        /**
+         * Constructs an {@code AccessibleAWTPanel}
+         */
+        protected AccessibleAWTPanel() {}
</pre>

src/java.desktop/share/classes/java/awt/PopupMenu.java

<pre>
    protected class AccessibleAWTPanel :
+        /**
+         * Constructs an {@code AccessibleAWTPopupMenu}
+         */
+        protected AccessibleAWTPopupMenu() {}
</pre>

src/java.desktop/share/classes/java/awt/ScrollPane.java

<pre>
    protected class AccessibleAWTScrollPane :
+        /**
+         * Constructs an {@code AccessibleAWTScrollPane}
+         */
+        protected AccessibleAWTScrollPane() {}
</pre>

src/java.desktop/share/classes/java/awt/Scrollbar.java

<pre>
    protected class AccessibleAWTScrollBar :
+        /**
+         * Constructs an {@code AccessibleAWTScrollBar}
+         */
+        protected AccessibleAWTScrollBar() {}
</pre>

src/java.desktop/share/classes/java/awt/TextArea.java

<pre>
    protected class AccessibleAWTTextArea :
+        /**
+         * Constructs an {@code AccessibleAWTTextArea}
+         */
+        protected AccessibleAWTTextArea() {}
</pre>

src/java.desktop/share/classes/java/awt/TextField.java

<pre>
    protected class AccessibleAWTTextField :
+        /**
+         * Constructs an {@code AccessibleAWTTextField}
+         */
+        protected AccessibleAWTTextField() {}
</pre>

src/java.desktop/share/classes/java/awt/Window.java

<pre>
    protected class AccessibleAWTWindow :
+        /**
+         * Constructs an {@code AccessibleAWTWindow}
+         */
+        protected AccessibleAWTWindow() {}
</pre>

Comments
Moving to Approved.
22-09-2020