You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by jo...@apache.org on 2016/08/09 16:30:35 UTC
[6/6] cayenne git commit: Fix unnecessary fetching of relationships
when optimistic locking is enabled for an entity,
but not for all its relationships
Fix unnecessary fetching of relationships when optimistic locking is enabled for an entity, but not for all its relationships
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/6b73bad7
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/6b73bad7
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/6b73bad7
Branch: refs/heads/ics11
Commit: 6b73bad7888f213ad609dab78b81236e61c8adec
Parents: 4d9a66c
Author: John Huss <jo...@apache.org>
Authored: Mon Jun 13 11:00:33 2016 -0500
Committer: John Huss <jo...@apache.org>
Committed: Mon Jun 13 11:00:33 2016 -0500
----------------------------------------------------------------------
.../src/main/java/org/apache/cayenne/access/ObjectDiff.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/6b73bad7/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectDiff.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectDiff.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectDiff.java
index f85d482..f54c905 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectDiff.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectDiff.java
@@ -88,7 +88,7 @@ class ObjectDiff extends NodeDiff {
if (state == PersistenceState.COMMITTED || state == PersistenceState.DELETED
|| state == PersistenceState.MODIFIED) {
- ObjEntity entity = entityResolver.getObjEntity(entityName);
+ final ObjEntity entity = entityResolver.getObjEntity(entityName);
final boolean lock = entity.getLockType() == ObjEntity.LOCK_TYPE_OPTIMISTIC;
this.snapshot = new HashMap<String, Object>();
@@ -109,9 +109,10 @@ class ObjectDiff extends NodeDiff {
@Override
public boolean visitToOne(ToOneProperty property) {
-
+ boolean isUsedForLocking = entity.getRelationship(property.getName()).isUsedForLocking();
+
// eagerly resolve optimistically locked relationships
- Object target = lock ? property.readProperty(object) : property.readPropertyDirectly(object);
+ Object target = isUsedForLocking ? property.readProperty(object) : property.readPropertyDirectly(object);
if (target instanceof Persistent) {
target = ((Persistent) target).getObjectId();