<Swing Dev> Review request for 8013566: Failure of GroupLayout in combination of addPreferredGap and addGroup's
Semyon Sadetsky
semyon.sadetsky at oracle.com
Thu Mar 12 06:35:13 UTC 2015
Hi Sergey,
I couldn't find this 6494656 in jdk and jck test repositories.
How can I find it?
Thanks,
--Semyon
On 3/11/2015 8:05 PM, Sergey Bylokhov wrote:
> Hi, Semyon.
> Please confirm that the test for 6494656 completed successfully also.
>
> 11.03.15 4:01, Semyon Sadetsky wrote:
>> JCK run is OK:
>>
>> Mar 11, 2015 1:58:55 PM Finished executing all tests, wait for cleanup...
>> Mar 11, 2015 1:58:55 PM Harness done with cleanup from test run.
>> Total time = 33s
>> Setup time = 0s
>> Cleanup time = 0s
>> Test results: passed: 8
>>
>>> Hi Alexander,
>>>
>>> your remarks are taken into account :
>>> http://cr.openjdk.java.net/~alexsch/semyon-sadetsky/8013566/webrev.01/
>>>
>>> jtreg result:
>>>
>>>
>>> Execution successful
>>>
>>> * javax/swing/GroupLayout/6613904/bug6613904.java
>>> <../../JTwork/javax/swing/GroupLayout/6613904/bug6613904.jtr>:
>>> javax.swing.GroupLayout.createParallelGroup(..) doesn't throw
>>> IllegalArgumentException for null arg
>>> * javax/swing/GroupLayout/7071166/bug7071166.java
>>> <../../JTwork/javax/swing/GroupLayout/7071166/bug7071166.jtr>:
>>> LayoutStyle.getPreferredGap() - IAE is expected but not thrown
>>> * javax/swing/GroupLayout/8013566/bug8013566.java
>>> <../../JTwork/javax/swing/GroupLayout/8013566/bug8013566.jtr>:
>>> Failure of GroupLayout in combination of addPreferredGap and
>>> addGroup's last row
>>>
>>> --Semyon
>>>
>>>
>>> On 3/10/2015 3:46 PM, Alexander Scherbatiy wrote:
>>>> On 3/6/2015 5:42 PM, Semyon Sadetsky wrote:
>>>>> Hi,
>>>>>
>>>>> please review a fix for JDK9.
>>>>>
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8013566
>>>>> webrev:
>>>>> http://cr.openjdk.java.net/~alexsch/semyon-sadetsky/8013566/webrev.00/
>>>>>
>>>>
>>>> Just minor comments:
>>>> - 'newLeadingPadding.size() == 0' can be changed to
>>>> newLeadingPadding.isEmpty()
>>>> - //frame.dispose() - may be it should not be commented?
>>>>
>>>> Could you run regression and JCK GroupLayout tests to check that
>>>> there are no known regressions.
>>>>
>>>> Thanks,
>>>> Alexandr.
>>>>
>>>>> User got here an infinite loop inside GroupLayout's
>>>>> auto-gap-insertion mechanism that was triggered by
>>>>> getPreferredSize() call upon the JFrame.pack().
>>>>> The GroupLayout has not trivial algorithm and its code is really
>>>>> nontransparent. The aim of its auto-preferred-gap-insertion
>>>>> algorithm is inserting gaps between the container components. This
>>>>> allows user to not specify gaps manually for convenience.
>>>>> In the considered scenario user relays on the
>>>>> auto-preferred-gap-insertion except for one place where he
>>>>> specifies the preferred gap manually. Moreover this manual
>>>>> preferred gap is inserted not at the leading position but at the
>>>>> trail. That is specifically the case when the algorithm fails.
>>>>>
>>>>> The thing is that the auto-preferred-gap-insertion routine
>>>>> insertAutopadding() cannot distinguish its auto inserted preferred
>>>>> gaps from manual preferred gaps because it uses the "instance of"
>>>>> check but all those gaps are instances of the same
>>>>> AutoPreferredGapSpring class. Also the insertAutopadding() does
>>>>> not insert gaps at trailing positions but only at leading. More
>>>>> precisely the trailing AutoPreferredGapSpring object left from the
>>>>> child level group (which insertAutopadding() is called
>>>>> recursively) is ignored on the parent group level and parent's
>>>>> insertAutopadding() inserts a new leading AutoPreferredGapSpring
>>>>> object connected to the last component of the child level group,
>>>>> but this in its turn makes a spring counter value (which serves as
>>>>> a loop exit flag) incorrect. As result preferred gaps are added
>>>>> infinitely on this position.
>>>>> The fix introduces a check that tests if the
>>>>> AutoPreferredGapSpring related the current leading component is
>>>>> already created as a trailing gap on the child group level, and if
>>>>> it is this trailing AutoPreferredGapSpring is used to setup the
>>>>> source and new AutoPreferredGapSpring object is not created.
>>>>>
>>>>> --Semyon
>>>>>
>>>>>
>>>>
>>>
>>
>
>
> --
> Best regards, Sergey.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20150312/b37a8137/attachment.html>
More information about the swing-dev
mailing list