|
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;
}
}
|