<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:13:40 UTC 2018


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