You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2010/03/21 23:13:22 UTC

svn commit: r925918 - /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java

Author: curtisr7
Date: Sun Mar 21 22:13:22 2010
New Revision: 925918

URL: http://svn.apache.org/viewvc?rev=925918&view=rev
Log:
OPENJPA-1545: Only detach StateManagers that aren't already detached.

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java?rev=925918&r1=925917&r2=925918&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java Sun Mar 21 22:13:22 2010
@@ -46,14 +46,16 @@ public class DetachManagerLite {
             ClassMetaData cmd = sm.getMetaData();
             if (sm.isPersistent() && cmd.isDetachable()) {
                 PersistenceCapable pc = sm.getPersistenceCapable();
-                // Detach proxy fields.
-                BitSet loaded = sm.getLoaded();
-                for (FieldMetaData fmd : cmd.getProxyFields()) {
-                    if (loaded.get(fmd.getIndex())) {
-                        detachProxyField(fmd, pc, sm, fm);
+                if(pc.pcIsDetached() == false){
+                    // Detach proxy fields.
+                    BitSet loaded = sm.getLoaded();
+                    for (FieldMetaData fmd : cmd.getProxyFields()) {
+                        if (loaded.get(fmd.getIndex())) {
+                            detachProxyField(fmd, pc, sm, fm);
+                        }
                     }
+                    pc.pcReplaceStateManager(null);
                 }
-                pc.pcReplaceStateManager(null);
             }
         }
     }