You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/10/15 03:38:17 UTC

svn commit: r464093 - /incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java

Author: aadamchik
Date: Sat Oct 14 18:38:15 2006
New Revision: 464093

URL: http://svn.apache.org/viewvc?view=rev&rev=464093
Log:
CAY-692:  Extra argument needed in ObjectContext.prepareForAccess - whether the property is a fault or not.
(reverting CayenneDataObject back to its initial strategy of not relying on ObjectContext for fault resolving. This should provide better performance)

Modified:
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java?view=diff&rev=464093&r1=464092&r2=464093
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/CayenneDataObject.java Sat Oct 14 18:38:15 2006
@@ -191,15 +191,22 @@
         return object;
     }
 
-    public Object readProperty(String propName) {
+    public Object readProperty(String propertyName) {
         if (objectContext != null) {
+            // will resolve faults ourselves below as checking class descriptors for the
+            // "lazyFaulting" flag is inefficient. Passing "false" here to suppress fault
+            // processing
+            objectContext.prepareForAccess(this, propertyName, false);
+        }
+
+        Object object = readPropertyDirectly(propertyName);
 
-            // TODO: andrus, 10/14/2006 - ensure "lazyFaulting" flag is not set to true if
-            // this is a simple property to improve ObjectContext performance
-            objectContext.prepareForAccess(this, propName, true);
+        if (object instanceof Fault) {
+            object = ((Fault) object).resolveFault(this, propertyName);
+            writePropertyDirectly(propertyName, object);
         }
 
-        return readPropertyDirectly(propName);
+        return object;
     }
 
     public Object readPropertyDirectly(String propName) {
@@ -208,12 +215,12 @@
 
     public void writeProperty(String propName, Object val) {
         if (objectContext != null) {
+            // pass "false" to avoid unneeded fault processing
+            objectContext.prepareForAccess(this, propName, false);
 
-            // this calls "prepareForAccess" internally
-            Object oldValue = readProperty(propName);
-
-            // note how we notify DataContext of change BEFORE the object is actually
+            // note how we notify ObjectContext of change BEFORE the object is actually
             // changed... this is needed to take a valid current snapshot
+            Object oldValue = readPropertyDirectly(propName);
             objectContext.propertyChanged(this, propName, oldValue, val);
         }