From: <hib...@li...> - 2006-06-27 21:21:28
|
Author: ste...@jb... Date: 2006-06-27 17:20:52 -0400 (Tue, 27 Jun 2006) New Revision: 10056 Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfo.java trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfoAssigned.java trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentInfo.java Modified: trunk/Hibernate3/test/org/hibernate/test/jpa/AbstractJPATest.java trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java Log: full tests for HHH-1822 (missed some) Modified: trunk/Hibernate3/test/org/hibernate/test/jpa/AbstractJPATest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/jpa/AbstractJPATest.java 2006-06-27 21:17:04 UTC (rev 10055) +++ trunk/Hibernate3/test/org/hibernate/test/jpa/AbstractJPATest.java 2006-06-27 21:20:52 UTC (rev 10056) @@ -4,6 +4,16 @@ import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.proxy.EntityNotFoundDelegate; +import org.hibernate.event.def.DefaultPersistEventListener; +import org.hibernate.event.def.DefaultAutoFlushEventListener; +import org.hibernate.event.def.DefaultFlushEventListener; +import org.hibernate.event.def.DefaultFlushEntityEventListener; +import org.hibernate.event.AutoFlushEventListener; +import org.hibernate.event.FlushEventListener; +import org.hibernate.event.PersistEventListener; +import org.hibernate.event.FlushEntityEventListener; +import org.hibernate.engine.CascadingAction; +import org.hibernate.util.IdentityMap; import java.io.Serializable; @@ -26,6 +36,11 @@ cfg.setProperty( Environment.JPAQL_STRICT_COMPLIANCE, "true" ); cfg.setProperty( Environment.USE_SECOND_LEVEL_CACHE, "false" ); cfg.setEntityNotFoundDelegate( new JPAEntityNotFoundDelegate() ); + cfg.getEventListeners().setPersistEventListeners( buildPersistEventListeners() ); + cfg.getEventListeners().setPersistOnFlushEventListeners( buildPersisOnFlushEventListeners() ); + cfg.getEventListeners().setAutoFlushEventListeners( buildAutoFlushEventListeners() ); + cfg.getEventListeners().setFlushEventListeners( buildFlushEventListeners() ); + cfg.getEventListeners().setFlushEntityEventListeners( buildFlushEntityEventListeners() ); } public String getCacheConcurrencyStrategy() { @@ -33,6 +48,9 @@ return null; } + + // mimic specific exception aspects of the JPA environment ~~~~~~~~~~~~~~~~ + private static class JPAEntityNotFoundDelegate implements EntityNotFoundDelegate { public void handleEntityNotFound(String entityName, Serializable id) { throw new EntityNotFoundException( entityName, id ); @@ -64,4 +82,67 @@ return id; } } + + + // mimic specific event aspects of the JPA environment ~~~~~~~~~~~~~~~~~~~~ + + protected PersistEventListener[] buildPersistEventListeners() { + return new PersistEventListener[] { new JPAPersistEventListener() }; + } + + protected PersistEventListener[] buildPersisOnFlushEventListeners() { + return new PersistEventListener[] { new JPAPersistOnFlushEventListener() }; + } + + protected AutoFlushEventListener[] buildAutoFlushEventListeners() { + return new AutoFlushEventListener[] { JPAAutoFlushEventListener.INSTANCE }; + } + + protected FlushEventListener[] buildFlushEventListeners() { + return new FlushEventListener[] { JPAFlushEventListener.INSTANCE }; + } + + protected FlushEntityEventListener[] buildFlushEntityEventListeners() { + return new FlushEntityEventListener[] { new JPAFlushEntityEventListener() }; + } + + public static class JPAPersistEventListener extends DefaultPersistEventListener { + // overridden in JPA impl for entity callbacks... + } + + public static class JPAPersistOnFlushEventListener extends JPAPersistEventListener { + protected CascadingAction getCascadeAction() { + return CascadingAction.PERSIST_ON_FLUSH; + } + } + + public static class JPAAutoFlushEventListener extends DefaultAutoFlushEventListener { + // not sure why EM code has this ... + public static final AutoFlushEventListener INSTANCE = new JPAAutoFlushEventListener(); + + protected CascadingAction getCascadingAction() { + return CascadingAction.PERSIST_ON_FLUSH; + } + + protected Object getAnything() { + return IdentityMap.instantiate( 10 ); + } + } + + public static class JPAFlushEventListener extends DefaultFlushEventListener { + // not sure why EM code has this ... + public static final FlushEventListener INSTANCE = new JPAFlushEventListener(); + + protected CascadingAction getCascadingAction() { + return CascadingAction.PERSIST_ON_FLUSH; + } + + protected Object getAnything() { + return IdentityMap.instantiate( 10 ); + } + } + + public static class JPAFlushEntityEventListener extends DefaultFlushEntityEventListener { + // in JPA, used mainly for preUpdate callbacks... + } } Modified: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java 2006-06-27 21:17:04 UTC (rev 10055) +++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java 2006-06-27 21:20:52 UTC (rev 10056) @@ -317,24 +317,4 @@ } } } - - protected FlushEntityEventListener[] buildFlushEntityEventListeners() { - return new FlushEntityEventListener[] { new JPACheckingFlushEntityEventListener() }; - } - - public static class JPACheckingFlushEntityEventListener extends JPAFlushEntityEventListener { - public void onFlushEntity(FlushEntityEvent event) throws HibernateException { - super.onFlushEntity( event ); //To change body of overridden methods use File | Settings | File Templates. - } - - protected void validate(Object entity, EntityPersister persister, Status status, EntityMode entityMode) { - super.validate( entity, persister, status, entityMode ); - } - } - - public static class JPAPersistTransientAssociationChecker { - // implements the checks required by the JPA spec regarding entities with - // non-cacaded associations to transient entities. - - } } Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfo.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfo.java 2006-06-27 21:17:04 UTC (rev 10055) +++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfo.java 2006-06-27 21:20:52 UTC (rev 10056) @@ -0,0 +1,39 @@ +package org.hibernate.test.jpa.cascade; + +/** + * todo: describe ChildInfo + * + * @author Steve Ebersole + */ +public class ChildInfo { + private Long id; + private Child owner; + private String info; + + public ChildInfo() { + } + + public ChildInfo(String info) { + this.info = info; + } + + public Long getId() { + return id; + } + + public Child getOwner() { + return owner; + } + + public void setOwner(Child owner) { + this.owner = owner; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } +} Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfoAssigned.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfoAssigned.java 2006-06-27 21:17:04 UTC (rev 10055) +++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ChildInfoAssigned.java 2006-06-27 21:20:52 UTC (rev 10056) @@ -0,0 +1,40 @@ +package org.hibernate.test.jpa.cascade; + +/** + * todo: describe ChildInfo + * + * @author Steve Ebersole + */ +public class ChildInfoAssigned { + private Long id; + private ChildAssigned owner; + private String info; + + public ChildInfoAssigned() { + } + + public ChildInfoAssigned(Long id, String info) { + this.id = id; + this.info = info; + } + + public Long getId() { + return id; + } + + public ChildAssigned getOwner() { + return owner; + } + + public void setOwner(ChildAssigned owner) { + this.owner = owner; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } +} Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentInfo.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentInfo.java 2006-06-27 21:17:04 UTC (rev 10055) +++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentInfo.java 2006-06-27 21:20:52 UTC (rev 10056) @@ -0,0 +1,39 @@ +package org.hibernate.test.jpa.cascade; + +/** + * todo: describe ChildInfo + * + * @author Steve Ebersole + */ +public class ParentInfo { + private Long id; + private Parent owner; + private String info; + + public ParentInfo() { + } + + public ParentInfo(String info) { + this.info = info; + } + + public Long getId() { + return id; + } + + public Parent getOwner() { + return owner; + } + + public void setOwner(Parent owner) { + this.owner = owner; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } +} |