Migration Guidelines for Classes with Hand-coded Externalization
The following are guidelines for the migration of classes with hand-coded externalization:
• First, check whether the code generated into the readVersion method looks the same as the code that is preserved in readExternal. If so, you should turn off preservation and just let it all be generated.
• If the class had modeled a serialVersionUID attribute, remove it from the model.
• Set the Serializable property to Evolvable.
• If the class already implemented readOldVersion, multiple old versions will now need to be supported.
• If the class is not final, the following guidelines apply:
◦ If the class was using something other than the generated version ID number, you must change the read/write to use the EXTERNALIZATION_VERSION_UID constant.
In addition, OLD_FORMAT_VERSION_UID should be ignored because it is incorrect for your class. To read in instances externalized in the old format, reference the version UID that was actually used.
You must also add support for the old ID to readOldVersion().
◦ You must move code from readExternal() to readVersion(), and set preserve=no for readExternal().