Also the users expect things to (mostly) work without code changes after upgrading a Cayenne jar. And this has been one of the strong points of Cayenne for many years. We received many praises about the ease of upgrade between major versions, and I don't want us to turn into ... ok, I won't be calling names of specific projects that completely rewrite their API from release to release, we all know them well :-) Now I am guilty myself of removing/changing stable API on a short notice occasionally, but generally we've been pretty good at keeping things backwards compatible and setting up proper deprecation period.

So how about this - we can change internal implementation of CayenneDataObject and PersistentObject to actually store an enum field for state, but we still preserve the int methods with deprecated tag, returning enum ordinal? I think that's reasonable and addresses your concern about debugging.

Andrus


On Nov 27, 2007, at 7:37 PM, Kevin Menard wrote:
I'm not sure that our users are looking for more time. While certainly there are benefits by Cayenne's internals switching to Java 5, such as the use of the new concurrent API, I'd imagine for a lot of users the benefit of the move is the use of generics, enums, etc. Taking the PersistenceState for example . . . As an enum, this would save me a lot of development time. I can't count how many times I've looked at an object in a debugger and wasn't clear on the static int value for the persistence state and didn't
want to have to keep typing persistenceStateName() to find out.

I've also run across code where things get casted to the wrong type and the
modified newObject() takes care of that problem.

Anyway, the picture I'm trying to paint is that the code modifications
necessary are minimal in comparison to the time that could be saved by
making them. This is the feeling I was getting off the user list as well. Without going too far out on a limb, either, I'd imagine many are using the
milestones as a migratory period as well.

On 11/27/07 12:20 PM, "Andrus Adamchik" <[EMAIL PROTECTED]> wrote:


On Nov 27, 2007, at 7:05 PM, Kevin Menard wrote:

While we could use enums internally and preserve the int based API for
client use, it seems to be of dubious value.  We could deprecate it
now I
suppose, but introducing a new alternative to PersistenceState, that
encodes
the same info, just in a nicer manner, doesn't appear to gain us much.

It gives the users more time (maybe a year, maybe more) to migrate
their code and a clear indication of what will be changed.

FWIW, the change to performQuery to return List<?> broke more of my
code
than the enum changes would.

That's a good one... Impact of generics conversion on backwards
compatibility is not fully clear to me just yet. There is a
possibility that we may need to undo some of what we've done with it.

Andrus

--
Kevin Menard
Servprise International, Inc.
Remote reboot & power control for network equipment
www.servprise.com              +1 508.892.3823 x308



Reply via email to