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/06/13 16:28:23 UTC

cayenne git commit: Fix unnecessary fetching of relationships when optimistic locking is enabled for an entity, but not for all its to-one relationships

Repository: cayenne
Updated Branches:
  refs/heads/master 85852f92e -> 81f99c3b5


Fix unnecessary fetching of relationships when optimistic locking is enabled for an entity, but not for all its to-one relationships


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/81f99c3b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/81f99c3b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/81f99c3b

Branch: refs/heads/master
Commit: 81f99c3b552328f54eaec49cf0bd1d5e6536363f
Parents: 85852f9
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:26:40 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/81f99c3b/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 45b7176..73b4f78 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<>();
@@ -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();