I'm a tad disappointed no one's asking why I'm not using Uuid for object identity?

Firstly, I'd like to.

Let me explain:

The purpose of versioning is to keep important long lived Objects alive while code evolves. One of the projects I had recently was related to charge out rates & contracts for several different employment agreements...

Currently, you have to shut down your djinn if you wish to upgrade your code and codebases can move etc, need to use something like hibernate or JDBC to persist your objects and tackle the whole object relational mapping impedance problem, ie, splitting an object into a number of tables & reconstituting . This isn't suitable if we're ever going to expand River out into the web.

Not all object's need to persist over upgrades.

Back to the question, the problem, Uuid is a class who's objects may be required to live for long periods of time, it is precisely the type of object that should be preserved. Why haven't I chosen to use it yet? I get the feeling I need to. Currently I have been thinking of River as a library, such that if it received an upgrade, the new version would be loaded into another ClassLoader to avoid conflicts. That's the problem, Uuid now has two Types, and it's equals method returns false for the same Uuid object if using separate Type's.

For this to work there needs to be a small core or base that doesn't change, the other packages or jar files can change or be used as libraries, however any River classes that produce long lived objects, either need to support versioning or not change or be installed locally and backward compatible, just like the JRE API itself.

It is very important to keep the version API simple and mostly restricted to interfaces or classes that don't change, hence the need to have you all review and comment. I'm not the most experienced but I'm having a go. I'm hoping that those among you who have considered this problem before can look at the code and make suggestions.

Best Regards,

Peter.

Reply via email to