db-ojb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jamie Burns" <jamie_r_bu...@hotmail.com>
Subject Fix for bug in PersistenceBrokerImpl (Part 1)
Date Mon, 24 Feb 2003 23:54:11 GMT

I found what l believe to be a bug in PersistenceBrokerImpl.

I have an EpisodeDetails object which has a collection of LegalSituations in an indirection
table EpsDetLegSit. When a user deletes an EpsDetLegSit it is removed ok when the transaction
is committed. However, if they try to add the EpsDetLegSit back in  in the same VM it does
not get added when the transaction is committed.

Back in November last year (2002/11/11) a change was made to the setInitialModificationState
method in ObjectEnvelope. The change looked in a Map maintained by LoadedObjectsRegistry to
see if the object had already been loaded in the VM. If the Map contained the object, ObjectEnvelope
sets the initial state to StateOldClean. This is ok initially, but if the object is deleted
it is not removed from LoadedObjectsRegistry. When the user tries to re-add the object, ObjectEnvelope
still thinks the object exists and sets the state of the NEW object to StateOldClean.

The changes l am submitting remove entries from the LoadedObjectsRegistry Map when PersistenceBrokerImpl
removes entries from its ObjectCache. (Im sending the files in 2 seperate emails. My emails
are getting bounced because of some size restriction)

In the future someone might want to look at whether it is the responsibility of a PersistenceBroker
or an ObjectCache to keep the LoadedObjectsRegistry in synch. For now, lve made it the responsibilty
of a PersistenceBroker.

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message