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

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Thu Oct 4 16:59:50 UTC 2018


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?

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/Metacity.java
>>> --- 
>>> a/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java 
>>> Tue Sep 18 18:32:03 2018 -0700
>>> +++ 
>>> b/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.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
>>
>>
> 


-- 
Best regards, Sergey.


More information about the swing-dev mailing list