This bug includes a coordination of fixes for both awt (2 files) and swing (1 file). Which repo should I use? jdk8/awt or jdk8/swing? I'm guessing the latter. (AccessibleJComponent inherits from AccessibleAWTContainer).
Pete On 11/9/12 3:27 PM, Pete Brunet wrote: > Please review the following fix planned for JDK8. Part of the fix will > go into 7u12 under 7177111. > > Problem: > In the process of evaluating 7177111 the following problems were noticed: > - Both Component and JComponent have field "accessibleContext". In > Component it is package-private and accessed by other classes from > java.awt, but in JComponent it is protected and therefore this field > hides the same superclass field from any subclass. These two fields > should be refactored to a single protected field in Component. > - Container.AccessibleAWTContainer has an addPropertyChangeListener but > not a removePropertyChangeListener. This method is needed so stale > listeners can be removed when AT are no longer attached to a Java process. > - The JComponent.AccessibleJComponent.accessibleFocusHandler field > functionally duplicates its superclass field, > Component.AccessibleAWTComponent.accessibleAWTFocusHandler. When this > field is used properly there are no logical issues. However, the > existence of this field could cause confusion for a developer trying to > understand the code. The superclass field is sufficient. > > Solution: > - Change java.awt.Component.accessibleContext from package-private to > protected. This will allow use by subclasses and the removal of the > duplicate field in javax.swing.JComponent. > - Add > java.awt.Container.AccessibleAWTContainer.removePropertyChangeListener > so stale listeners can be removed when an Assistive Technology is no > longer attached to a Java process. > - Remove the protected field javax.swing.JComponent.accessibleContext. > Instead the protected field java.awt.Component.accessibleContext, will > be used. With the change subclasses would now use the protected field > in the Component superclass. > - Remove public method javax.swing.JComponent.getAccessibleContext. > Instead it superclass public method > java.awt.Component.getAccessibleContext method would be used. > - javax.swing.JComponent.AccessibleJComponent.accessibleFocusHandler > field will be deprecated. Developers should use the > java.awt.Component.AccessibleAWTComponent.accessibleAWTFocusHandler > field instead. > > Webrev: http://cr.openjdk.java.net/~ptbrunet/7179482/webrev.00/ > Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7179482 > CCC: http://ccc.us.oracle.com/7179482