From: <hib...@li...> - 2006-03-01 17:45:15
|
Author: epbernard Date: 2006-03-01 12:44:27 -0500 (Wed, 01 Mar 2006) New Revision: 9529 Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java Log: Better test of delete orphan and merge Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java 2006-03-01 04:24:08 UTC (rev 9528) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java 2006-03-01 17:44:27 UTC (rev 9529) @@ -1,9 +1,16 @@ //$Id$ package org.hibernate.ejb.test.cascade; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutput; +import java.io.ObjectOutputStream; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; +import org.hibernate.Hibernate; import org.hibernate.ejb.test.TestCase; /** @@ -30,8 +37,18 @@ tx = em.getTransaction(); tx.begin(); Troop troop = em.find( Troop.class, disney.getId() ); + Hibernate.initialize( troop.getSoldiers() ); + tx.commit(); + em.close(); + Soldier soldier = troop.getSoldiers().iterator().next(); troop.getSoldiers().remove( soldier ); + troop = (Troop) unserialize( serialize( troop ) ); + + em = factory.createEntityManager(); + tx = em.getTransaction(); + tx.begin(); + em.merge(troop); tx.commit(); em.close(); @@ -41,7 +58,6 @@ soldier = em.find( Soldier.class, mickey.getId() ); assertNull( "delete-orphan should work", soldier ); troop = em.find( Troop.class, disney.getId() ); - //Fails because of HHH-1187 em.remove( troop ); tx.commit(); em.close(); @@ -53,4 +69,23 @@ Soldier.class }; } + + private byte[] serialize(Object object) throws IOException { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + ObjectOutput out = new ObjectOutputStream( stream ); + out.writeObject( object ); + out.close(); + byte[] serialized = stream.toByteArray(); + stream.close(); + return serialized; + } + + private Object unserialize(byte[] serialized) throws IOException, ClassNotFoundException { + ByteArrayInputStream byteIn = new ByteArrayInputStream( serialized ); + ObjectInputStream in = new ObjectInputStream(byteIn); + Object result = in.readObject(); + in.close(); + byteIn.close(); + return result; + } } Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java 2006-03-01 04:24:08 UTC (rev 9528) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java 2006-03-01 17:44:27 UTC (rev 9529) @@ -1,6 +1,7 @@ //$Id$ package org.hibernate.ejb.test.cascade; +import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -13,7 +14,7 @@ * @author Emmanuel Bernard */ @Entity -public class Soldier { +public class Soldier implements Serializable { private Integer id; private String name; private Troop troop; Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java 2006-03-01 04:24:08 UTC (rev 9528) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java 2006-03-01 17:44:27 UTC (rev 9529) @@ -3,6 +3,7 @@ import java.util.HashSet; import java.util.Set; +import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -16,7 +17,7 @@ * @author Emmanuel Bernard */ @Entity -public class Troop { +public class Troop implements Serializable { private Integer id; private String name; private Set<Soldier> soldiers; |