×

Maintaining multiple valid concurrent serialized object versions

  • US 7,844,948 B2
  • Filed: 03/29/2008
  • Issued: 11/30/2010
  • Est. Priority Date: 06/09/2003
  • Status: Active Grant
First Claim
Patent Images

1. A computer-implemented system for enabling multiple compatible versions of serialized objects to be maintained concurrently, comprising:

  • a computer comprising a processor; and

    instructions which execute using the processor to implement functions comprising;

    determining a class name and a version of a serialized object to be deserialized from a storage medium, wherein the version of the serialized object is a previously-computed version value computed over a class definition for the named class when the serialized object was serialized;

    determining whether the serialized object can be deserialized to a target class definition for the named class, further comprising;

    using the determined class name to programmatically consult a mapping to determine whether the version of the serialized object is identical to a current version of the target class definition, and if not, whether the version of the serialized object is compatible with the current version of the target class definition, wherein;

    the mapping comprises at least one entry, each entry corresponding to a different class name and comprising (1) a current version value representing the current version for the corresponding class name, the current version value being computed over a current class definition for the corresponding class name, and (2) zero or more compatible version values, each of which represents a compatible version for the corresponding class name, the compatible version values each being computed over a non-current class definition for the corresponding class name, wherein each of the non-current class definitions is different from, but is to be treated as compatible with, the current class definition for the corresponding class name;

    the version of the serialized object is identical to the current version of the target class definition if the version of the serialized object matches the current version value in the entry corresponding to the determined class name; and

    the version of the serialized object is compatible with the current version of the target class definition if the version of the serialized object matches one of the compatible version values in the entry corresponding to the determined class name;

    providing the current version value from the entry corresponding to the determined class name to a version checker used during the deserialization, as a substitute for the previously-computed version value, when the version of the serialized object is determined to be compatible with the current version of the target class definition, and providing the previously-computed version value otherwise; and

    deserializing the serialized object from the storage medium to the target class definition only if the current version value, or the previously-computed version value, provided to the version checker matches the current version of the target class definition.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×