Author: curtisr7
Date: Wed Mar 21 19:06:42 2012
New Revision: 1303507
URL: http://svn.apache.org/viewvc?rev=1303507&view=rev
Log:
OPENJPA-2158: Null out StateManager when lite auto detaching proxies.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.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=1303507&r1=1303506&r2=1303507&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
Wed Mar 21 19:06:42 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/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java?rev=1303507&r1=1303506&r2=1303507&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java
(original)
+++
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detachment/TestDetachLite.java
Wed Mar 21 19:06:42 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();