From: <hib...@li...> - 2006-05-30 15:41:04
|
Author: epbernard Date: 2006-05-30 11:40:54 -0400 (Tue, 30 May 2006) New Revision: 9964 Modified: trunk/Hibernate3/src/org/hibernate/action/EntityUpdateAction.java trunk/Hibernate3/src/org/hibernate/cache/EhCacheProvider.java trunk/Hibernate3/src/org/hibernate/event/PostUpdateEvent.java trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/EJB3PostUpdateEventListener.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/TestCase.java Log: EJB-188 add event source to the post update event and check the status minor fixes to ehcache Modified: trunk/Hibernate3/src/org/hibernate/action/EntityUpdateAction.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/action/EntityUpdateAction.java 2006-05-30 14:15:54 UTC (rev 9963) +++ trunk/Hibernate3/src/org/hibernate/action/EntityUpdateAction.java 2006-05-30 15:40:54 UTC (rev 9964) @@ -18,6 +18,7 @@ import org.hibernate.event.PostUpdateEventListener; import org.hibernate.event.PreUpdateEvent; import org.hibernate.event.PreUpdateEventListener; +import org.hibernate.event.EventSource; import org.hibernate.persister.entity.EntityPersister; import org.hibernate.type.TypeFactory; @@ -175,7 +176,8 @@ getId(), state, previousState, - getPersister() + getPersister(), + (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostUpdate(postEvent); @@ -192,7 +194,8 @@ getId(), state, previousState, - getPersister() + getPersister(), + (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostUpdate(postEvent); Modified: trunk/Hibernate3/src/org/hibernate/cache/EhCacheProvider.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/cache/EhCacheProvider.java 2006-05-30 14:15:54 UTC (rev 9963) +++ trunk/Hibernate3/src/org/hibernate/cache/EhCacheProvider.java 2006-05-30 15:40:54 UTC (rev 9964) @@ -128,11 +128,12 @@ } } catch (net.sf.ehcache.CacheException e) { //yukky! Don't you have subclasses for that! + //TODO race conditions can happen here if (e.getMessage().startsWith("Cannot parseConfiguration CacheManager. Attempt to create a new instance of " + "CacheManager using the diskStorePath")) { throw new CacheException("Attempt to restart an already started EhCacheProvider. Use sessionFactory.close() " + - " between repeated calls to buildSessionFactory. Consider using net.sf.ehcache.hibernate.SingletonEhCacheProvider. Error from " + - " ehcache was: " + e.getMessage()); + " between repeated calls to buildSessionFactory. Consider using net.sf.ehcache.hibernate.SingletonEhCacheProvider." + , e ); } else { throw e; } Modified: trunk/Hibernate3/src/org/hibernate/event/PostUpdateEvent.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/event/PostUpdateEvent.java 2006-05-30 14:15:54 UTC (rev 9963) +++ trunk/Hibernate3/src/org/hibernate/event/PostUpdateEvent.java 2006-05-30 15:40:54 UTC (rev 9964) @@ -10,7 +10,7 @@ * * @author Gavin King */ -public class PostUpdateEvent { +public class PostUpdateEvent extends AbstractEvent { private Object entity; private EntityPersister persister; private Object[] state; @@ -22,8 +22,10 @@ Serializable id, Object[] state, Object[] oldState, - EntityPersister persister + EntityPersister persister, + EventSource source ) { + super(source); this.entity = entity; this.id = id; this.state = state; Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/EJB3PostUpdateEventListener.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/EJB3PostUpdateEventListener.java 2006-05-30 14:15:54 UTC (rev 9963) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/EJB3PostUpdateEventListener.java 2006-05-30 15:40:54 UTC (rev 9964) @@ -8,6 +8,8 @@ import org.hibernate.event.PostUpdateEvent; import org.hibernate.event.PostUpdateEventListener; +import org.hibernate.engine.EntityEntry; +import org.hibernate.engine.Status; /** * @author <a href="mailto:kab...@jb...">Kabir Khan</a> @@ -32,6 +34,10 @@ public void onPostUpdate(PostUpdateEvent event) { Object entity = event.getEntity(); - callbackHandler.postUpdate( entity ); + EntityEntry entry = (EntityEntry) event.getSession().getPersistenceContext().getEntityEntries().get( entity ); + //mimic the preUpdate filter + if ( Status.DELETED != entry.getStatus() ) { + callbackHandler.postUpdate( entity ); + } } } Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/TestCase.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/TestCase.java 2006-05-30 14:15:54 UTC (rev 9963) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/TestCase.java 2006-05-30 15:40:54 UTC (rev 9964) @@ -38,6 +38,10 @@ public abstract Class[] getAnnotatedClasses(); + public String[] getEjb3DD() { + return new String[] {}; + } + public Map<Class, String> getCachedClasses() { return new HashMap<Class, String>(); } @@ -88,6 +92,13 @@ entry.getValue() ); } + if ( getEjb3DD().length > 0 ) { + ArrayList<String> dds = new ArrayList<String>(); + for ( String dd : getEjb3DD() ) { + dds.add( dd ); + } + config.put( HibernatePersistence.XML_FILE_NAMES, dds ); + } return config; } } |