Author: aadamchik Date: Thu Oct 10 02:46:39 2013 New Revision: 1530844 URL: http://svn.apache.org/r1530844 Log: CAY-1798 ROP: Reverse relationships of prefetched entity objects are not filled during server to client objects conversion.
marginally faster metadata lookup (actually not sure this is that much faster :)) Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/util/ObjectDetachOperation.java Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/util/ObjectDetachOperation.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/util/ObjectDetachOperation.java?rev=1530844&r1=1530843&r2=1530844&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/util/ObjectDetachOperation.java (original) +++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/util/ObjectDetachOperation.java Thu Oct 10 02:46:39 2013 @@ -99,19 +99,16 @@ public class ObjectDetachOperation { descriptor.visitProperties(new PropertyVisitor() { - private void fillReverseRelationship(Object destinationTarget, ArcProperty property) { - ArcProperty reverseProperty = property.getComplimentaryReverseArc(); + private void fillReverseRelationship(Object destinationTarget, ArcProperty property) { + ArcProperty clientProperty = (ArcProperty) targetDescriptor.getProperty(property.getName()); + if (clientProperty != null) { + ArcProperty clientReverse = clientProperty.getComplimentaryReverseArc(); - if (reverseProperty != null && reverseProperty instanceof ToOneProperty) { - - ClassDescriptor desc = targetResolver.getClassDescriptor( - reverseProperty.getRelationship().getSourceEntity().getName()); - - ToOneProperty targetReverseProperty = - (ToOneProperty) desc.getProperty(reverseProperty.getName()); - targetReverseProperty.writeProperty(destinationTarget, null, target); - } - } + if (clientReverse instanceof ToOneProperty) { + clientReverse.writeProperty(destinationTarget, null, target); + } + } + } public boolean visitToOne(ToOneProperty property) { if (prefetchTree != null) {