Brian Candler <B.Candler / pobox.com> wrote in message news:<20030430212939.GB41345 / uk.tiscali.com>...
> I am not sure about allowing one contact object to be shared between two
> addressbooks though. Any change to the contact would have to be 'agreed' by
> both addressbooks, which sounds like a fairly complicated two-phase commit
> to avoid getting into an inconsistent state.

Not really complicated. Add Vetoable Change Support to the Contact
class. The involved addressbooks register a Vetoable Change Listener
at the contact objects. Whenever a contact is changed, all registrated
listeners are allowed to vote about the change, and they can prevent
that the change takes place.