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 2012/03/21 20:08:28 UTC
svn commit: r1303508 - in /openjpa/branches/2.2.x:
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java
Author: curtisr7
Date: Wed Mar 21 19:08:28 2012
New Revision: 1303508
URL: http://svn.apache.org/viewvc?rev=1303508&view=rev
Log:
OPENJPA-2158: Null out StateManager when lite auto detaching proxies.
Modified:
openjpa/branches/2.2.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
openjpa/branches/2.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java
Modified: openjpa/branches/2.2.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.2.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java?rev=1303508&r1=1303507&r2=1303508&view=diff
==============================================================================
--- openjpa/branches/2.2.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java (original)
+++ openjpa/branches/2.2.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java Wed Mar 21 19:08:28 2012
@@ -81,13 +81,15 @@ public class DetachManagerLite {
// need to null out LRS fields.
nullField(fieldIndex, pc, sm, fm);
} else {
- if (!_detachProxies) {
- return;
- }
Object o = sm.fetchObject(fieldIndex);
if (o instanceof Proxy) {
// Get unproxied object and replace
Proxy proxy = (Proxy) o;
+ if (!_detachProxies) {
+ // Even if we're not detaching proxies, we need to remove the reference to the SM.
+ proxy.setOwner(null, -1);
+ return;
+ }
Object unproxied = proxy.copy(proxy);
fm.storeObjectField(fieldIndex, unproxied);
sm.replaceField(pc, fm, fieldIndex);
Modified: openjpa/branches/2.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java?rev=1303508&r1=1303507&r2=1303508&view=diff
==============================================================================
--- openjpa/branches/2.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java (original)
+++ openjpa/branches/2.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java Wed Mar 21 19:08:28 2012
@@ -76,6 +76,9 @@ public class TestDetachLite extends Test
assertTrue(beforeDetachCal instanceof Proxy);
assertTrue(afterDetachCal instanceof Proxy);
+
+ // Make sure that we get rid of the StateManager.
+ assertNull(((Proxy)afterDetachCal).getOwner());
} finally {
if (iem.getTransaction().isActive()) {
iem.getTransaction().rollback();