<Swing Dev> Accessibility inner classes in AccessibleJTable do not stick to AccessibleComponent.getLocationOnScreen api

Frank Ding dingxmin at linux.vnet.ibm.com
Fri Aug 17 07:45:52 UTC 2012


Hi Pavel,
   Thanks for your review again.  Another review package incorporating 
your comments is @ http://cr.openjdk.java.net/~dingxmin/7188612/webrev.01
   Could you please take a look at it ?

Thanks,
Frank

On 8/16/2012 11:02 PM, Pavel Porvatov wrote:
> Hi Frank,
>> Hi Pavel,
>>   Thanks for your comments from which I learned a lot.  A new review 
>> patch is created by incorporating your comments @
>>
>>   http://cr.openjdk.java.net/~dingxmin/7188612/webrev.00/
>>
>>   Could you please review it again?
> I have few comments about the last webrev:
> 1. There is no need to re-throw exceptions via exThrownInEDT. You can 
> just throw RuntimeException if the test fails. It's ok to throw 
> RuntimeException on the EDT, jtreg will fail in that case
> 2. Can we join two SwingUtilities.invokeAndWait into one?
> 3. Comments
> 96         // cast to interface AccessibleComponent to call 
> getLocationOnScreen()
> and
> 109         // cast to interface AccessibleComponent to call 
> getLocationOnScreen()
> look unnecessary
>
> Other code looks good for me
>
> Regards, Pavel
>>
>> Best regards,
>> Frank
>>
>> On 8/6/2012 9:54 PM, Pavel Porvatov wrote:
>>> Hi Frank,
>>>
>>> The fix looks good but I have several comments for the test:
>>> 1. The Swing components should be created and accessed only from EDT 
>>> thread. Therefore the assertGetLocation method should be on EDT as well
>>>
>>> 2. I'd remove lines 59-61
>>>
>>> 3. The lines
>>>  79         // Display the window.
>>>  80         frame.setVisible(true);
>>>  81         // make the frame invisible to test 
>>> getLocationOnScreen() of
>>>  82         // JTable$AccessibleJTable$AccessibleJTableHeaderCell
>>>  83         // and JTable$AccessibleJTable$AccessibleJTableCell
>>>  84         frame.setVisible(false);
>>> don't guaranty that the frame becomes visible for awhile. You should 
>>> use SunToolkit.realsync for that (take a look at other tests). Is it 
>>> really necessary for the test to show and hide the frame?
>>>
>>> 4. Why don't you cast getAccessibleContext into AccessibleTable in 
>>> one line, but wrote six lines for that:
>>>  88         AccessibleContext context = (AccessibleContext) table
>>>  89                 .getAccessibleContext();
>>>  90         // To get 
>>> JTable$AccessibleJTable$AccessibleJTableHeaderCell instance,
>>>  91         // we need to first
>>>  92         // convert the context var to type AccessibleTable
>>>  93         AccessibleTable accessibleTable = (AccessibleTable) 
>>> context;
>>>
>>> 5. Could you please remove useless comments like:
>>>  79         // Display the window.
>>>  80         frame.setVisible(true);
>>>
>>>  90         // To get 
>>> JTable$AccessibleJTable$AccessibleJTableHeaderCell instance,
>>>  91         // we need to first
>>>  92         // convert the context var to type AccessibleTable
>>>
>>>  94         // and then get 
>>> JTable$AccessibleJTable$AccessibleTableHeader
>>>
>>> etc.
>>>
>>> Only comments like
>>>  81         // make the frame invisible to test 
>>> getLocationOnScreen() of
>>>  82         // JTable$AccessibleJTable$AccessibleJTableHeaderCell
>>>  83         // and JTable$AccessibleJTable$AccessibleJTableCell
>>>
>>> 100         // getLocation() must be null according to its javadoc 
>>> and no exception
>>> 101         // is thrown
>>> looks reasonable for me in the provided test
>>>
>>> Regards, Pavel
>>>
>>>
>>>> Hi guys
>>>>   According to javadoc of AccessibleComponent.getLocationOnScreen, 
>>>> it returns null instead of throwing IllegalComponentStateException 
>>>> when the corresponding GUI object is not visible.
>>>>   However, two accessibility inner classes of JTable, 
>>>> JTable$AccessibleJTable$AccessibleJTableCell and 
>>>> Table$AccessibleJTable$AccessibleJTableHeaderCell implementing 
>>>> AccessibleComponent throw IllegalComponentStateException when the 
>>>> corresponding JTable is not visible.  This behavior conflicts with 
>>>> the spec.
>>>>   I have submitted a bug in sunbug system reporting the issue, and 
>>>> received two acknowledgement emails (bug id 7188613 and 7188612, 
>>>> don't know why there are two?).  I created a patch to fix the issue 
>>>> with a jtreg test case. Both the patch and the test are uploaded 
>>>> into the following space.
>>>>
>>>> http://cr.openjdk.java.net/~youdwei/ojdk-491/webrev.02/
>>>>
>>>>   Would anyone help to review the patch?
>>>>
>>>> Best regards,
>>>> Frank
>>>>
>>>>
>>>>
>>>
>>
>




More information about the swing-dev mailing list