-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 7.0.0
-
Fix Version/s: 7.0.0
-
Component/s: Module - Relationships
-
Labels:
In ManagedObjectSet#handleSignalVertexUpdateFromEdge, the old (read from repo) and new (read from managed and with relationship-derived-virtual-property processing applied) are compared, and if they are equal, the managed object signal recipient will not be persisted. The problem is that ResourceUtil#isEqual is used to perform the equality comparison, but this comparison utility will strip out _id and _rev fields prior to performing the comparison. This means that
{}
is equal to
{"_id" :"foo", "_rev":"bar"}
Assume an effectiveManager relationship-derived virtual property with a referencedObjectFields specification of _id. When, for example, a managed/user/boss is created with a reports field pointing to a managed/user/dev. Upon signal receipt associated with this created edge, the old managed/user/dev effectiveManager field will be
{}
the new effectiveManager field will be
{"_id" :"xxx", "_rev":"1"}
but due to the semantics of ResourceUtil#isEqual, these two fields will compare as equal, and thus the managed/user/dev, with the new effectiveManager field, will not be persisted.
- is related to
-
OPENIDM-15115 Add effectiveManager test to Relationship Derived Virtual Props test suite
-
- Closed
-