<Swing Dev> [12] RFR JDK-8211703: JInternalFrame : java.lang.AssertionError: cannot find the internal frame

Muneer Kolarkunnu abdul.kolarkunnu at oracle.com
Wed Oct 24 09:43:22 UTC 2018


Hi Prasanta,

I tested with provided binary and issue is resolved with this fix. Thanks for fixing this issue.

Regards,
Muneer

-----Original Message-----
From: Muneer Kolarkunnu 
Sent: Wednesday, October 24, 2018 12:00 PM
To: Prasanta Sadhukhan <prasanta.sadhukhan at oracle.com>; Sergey Bylokhov <sergey.bylokhov at oracle.com>; swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> [12] RFR JDK-8211703: JInternalFrame : java.lang.AssertionError: cannot find the internal frame

Hi Prasanta,

I can verify it if you can share a binary with fix.

Regards,
Muneer

-----Original Message-----
From: Prasanta Sadhukhan
Sent: Wednesday, October 24, 2018 11:41 AM
To: Sergey Bylokhov <sergey.bylokhov at oracle.com>; swing-dev at openjdk.java.net; ABDUL.KOLARKUNNU <abdul.kolarkunnu at oracle.com>
Subject: Re: <Swing Dev> [12] RFR JDK-8211703: JInternalFrame : java.lang.AssertionError: cannot find the internal frame

Hi Muneer,

Could you check (as a submitter) if the proposed fix works in your jemmy environment? It seems to work for me with the command line you gave in JBS.

Regards
Prasanta
On 22-Oct-18 11:24 AM, Prasanta Sadhukhan wrote:
> Gentle reminder...
>
> Regards
> Prasanta
> On 05-Oct-18 2:31 PM, Prasanta Sadhukhan wrote:
>> Hi Sergey,
>>
>>
>> On 04-Oct-18 11:03 PM, Prasanta Sadhukhan wrote:
>>>
>>>
>>> On 04-Oct-18 10:44 PM, Prasanta Sadhukhan wrote:
>>>>
>>>>
>>>> On 04-Oct-18 10:29 PM, Sergey Bylokhov wrote:
>>>>> On 04/10/2018 09:44, Prasanta Sadhukhan wrote:
>>>>>> Hi Sergey,
>>>>>>
>>>>>> Yes, this method should return JInternalFrame but there is no way 
>>>>>> to get JinternalFrame object from BasicInternalFrameTitlePane 
>>>>>> currently.
>>>>>
>>>>> But why it is not possible? The BasicInternalFrameTitlePane is a 
>>>>> title of the internalFrame and it looks like it should be located 
>>>>> somewhere inside the internalFrame, isn't it?
>>>>>
>>>> BasicInternalTitlePane has a protected variable of JInternalFrame 
>>>> object and there is no public method to access that so that's why I 
>>>> told it is not currently possible unless we add a public method in 
>>>> this Basic* class, if I understand it correctly. Let me know if it 
>>>> can be accessed some other way.
>>>>
>>> JInternalFrame.getUI().getNorthPane() probably might give 
>>> BasicInternalTitlePane object but I do not think we can get 
>>> viceversa, ie get JInternalFrame object from BasicInternalTitlePane.
>> I have improved the code to get JInternalFrame from 
>> BasicInternalFrameTitlePane, as you have suggested 
>> http://cr.openjdk.java.net/~psadhukhan/8211703/webrev.1/
>>
>> Regards
>> Prasanta
>>>> Regards
>>>> Prasanta
>>>>> This Metacity class has the provision of accepting null value from 
>>>>> this method
>>>>>> and this assertion problem is caused only when we ran with "esa" 
>>>>>> [to enable assertion]. The submitter has not mentioned there is 
>>>>>> any failure if we run the without esa, so I have only done away 
>>>>>> with the wrong assertion for BasicInternalFrameTitlePane.
>>>>>>
>>>>>> Regards
>>>>>> Prasanta
>>>>>> On 04-Oct-18 9:43 PM, Sergey Bylokhov wrote:
>>>>>>> Hi, Prasanta.
>>>>>>> Can you please clarify this code a little bit. As far as I 
>>>>>>> understand this method should return the JInternalFrame, which 
>>>>>>> should be accessed via the comp passed to this method. This 
>>>>>>> method already has this check:
>>>>>>>         if (comp.getParent() instanceof
>>>>>>> BasicInternalFrameTitlePane) {
>>>>>>>             comp = comp.getParent();
>>>>>>>         }
>>>>>>>
>>>>>>> So maybe we can improve it to fetch the JInternalFrame from the 
>>>>>>> BasicInternalFrameTitlePane or from another class passed to this 
>>>>>>> method?
>>>>>>>
>>>>>>> On 04/10/2018 07:35, Prasanta Sadhukhan wrote:
>>>>>>>> Hi All,
>>>>>>>>
>>>>>>>> Please review a cleanup of the code where wrong assertion is 
>>>>>>>> used when Component is an instance of BasicInternalFrameTitlePane.
>>>>>>>>
>>>>>>>> Now, BasicInternalFrameTitlePane is extended from JComponent 
>>>>>>>> and not from JInternalFrame so it will never satisfy the 
>>>>>>>> if-else condition if "Component is instanceof 
>>>>>>>> BasicInternalFrameTitlePane", so proposed fix is to assert only 
>>>>>>>> if the component is not an instance of 
>>>>>>>> BasicInternalFrameTitlePane
>>>>>>>>
>>>>>>>> diff -r d96a607e9594
>>>>>>>> src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Meta
>>>>>>>> city.java
>>>>>>>>
>>>>>>>> ---
>>>>>>>> a/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Me
>>>>>>>> tacity.java
>>>>>>>> Tue Sep 18 18:32:03 2018 -0700
>>>>>>>> +++ 
>>>>>>>> b/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Me
>>>>>>>> tacity.java
>>>>>>>> Thu Oct 04 19:53:10 2018 +0530
>>>>>>>> @@ -337,7 +337,9 @@
>>>>>>>>           } else if (comp instanceof
>>>>>>>> JInternalFrame.JDesktopIcon) {
>>>>>>>>               return
>>>>>>>> ((JInternalFrame.JDesktopIcon)comp).getInternalFrame();
>>>>>>>>           }
>>>>>>>> -        assert false : "cannot find the internal frame";
>>>>>>>> +       if (!(comp instanceof BasicInternalFrameTitlePane)) {
>>>>>>>> +            assert false : "cannot find the internal frame";
>>>>>>>> +       }
>>>>>>>>           return null;
>>>>>>>>       }
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Prasanta
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>



More information about the swing-dev mailing list