Refactor Individual property setters
@pwithnall
Submitted by Philip Withnall Link to original bug (#658326)
Description
This doesn't have to be done for this cycle, since nobody seriously uses Individual property setters. However, it should still get done in the near future if possible.
From my e-mail of 2011-09-03:
• Individual property setters should write to all personas which have the given property name in Persona.writeable-properties, but should not create new personas (that's what IndividualAggregator.ensure_individual_property_writeable() is for).
-
We document them as having synchronising behaviour which may or may not be desirable. For Empathy's case, the behaviour will actually be the same as it's always been, since we used to (hackily) also write aliases and groups to stores which had PersonaStore.is-writeable == false.
gnome-contacts doesn't care since it manipulates personas directly. This is what we should advise any kind of non-trivial client to do.
This works in all scenarios except scenario 3. I think the only reasonable way to behave correctly in scenario 3 is for the client to set properties of personas manually, as gnome-contacts does. I can't think of a way to get Individual property setters to: a. Reliably store properties such that they are consistently returned by the Individual property getter afterwards. b. Not create extraneous personas in the primary store. c. Not shit all over persona stores like company LDAP which should only be written to on special occasions.
i.e. This solution prioritises point a. and b. over point c.
Version: git master