r2476 - in trunk: topia-persistence/src/main/java/org/nuiton/topia/framework topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence
Author: athimel Date: 2012-05-14 12:20:01 +0200 (Mon, 14 May 2012) New Revision: 2476 Url: http://nuiton.org/repositories/revision/topia/2476 Log: Start of implementation of events on Hibernate Added: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateJPAEntityListener.java Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2012-05-14 10:10:27 UTC (rev 2475) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2012-05-14 10:20:01 UTC (rev 2476) @@ -570,15 +570,8 @@ TopiaContextImplementor parent, EntityManager hibernate) { TopiaContextImplementor result = null; - // FD-20100421 : Ano #546 : no need to copy childContexts, the - // {@link #getChildContext()} provides a thread-safe copy to iterate - // on it. -// Set<TopiaContextImplementor> contextChilds = new HashSet<TopiaContextImplementor>(parent.getChildContext()); for (TopiaContextImplementor context : parent.getChildContexts()) { -// by sletellier 24/09/09 : Fix concurent acces error -// ArrayList<TopiaContextImplementor> children = new ArrayList(parent.getChildContext()); -// for (TopiaContextImplementor context : children) { try { if (context.getEntityManager() == hibernate) { result = context; Added: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateJPAEntityListener.java =================================================================== --- trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateJPAEntityListener.java (rev 0) +++ trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateJPAEntityListener.java 2012-05-14 10:20:01 UTC (rev 2476) @@ -0,0 +1,73 @@ +package org.nuiton.topia.framework; + +import org.hibernate.event.spi.PostDeleteEvent; +import org.hibernate.event.spi.PostDeleteEventListener; +import org.hibernate.event.spi.PostInsertEvent; +import org.hibernate.event.spi.PostInsertEventListener; +import org.hibernate.event.spi.PostLoadEvent; +import org.hibernate.event.spi.PostLoadEventListener; +import org.hibernate.event.spi.PostUpdateEvent; +import org.hibernate.event.spi.PostUpdateEventListener; +import org.hibernate.event.spi.PreDeleteEvent; +import org.hibernate.event.spi.PreDeleteEventListener; +import org.hibernate.event.spi.PreInsertEvent; +import org.hibernate.event.spi.PreInsertEventListener; +import org.hibernate.event.spi.PreLoadEvent; +import org.hibernate.event.spi.PreLoadEventListener; +import org.hibernate.event.spi.PreUpdateEvent; +import org.hibernate.event.spi.PreUpdateEventListener; + +/** + * @author Arnaud Thimel <thimel@codelutin.com> + */ +public class TopiaHibernateJPAEntityListener + implements PreLoadEventListener, PostLoadEventListener, + PreInsertEventListener, PostInsertEventListener, + PreUpdateEventListener, PostUpdateEventListener, + PreDeleteEventListener, PostDeleteEventListener { + + @Override + public void onPreLoad(PreLoadEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + } + + @Override + public void onPostLoad(PostLoadEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + } + + @Override + public boolean onPreInsert(PreInsertEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + return false; + } + + @Override + public void onPostInsert(PostInsertEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + } + + + @Override + public boolean onPreUpdate(PreUpdateEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + return false; + } + + @Override + public void onPostUpdate(PostUpdateEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + } + + @Override + public boolean onPreDelete(PreDeleteEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + return false; + } + + @Override + public void onPostDelete(PostDeleteEvent event) { + // TODO AThimel 14/05/2012 Find a way to identify the TopiaContext + } + +} Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java =================================================================== --- trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java 2012-05-14 10:10:27 UTC (rev 2475) +++ trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java 2012-05-14 10:20:01 UTC (rev 2476) @@ -8,6 +8,7 @@ import org.hibernate.ejb.Ejb3Configuration; import org.hibernate.ejb.packaging.NamedInputStream; import org.hibernate.ejb.packaging.PersistenceMetadata; +import org.nuiton.topia.framework.TopiaHibernateJPAEntityListener; import org.nuiton.topia.framework.TopiaPersistenceProvider; import org.nuiton.topia.framework.TopiaSpecificUtil; @@ -74,6 +75,15 @@ } } + hibernateProperties.put("hibernate.ejb.event.pre-insert", TopiaHibernateJPAEntityListener.class.getName()); + hibernateProperties.put("hibernate.ejb.event.post-insert", TopiaHibernateJPAEntityListener.class.getName()); + hibernateProperties.put("hibernate.ejb.event.pre-load", TopiaHibernateJPAEntityListener.class.getName()); + hibernateProperties.put("hibernate.ejb.event.post-load", TopiaHibernateJPAEntityListener.class.getName()); + hibernateProperties.put("hibernate.ejb.event.pre-update", TopiaHibernateJPAEntityListener.class.getName()); + hibernateProperties.put("hibernate.ejb.event.post-update", TopiaHibernateJPAEntityListener.class.getName()); + hibernateProperties.put("hibernate.ejb.event.pre-delete", TopiaHibernateJPAEntityListener.class.getName()); + hibernateProperties.put("hibernate.ejb.event.post-delete", TopiaHibernateJPAEntityListener.class.getName()); + // For each entity, get its FQN List<String> entitiesNames = Lists.newArrayList( Iterables.transform(entities, GET_FQN));
participants (1)
-
athimelï¼ users.nuiton.org