Author: dwoods
Date: Sat Mar 27 19:33:52 2010
New Revision: 928251
URL: http://svn.apache.org/viewvc?rev=928251&view=rev
Log:
OPENJPA-1597 Revert code added to DetachManager to unproxy objects when
detached in-place. Updated tests to verify old behavior of detached entites
still having references, but that they are removed during serialization.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detach/TestDetachNoProxy.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestDetachMerge.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/proxy/persistence2.xml
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java?rev=928251&r1=928250&r2=928251&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManager.java
Sat Mar 27 19:33:52 2010
@@ -708,10 +708,8 @@ public class DetachManager
* Set the owner of the field's proxy to the detached state manager.
*/
private Object reproxy(Object obj, int field) {
- if (obj != null && _detSM != null && obj instanceof Proxy) {
+ if (obj != null && _detSM != null && obj instanceof Proxy)
((Proxy) obj).setOwner(_detSM, field);
- return ((Proxy) obj).copy(obj);
- }
return obj;
}
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detach/TestDetachNoProxy.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detach/TestDetachNoProxy.java?rev=928251&r1=928250&r2=928251&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detach/TestDetachNoProxy.java
(original)
+++
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/detach/TestDetachNoProxy.java
Sat Mar 27 19:33:52 2010
@@ -97,7 +97,7 @@ public class TestDetachNoProxy extends S
// in-place updated entity should not have any proxy classes and
should be detached
assertFalse(em.contains(e20));
assertTrue(em.isDetached(e20));
- verifySerializable(e20, false, false);
+ verifySerializable(e20, true, false);
em.close();
emf2.close();
@@ -202,7 +202,7 @@ public class TestDetachNoProxy extends S
// entity should not have any proxy classes (in-place updated) and
is detached
assertFalse(em.contains(e20));
assertTrue(em.isDetached(e20));
- verifySerializable(e20, false, false);
+ verifySerializable(e20, true, false);
}
em.close();
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestDetachMerge.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestDetachMerge.java?rev=928251&r1=928250&r2=928251&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestDetachMerge.java
(original)
+++
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestDetachMerge.java
Sat Mar 27 19:33:52 2010
@@ -77,7 +77,6 @@ public class TestDetachMerge extends Sin
/*
* Test default 1.0 compatibility behavior, which should pass AS-IS
*/
- @AllowFailure(message="Will fail until root cause of OPENJPA-1597 is
found")
public void testAnnuity1Compat() throws Exception {
OpenJPAEntityManagerFactorySPI emf1 =
(OpenJPAEntityManagerFactorySPI)
OpenJPAPersistence.createEntityManagerFactory(
@@ -107,9 +106,8 @@ public class TestDetachMerge extends Sin
}
/*
- * Test 2.0 behavior with Compatibility flag and DetachedStateField=true,
which should PASS
+ * Test default 2.0 compatibility behavior, which should PASS
*/
- @AllowFailure(message="Will fail until root cause of OPENJPA-1597 is
found")
public void testAnnuity2Compat() throws Exception {
OpenJPAEntityManagerFactorySPI emf2 =
(OpenJPAEntityManagerFactorySPI)
OpenJPAPersistence.createEntityManagerFactory(
@@ -138,73 +136,6 @@ public class TestDetachMerge extends Sin
}
}
- /*
- * Test 2.0 behavior with DetachedStateField=true, which should FAIL
- */
- public void testAnnuity2Fail() throws Exception {
- OpenJPAEntityManagerFactorySPI emf2 =
- (OpenJPAEntityManagerFactorySPI)
OpenJPAPersistence.createEntityManagerFactory(
- "Annuity2Fail",
"org/apache/openjpa/persistence/proxy/persistence2.xml");
- assertNotNull(emf2);
-
- Log log = emf2.getConfiguration().getLog("test");
-
- if (log.isTraceEnabled()) {
- Compatibility compat =
emf2.getConfiguration().getCompatibilityInstance();
- assertNotNull(compat);
- log.trace("started testAnnuity2Fail()");
- log.trace("FlushBeforeDetach=" + compat.getFlushBeforeDetach());
- log.trace("CopyOnDetach=" + compat.getCopyOnDetach());
- log.trace("CascadeWithDetach=" + compat.getCascadeWithDetach());
- log.trace("IgnoreDetachedStateFieldForProxySerialization=" +
- compat.getIgnoreDetachedStateFieldForProxySerialization());
- }
-
- try {
- execute(emf2);
- fail("testAnuity2Fail() should have caused an execption!");
- } catch (RuntimeException e) {
- if (e.getMessage().startsWith("Annuity:")) {
- // no-op caught our expected exception
- } else {
- fail("testAnuity2Fail() caught an unexpected execption!" + e);
- }
- } finally {
- emf2.close();
- }
- }
-
- /*
- * Test default 2.0 behavior with DetachedStateField=transient, which
should PASS
- */
- public void testAnnuity2New() throws Exception {
- OpenJPAEntityManagerFactorySPI emf2 =
- (OpenJPAEntityManagerFactorySPI)
OpenJPAPersistence.createEntityManagerFactory(
- "Annuity2New",
"org/apache/openjpa/persistence/proxy/persistence2.xml");
- assertNotNull(emf2);
-
- Log log = emf2.getConfiguration().getLog("test");
-
- if (log.isTraceEnabled()) {
- Compatibility compat =
emf2.getConfiguration().getCompatibilityInstance();
- assertNotNull(compat);
- log.trace("started testAnnuity2New()");
- log.trace("FlushBeforeDetach=" + compat.getFlushBeforeDetach());
- log.trace("CopyOnDetach=" + compat.getCopyOnDetach());
- log.trace("CascadeWithDetach=" + compat.getCascadeWithDetach());
- log.trace("IgnoreDetachedStateFieldForProxySerialization=" +
- compat.getIgnoreDetachedStateFieldForProxySerialization());
- }
-
- try {
- execute(emf2);
- } catch (RuntimeException e) {
- fail("testAnuity2New() should not have caused an execption!" + e);
- } finally {
- emf2.close();
- }
- }
-
private void execute(OpenJPAEntityManagerFactorySPI myEMF) throws
Exception {
Log log = myEMF.getConfiguration().getLog("test");
//EntityManager em = myEMF.createEntityManager();
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/proxy/persistence2.xml
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/proxy/persistence2.xml?rev=928251&r1=928250&r2=928251&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/proxy/persistence2.xml
(original)
+++
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/proxy/persistence2.xml
Sat Mar 27 19:33:52 2010
@@ -26,58 +26,6 @@
<!--
This is the original PU from 1.0, but running as a 2.0 app
-->
- <persistence-unit name="Annuity2Fail">
- <class>org.apache.openjpa.persistence.proxy.entities.Address</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Annuity</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.AnnuityHolder</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.AnnuityPersistebleObject</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Contact</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.EquityAnnuity</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.FixedAnnuity</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Payor</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Payout</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Person</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Rider</class>
- <exclude-unlisted-classes>true</exclude-unlisted-classes>
- <properties>
- <property name="openjpa.DetachState"
- value="fgs(DetachedStateField=true)" />
- <property name="openjpa.jdbc.SynchronizeMappings"
- value="buildSchema(ForeignKeys=true)" />
- </properties>
- </persistence-unit>
-
- <!--
- This is the original PU from 1.0, but with the DetachedStateField
- override removed, which will cause a transient one to be used
- and the tests will pass.
- -->
- <persistence-unit name="Annuity2New">
- <class>org.apache.openjpa.persistence.proxy.entities.Address</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Annuity</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.AnnuityHolder</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.AnnuityPersistebleObject</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Contact</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.EquityAnnuity</class>
-
<class>org.apache.openjpa.persistence.proxy.entities.FixedAnnuity</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Payor</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Payout</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Person</class>
- <class>org.apache.openjpa.persistence.proxy.entities.Rider</class>
- <exclude-unlisted-classes>true</exclude-unlisted-classes>
- <properties>
- <!-- <property name="openjpa.DetachState"
- value="fgs(DetachedStateField=true)" /> -->
- <property name="openjpa.jdbc.SynchronizeMappings"
- value="buildSchema(ForeignKeys=true)" />
- </properties>
- </persistence-unit>
-
- <!--
- This is the original PU from 1.0, but running as a 2.0 app
- with the new Compatibility flag set to use the old 1.0 behavior,
- so the tests will pass.
- -->
<persistence-unit name="Annuity2Compat">
<class>org.apache.openjpa.persistence.proxy.entities.Address</class>
<class>org.apache.openjpa.persistence.proxy.entities.Annuity</class>
@@ -92,12 +40,11 @@
<class>org.apache.openjpa.persistence.proxy.entities.Rider</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
- <property name="openjpa.Compatibility"
- value="IgnoreDetachedStateFieldForProxySerialization=true" />
<property name="openjpa.DetachState"
value="fgs(DetachedStateField=true)" />
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)" />
</properties>
</persistence-unit>
+
</persistence>