On Thu, 31 Aug 2023 08:02:35 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

> After the first time a JTableHeader is serialized, it no longer will 
> uninstall its UI upon subsequent serializations.
> This happens for classes that use the BasicTableHeaderUI class. Any LAF that 
> extends the BasicTableHeaderUI like SynthTableHeaderUI and 
> WindowsTableHeaderUI will get an NotSerializableException thrown
> 
> Each time an JComponent instance is Serialized, a [counter 
> ](https://github.com/openjdk/jdk/blob/218829e0a2a3ae5599b81733df53557966392033/src/java.desktop/share/classes/javax/swing/JComponent.java#L5644-L5645)
>  for the instance is incremented. It is de-incremented in JComponent's 
> writeObject or a class that implements it the same way, like JButton, 
> JScrollPane etc..
> With JTableHeader it does not deincrement the counter. The uninstall 
> mechanism will not uninstall a UI if the counter is not 0 on the first 
> pass..It is not possible to call JComponent.setWriteObjectCounter in 
> JTableHeader as it is not in the same package so the fix is to remove the 
> writeObject implementation and rely on JComponent writeObject implementation 
> to make sure uninstallation of UI happens and also NotSerializableException 
> does not happen for Synth

Does the copyright year in JTableHeader.java need to be updated to 2023 as well?

test/jdk/javax/swing/JTableHeader/SerializeJTableHeader.java line 39:

> 37: import java.io.ObjectOutputStream;
> 38: 
> 39: public class SerializeJTableHeader implements Runnable{

Suggestion:

public class SerializeJTableHeader implements Runnable {

test/jdk/javax/swing/JTableHeader/SerializeJTableHeader.java line 44:

> 42:         JTableHeader jth = new JTableHeader();
> 43:         try {
> 44:             for(int i = 0; i < 10; i ++){

Suggestion:

            for(int i = 0; i < 10; i++) {

test/jdk/javax/swing/JTableHeader/SerializeJTableHeader.java line 68:

> 66:     }
> 67: 
> 68:     public static void main(String ... args) throws Exception{

Suggestion:

    public static void main(String ... args) throws Exception {

-------------

PR Review: https://git.openjdk.org/jdk/pull/15507#pullrequestreview-1607662850
PR Review Comment: https://git.openjdk.org/jdk/pull/15507#discussion_r1313519001
PR Review Comment: https://git.openjdk.org/jdk/pull/15507#discussion_r1313520520
PR Review Comment: https://git.openjdk.org/jdk/pull/15507#discussion_r1313519686

Reply via email to