<Swing Dev> Fwd: Please review fix for 7177111 : Jcomponent.AccessibleJComponent.AddPropertyListeners adds exponential listeners

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Thu Nov 15 09:20:17 UTC 2012


On 11/14/2012 7:30 PM, Pete Brunet wrote:
> Could someone from the Swing team please review this?

      The fix looks good for me.

     Thanks,
     Alexandr.

>
> -------- Original Message --------
> Subject: 	Please review fix for 7177111 : 
> Jcomponent.AccessibleJComponent.AddPropertyListeners adds exponential 
> listeners
> Date: 	Thu, 08 Nov 2012 15:51:19 -0600
> From: 	Pete Brunet <peter.brunet at oracle.com>
> Reply-To: 	peter.brunet at oracle.com
> To: 	awt-dev <awt-dev at openjdk.java.net>, swing-dev at openjdk.java.net
>
>
>
> Hi Everyone, Please review the following fix planned for 7u12.  It 
> will also go into 8 under 7179482.
>
> Problem:
> When an AT (Assistive Technology) accesses a Java application with 
> several nested frames, too many property change listeners are added 
> resulting in a severe performance impact for an AT user.
>
> The issue is due to the fact that there is an 
> accessibleContainerHandler field in both 
> javax.swing.JComponent.AccessibleJComponent and its superclass, 
> java.awt.Container.AccessibleAWTContainer.  When an AT calls 
> JComponent.AccessibleJComponent.addPropertyChangeListener a handler is 
> new'd and assigned to its accessibleContainerHandler field and then 
> the same method in the superclass is called and it also new's and 
> assigns a handler to its accessibleContainerHandler field.  Since 
> there are two handlers, when a child component is later added there 
> are two callbacks and for each one the AT will call 
> addPropertyChangeListener, each of which will add two handlers.  For 
> deeply nested trees the explosion of events has a negative impact on 
> performance, i.e. there are 2 handlers added for the first level, 4 
> for the second level, 8 for the third level, etc.
>
> Solution:
> Remove protected field 
> javax.swing.JComponent.AccessibleJComponent.accessibleContainerHandler.  
> Instead, the protected field of the same name in 
> java.awt.Container.AWTAccessibleContainer will be used.
>
> Webrev: http://cr.openjdk.java.net/~ptbrunet/7177111/webrev.03/
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7177111
> http://monaco.us.oracle.com/detail.jsf?cr=7177111
> CCC: http://ccc.us.oracle.com/7177111
>
>
>




More information about the swing-dev mailing list