river-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Firmstone <j...@zeus.net.au>
Subject Re: Implementation Decision
Date Sat, 01 Aug 2009 00:33:47 GMT
I'm a tad disappointed no one's asking why I'm not using Uuid for object 

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,


View raw message