RFR: 6450193: After the first Serialization, JTableHeader does not uninstall its UI [v2]
Prasanta Sadhukhan
psadhukhan at openjdk.org
Thu Sep 21 17:35:38 UTC 2023
> 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
Prasanta Sadhukhan has updated the pull request incrementally with one additional commit since the last revision:
Review fix for test
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/15507/files
- new: https://git.openjdk.org/jdk/pull/15507/files/a8df4717..267a4787
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=15507&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=15507&range=00-01
Stats: 28 lines in 2 files changed: 7 ins; 17 del; 4 mod
Patch: https://git.openjdk.org/jdk/pull/15507.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/15507/head:pull/15507
PR: https://git.openjdk.org/jdk/pull/15507
More information about the client-libs-dev
mailing list