Claims
- 1. An apparatus comprising:a processor; a memory coupled to the processor; a plurality of encapsulated objects residing in said memory, each of said objects representing an instance of a respective class of a hierarchical set of classes; an existing object of said plurality of encapsulated objects residing in the memory and referenced by an existing object reference; and a versioning mechanism residing in the memory, the versioning mechanism creating a new object which is a copy of the existing object and which is referenced by a new object reference, the versioning mechanism modifying either the existing object or the new object, thereby creating a modified version of the existing object and an unmodified version of the existing object and allowing other objects of said plurality of encapsulated objects to concurrently access both: (a) the modified version of the existing object through a first one of the set consisting of the existing object reference and the new object reference; and (b) the unmodified version of the existing object through a second one of the set consisting of the existing object reference and the new object reference, said second one of said set being different from said first one of said set.
- 2. The apparatus of claim 1 wherein the versioning mechanism deletes either the existing object or the new object.
- 3. The apparatus of claim 1 wherein the existing object and the copy of the existing object each further comprise a version identifier field and wherein each of the version identifier fields contains a version number.
- 4. The apparatus of claim 3 wherein the version number in the version identifier field of the existing object is different than the version number in the version identifier field of the copy of the existing object.
- 5. A method performed on a computer system, said computer system comprising a plurality of encapsulated objects residing in a memory, each of said objects representing an instance of a respective class of a hierarchical set of classes, including an existing object of said plurality of encapsulated objects that is referenced by an existing object reference, the method comprising the steps of:using a versioning mechanism to create an new object which is a copy of the existing object and which is referenced by a new object reference; and modifying either the existing object or the new object, thereby creating a modified version of the existing object and an unmodified version of the existing object and allowing other objects of said plurality of encapsulated objects to concurrently access both: (a) the modified version of the existing object through a first one of the set consisting of the existing object reference and the new object reference; and (b) the unmodified version of the existing object through a second one of the set consisting of the existing object reference and the new object reference, said second one of said set being different from said first one of said set.
- 6. The method of claim 5 further comprising the step of deleting either of the existing object or the new object.
- 7. The method of claim 6 wherein the step of deleting either of the existing object or the new object comprises the step of deleting the existing object.
- 8. The method of claim 6 wherein the step of deleting either of the existing object or the new object comprises the step of deleting the new object.
- 9. The method of claim 5 wherein the step of creating a new object comprises the step of using a constructor object to make a copy of the existing object and copying the state data from the existing object into the new object.
- 10. A method for creating a modified version of an existing object on a computer system, said computer system comprising a plurality of encapsulated objects residing in a memory, each of said objects representing an instance of a respective class of a hierarchical set of classes, including the existing object of said plurality of encapsulated objects that is referenced by an existing object reference, the method comprising the steps of:using a versioning mechanism to make a copy of the existing object, the copy being referenced by a new object reference, wherein both the existing object and the copy of the existing object each contain a version identifier field; modifying one of the existing object or the copy of the existing object, thereby creating a modified version of the existing object and an unmodified version of the existing object and allowing other objects of said plurality of encapsulated objects to concurrently access both: (a) the modified version of the existing object through a first one of the set consisting of the new object reference and the existing object reference; and (b) the unmodified version of the existing object through a second one of the set consisting of the new object reference and the existing object reference, said second one of said set being different from said first one of said set; and updating the version field of the modified version of the existing object to reflect a new version number.
- 11. The method of claim 10 further comprising the step of accessing the modified version of the existing object by referencing the new version number contained in the version identifier field.
- 12. The method of claim 10 further comprising the step of disabling at least one method on either the existing object or the copy of the existing object.
- 13. A program product tangibly embodying a program of machine-readable instructions executable by a computer system, the program product comprising:a versioning mechanism for a plurality of encapsulated objects residing in said computer system, each of said objects representing an instance of a respective class of a hierarchical set of classes, the versioning mechanism creating a new object of said plurality of encapsulated objects which is a copy of an existing object of said plurality of encapsulated objects and which is referenced by a new object reference, the existing object referenced by an existing object reference, the versioning mechanism modifying at least one of the existing object or the new object, thereby creating a modified version of the existing object and an unmodified version of the existing object and allowing other objects of said plurality of encapsulated objects to concurrently access both: (a) the modified version of the existing object through a first one of the set consisting of the existing object reference and the new object reference; and (b) the unmodified version of the existing object through a second one of the set consisting of the existing object reference and the new object reference, said second one of said set being different from said first one of said set; and signal bearing media bearing the version mechanism.
- 14. The program product of claim 13 wherein the signal bearing media comprises transmission media.
- 15. The program product of claim 13 wherein the signal bearing media comprises recordable media.
- 16. The program product of claim 13 wherein the versioning mechanism deletes the existing object after modifying at least one of the existing object or the new object.
- 17. The program product of claim 13 wherein the versioning mechanism deletes the unmodified object after modifying at least one of the existing object or the new object.
- 18. A method for versioning encapsulated objects on a computer system, said computer system comprising a plurality of said encapsulated objects residing in a memory, each of said objects representing an instance of a respective class of a hierarchical set of classes, including an existing object of said plurality of encapsulated objects that is referenced by an existing object reference, the method comprising the steps of:using a versioning mechanism to make a copy of the existing object, the copy being referenced by a new object reference; using a versioning mechanism to copy at least a portion of state data from the existing object into a new object; and modifying the existing object, thereby creating a modified version of the existing object and an unmodified version of the existing object and allowing other objects of said plurality of encapsulated objects to concurrently access both: (a) the modified version of the existing object through the existing object reference; and (b) the unmodified version of the existing object through the new object reference.
- 19. The method of claim 18 further comprising the step of disabling at least one method on the existing object.
RELATED APPLICATIONS
This application is related to the following U.S. patent applications: “Apparatus and Method for Disabling Methods Called on an Object,” Ser. No. 09/096,880, filed on Jun. 12, 1998; and “Apparatus and Method for Versioning Persistent Objects,” Ser. No. 09/096,132, filed on Jun. 11, 1998.
US Referenced Citations (7)
Non-Patent Literature Citations (3)
| Entry |
| Feller. Software Process Support Through Software Configuration Management. IEEE. pp. 58-60, 1990.* |
| Ochuodho et al. A Process-Oriented Version and Configuration Management Model for Communications Software. ACM. pp. 109-120, 1991.* |
| Hicks et al. A Hypermedia Version Control Framework. ACM Transactions on Information Systems. vol. 16, No. 2, pp. 127-160, Apr. 1998. |