branch feature/3539 created (now 6c95ef6)
This is an automated email from the git hooks/post-receive script. New change to branch feature/3539 in repository topia. See http://git.nuiton.org/topia.git at 6c95ef6 Introduce ListenableTopiaPersistenceContext ListenableTopiaApplicationContext and start implementation, TopiaEntitiesEvent are thrown but with missing topia entities This branch includes the following new commits: new 6c95ef6 Introduce ListenableTopiaPersistenceContext ListenableTopiaApplicationContext and start implementation, TopiaEntitiesEvent are thrown but with missing topia entities The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 6c95ef672cb1e597795d90e5d9392a245a2fab16 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Feb 2 11:18:05 2015 +0100 Introduce ListenableTopiaPersistenceContext ListenableTopiaApplicationContext and start implementation, TopiaEntitiesEvent are thrown but with missing topia entities -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/3539 in repository topia. See http://git.nuiton.org/topia.git commit 6c95ef672cb1e597795d90e5d9392a245a2fab16 Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Feb 2 11:18:05 2015 +0100 Introduce ListenableTopiaPersistenceContext ListenableTopiaApplicationContext and start implementation, TopiaEntitiesEvent are thrown but with missing topia entities --- .../topia/persistence/TopiaApplicationContext.java | 7 ++-- .../topia/persistence/TopiaPersistenceContext.java | 4 +- .../internal/AbstractTopiaApplicationContext.java | 46 +++++++++++++++++++++- .../internal/AbstractTopiaPersistenceContext.java | 15 ++++++- 4 files changed, 65 insertions(+), 7 deletions(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java index 08f8aaa..f27407b 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java @@ -24,6 +24,7 @@ package org.nuiton.topia.persistence; * #L% */ +import org.nuiton.topia.persistence.listeners.ListenableTopiaApplicationContext; import org.nuiton.topia.persistence.support.TopiaListenableSupport; import org.nuiton.topia.persistence.support.TopiaServiceSupport; @@ -63,8 +64,8 @@ import java.util.List; * @author Tony Chemit : chemit@codelutin.com * @since 3.0 */ -public interface TopiaApplicationContext<K extends TopiaPersistenceContext> - extends TopiaListenableSupport, TopiaServiceSupport, Closeable { +public interface TopiaApplicationContext<P extends TopiaPersistenceContext> + extends ListenableTopiaApplicationContext<P>, TopiaListenableSupport, TopiaServiceSupport, Closeable { /** * Creates a new instance of XxxTopiaPersistenceContext (where <code>Xxx</code> is the project name). This is the @@ -74,7 +75,7 @@ public interface TopiaApplicationContext<K extends TopiaPersistenceContext> * {@link org.nuiton.topia.persistence.TopiaPersistenceContext} * @see org.nuiton.topia.persistence.TopiaPersistenceContext */ - K newPersistenceContext(); + P newPersistenceContext(); String getModelVersion(); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceContext.java index 220d37f..ffa051e 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceContext.java @@ -25,6 +25,7 @@ package org.nuiton.topia.persistence; */ import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; +import org.nuiton.topia.persistence.listeners.ListenableTopiaPersistenceContext; import org.nuiton.topia.persistence.support.TopiaReplicationSupport; import java.io.Closeable; @@ -53,7 +54,7 @@ import java.io.Closeable; * @since 3.0 */ public interface TopiaPersistenceContext extends TopiaReplicationSupport, TopiaReplicationDestination, - TopiaDaoSupplier, TopiaTransaction, Closeable { + TopiaDaoSupplier, TopiaTransaction, Closeable, ListenableTopiaPersistenceContext { /** * Retrieve {@link org.nuiton.topia.persistence.TopiaEntity} using its unique {@code topiaId}. @@ -115,6 +116,7 @@ public interface TopiaPersistenceContext extends TopiaReplicationSupport, TopiaR * @see org.nuiton.topia.persistence.internal.support.TopiaFiresSupport * @since 3.0 */ + @Deprecated TopiaFiresSupport getTopiaFiresSupport(); } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java index 4ec861e..1968ca8 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java @@ -48,8 +48,10 @@ import org.nuiton.topia.persistence.event.TopiaEntityVetoable; import org.nuiton.topia.persistence.event.TopiaSchemaListener; import org.nuiton.topia.persistence.event.TopiaTransactionListener; import org.nuiton.topia.persistence.event.TopiaTransactionVetoable; +import org.nuiton.topia.persistence.internal.listeners.TopiaListenersSupport; import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; import org.nuiton.topia.persistence.internal.support.TopiaServiceSupportImpl; +import org.nuiton.topia.persistence.listeners.TopiaApplicationContextListener; import org.nuiton.topia.persistence.support.TopiaServiceSupport; import org.nuiton.topia.persistence.util.TopiaUtil; @@ -71,7 +73,7 @@ import java.util.WeakHashMap; * @author Arnaud Thimel (Code Lutin) * @since 3.0 */ -public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistenceContext> implements TopiaApplicationContext<K> { +public abstract class AbstractTopiaApplicationContext<P extends TopiaPersistenceContext> implements TopiaApplicationContext<P> { private static final Log log = LogFactory.getLog(AbstractTopiaApplicationContext.class); @@ -79,8 +81,11 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence protected TopiaConfiguration configuration; + @Deprecated protected TopiaFiresSupport topiaFiresSupport; + protected TopiaListenersSupport<P> topiaListenersSupport; + protected TopiaServiceSupport topiaServiceSupport; protected HibernateProvider hibernateProvider; @@ -122,6 +127,8 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence new TopiaConfigurationBuilder().check(configuration); topiaFiresSupport = new TopiaFiresSupport(); + topiaListenersSupport = new TopiaListenersSupport<P>(); + sessionRegistry = new TopiaHibernateSessionRegistry(); // First initialize all the services @@ -227,6 +234,7 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence return hibernateProvider; } + @Deprecated protected TopiaFiresSupport getTopiaFiresSupport() { return topiaFiresSupport; } @@ -245,96 +253,124 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence } @Override + @Deprecated public void addTopiaEntityListener(TopiaEntityListener listener) { topiaFiresSupport.addTopiaEntityListener(listener); } @Override + @Deprecated public void addTopiaEntityListener(Class<? extends TopiaEntity> entityClass, TopiaEntityListener listener) { topiaFiresSupport.addTopiaEntityListener(entityClass, listener); } @Override + @Deprecated public void removeTopiaEntityListener(TopiaEntityListener listener) { topiaFiresSupport.removeTopiaEntityListener(listener); } @Override + @Deprecated public void removeTopiaEntityListener(Class<? extends TopiaEntity> entityClass, TopiaEntityListener listener) { topiaFiresSupport.removeTopiaEntityListener(entityClass, listener); } @Override + @Deprecated public void addTopiaEntityVetoable(TopiaEntityVetoable vetoable) { topiaFiresSupport.addTopiaEntityVetoable(vetoable); } @Override + @Deprecated public void addTopiaEntityVetoable(Class<? extends TopiaEntity> entityClass, TopiaEntityVetoable vetoable) { topiaFiresSupport.addTopiaEntityVetoable(entityClass, vetoable); } @Override + @Deprecated public void removeTopiaEntityVetoable(TopiaEntityVetoable vetoable) { topiaFiresSupport.removeTopiaEntityVetoable(vetoable); } @Override + @Deprecated public void removeTopiaEntityVetoable(Class<? extends TopiaEntity> entityClass, TopiaEntityVetoable vetoable) { topiaFiresSupport.removeTopiaEntityVetoable(entityClass, vetoable); } @Override + @Deprecated public void addTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) { topiaFiresSupport.addTopiaEntitiesVetoable(vetoable); } @Override + @Deprecated public void removeTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) { topiaFiresSupport.removeTopiaEntitiesVetoable(vetoable); } @Override + @Deprecated public void addTopiaTransactionListener(TopiaTransactionListener listener) { topiaFiresSupport.addTopiaTransactionListener(listener); } @Override + @Deprecated public void removeTopiaTransactionListener(TopiaTransactionListener listener) { topiaFiresSupport.removeTopiaTransactionListener(listener); } @Override + @Deprecated public void addTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) { topiaFiresSupport.addTopiaTransactionVetoable(vetoable); } @Override + @Deprecated public void removeTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) { topiaFiresSupport.removeTopiaTransactionVetoable(vetoable); } @Override + @Deprecated public void addPropertyChangeListener(PropertyChangeListener listener) { topiaFiresSupport.addPropertyChangeListener(listener); } @Override + @Deprecated public void removePropertyChangeListener(PropertyChangeListener listener) { topiaFiresSupport.removePropertyChangeListener(listener); } @Override + @Deprecated public void addTopiaSchemaListener(TopiaSchemaListener listener) { topiaFiresSupport.addTopiaSchemaListener(listener); } @Override + @Deprecated public void removeTopiaSchemaListener(TopiaSchemaListener listener) { topiaFiresSupport.removeTopiaSchemaListener(listener); } @Override + public void addTopiaApplicationContextListener(TopiaApplicationContextListener<P> listener) { + topiaListenersSupport.addTopiaApplicationContextListener(listener); + } + + @Override + public void removeTopiaApplicationContextListener(TopiaApplicationContextListener<P> listener) { + topiaListenersSupport.removeTopiaApplicationContextListener(listener); + } + + @Override public Map<String, TopiaService> getServices() { return topiaServiceSupport.getServices(); } @@ -379,9 +415,11 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence showSchema = true; } topiaFiresSupport.firePreCreateSchema(this); + topiaListenersSupport.firePreCreateSchema(this); Configuration hibernateConfiguration = getHibernateProvider().getHibernateConfiguration(); new SchemaExport(hibernateConfiguration).execute(showSchema, true, false, true); topiaFiresSupport.firePostCreateSchema(this); + topiaListenersSupport.firePostCreateSchema(this); } catch (HibernateException eee) { throw new TopiaException( String.format("Could not create schema for reason: %s", @@ -412,10 +450,12 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence } topiaFiresSupport.firePreUpdateSchema(this); + topiaListenersSupport.firePreUpdateSchema(this); // AThimel 14/06/14 getHibernateConfiguration() may create the schema, prefer using newHibernateConfiguration() which doesn't Configuration hibernateConfiguration = getHibernateProvider().getHibernateConfiguration(); new SchemaUpdate(hibernateConfiguration).execute(showSchema, true); topiaFiresSupport.firePostUpdateSchema(this); + topiaListenersSupport.firePostUpdateSchema(this); } catch (HibernateException eee) { throw new TopiaException( String.format("Could not update schema for reason: %s", @@ -432,10 +472,12 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence } topiaFiresSupport.firePreDropSchema(this); + topiaListenersSupport.firePreDropSchema(this); // AThimel 14/06/14 getHibernateConfiguration() may create the schema, prefer using newHibernateConfiguration() which doesn't Configuration hibernateConfiguration = getHibernateProvider().getHibernateConfiguration(); new SchemaExport(hibernateConfiguration).execute(showSchema, true, true, false); topiaFiresSupport.firePostDropSchema(this); + topiaListenersSupport.firePostDropSchema(this); } catch (HibernateException eee) { throw new TopiaException( String.format("Could not drop schema for reason: %s", @@ -453,6 +495,8 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence log.debug("will close " + this); } + topiaListenersSupport.firePreClose(this); + // Iterate over the children PersistenceContexts and close them for (TopiaPersistenceContext persistenceContext : persistenceContexts) { if (persistenceContext == null) { diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java index 9124dd8..904a2d9 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java @@ -38,6 +38,7 @@ import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaIdFactory; +import org.nuiton.topia.persistence.internal.listeners.TopiaListenersSupport; import org.nuiton.topia.persistence.TopiaPersistenceContext; import org.nuiton.topia.persistence.TopiaReplicationDestination; import org.nuiton.topia.persistence.internal.support.HibernateTopiaJpaSupport; @@ -83,8 +84,11 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc /** * Object that handles each event propagation. Listeners are registered inside this instance. */ + @Deprecated protected TopiaFiresSupport firesSupport; + protected TopiaListenersSupport<AbstractTopiaPersistenceContext> topiaListenersSupport; + /** * This subclass of TopiaHibernateSupport is made to be used only internally within this persistence context. This * instance is created by the persistence context itself. @@ -123,7 +127,7 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc this.hibernateSupport = new InternalTopiaHibernateSupport(parameter.getHibernateProvider()); // Now starts the transaction, as this persistenceContext IS the TopiaTransaction - startTransaction(); + beginTransaction(); // Create the different supports that may be needed by the DAOs this.jpaSupport = new HibernateTopiaJpaSupport(hibernateSupport, firesSupport); @@ -182,7 +186,7 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc } } - protected void startTransaction() throws TopiaException { + protected void beginTransaction() { SessionFactory factory = hibernateSupport.getHibernateFactory(); Session result = factory.openSession(); @@ -221,6 +225,7 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc // fire event getTopiaFiresSupport().fireOnBeginTransaction(this); + topiaListenersSupport.fireBeginTransaction(this); } protected void checkNotClosed() { @@ -337,6 +342,8 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc try { + topiaListenersSupport.firePreCommit(this); + Session hibernateSession = hibernateSupport.getHibernateSession(); Transaction transaction = hibernateSession.getTransaction(); @@ -344,6 +351,7 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc transaction.commit(); getTopiaFiresSupport().fireOnPostCommit(this); + topiaListenersSupport.firePostCommit(this); hibernateSession.beginTransaction(); @@ -362,6 +370,8 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc protected void rollback0(boolean beginAfterRollback) { try { + topiaListenersSupport.firePreRollback(this); + Session hibernateSession = hibernateSupport.getHibernateSession(); Transaction transaction = hibernateSession.getTransaction(); @@ -384,6 +394,7 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc } getTopiaFiresSupport().fireOnPostRollback(this); + topiaListenersSupport.firePostRollback(this); } catch (HibernateException eee) { String message = String.format("An error occurred during rollback operation: %1$s", eee.getMessage()); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm