You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by kw...@apache.org on 2012/03/30 04:02:50 UTC

svn commit: r1307217 - in /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel: ENonTransState.java PNonTransState.java StateManagerImpl.java TCleanState.java

Author: kwsutter
Date: Fri Mar 30 02:02:50 2012
New Revision: 1307217

URL: http://svn.apache.org/viewvc?rev=1307217&view=rev
Log:
OPENJPA-2167.  Only reload the proxy fields if the field is loaded and dirty.

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ENonTransState.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PNonTransState.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/TCleanState.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ENonTransState.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ENonTransState.java?rev=1307217&r1=1307216&r2=1307217&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ENonTransState.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ENonTransState.java Fri Mar 30 02:02:50 2012
@@ -31,11 +31,11 @@ class ENonTransState
     extends PCState {
 
     void initialize(StateManagerImpl context) {
-        context.setDirty(false);
-        context.clearSavedFields();
-
         // spec says all proxies to second class objects should be reset
         context.proxyFields(true, true);
+
+        context.setDirty(false);
+        context.clearSavedFields();
     }
 
     PCState delete(StateManagerImpl context) {

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PNonTransState.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PNonTransState.java?rev=1307217&r1=1307216&r2=1307217&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PNonTransState.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PNonTransState.java Fri Mar 30 02:02:50 2012
@@ -38,11 +38,11 @@ class PNonTransState
         (PNonTransState.class);
 
     void initialize(StateManagerImpl context) {
-        context.setDirty(false);
-        context.clearSavedFields();
-
         // spec says all proxies to second class objects should be reset
         context.proxyFields(true, false);
+
+        context.setDirty(false);
+        context.clearSavedFields();
     }
 
     PCState delete(StateManagerImpl context) {

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java?rev=1307217&r1=1307216&r2=1307217&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java Fri Mar 30 02:02:50 2012
@@ -2967,7 +2967,8 @@ public class StateManagerImpl
         try {
             for (FieldMetaData fmd : _meta.getProxyFields()) {
                 int index = fmd.getIndex();
-                if (_loaded.get(index)) {
+                // only reload if dirty
+                if (_loaded.get(index) && _dirty.get(index)) {
                     provideField(_pc, _single, index);
                     if (_single.proxy(reset, replaceNull)) {
                         replaceField(_pc, _single, index);

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/TCleanState.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/TCleanState.java?rev=1307217&r1=1307216&r2=1307217&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/TCleanState.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/TCleanState.java Fri Mar 30 02:02:50 2012
@@ -31,13 +31,13 @@ class TCleanState
     extends PCState {
 
     void initialize(StateManagerImpl context) {
-        context.clearSavedFields();
-        context.setLoaded(true);
-        context.setDirty(false);
-
         // need to replace the second class objects with proxies that
         // listen for dirtying so we can track changes to these objects
         context.proxyFields(true, false);
+
+        context.clearSavedFields();
+        context.setLoaded(true);
+        context.setDirty(false);
     }
 
     PCState persist(StateManagerImpl context) {