This is an automated email from the git hooks/post-receive script. New commit to branch feature/2945 in repository topia. See http://git.nuiton.org/topia.git commit 5e9b351d2525117d542775f3b5162918224ef031 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Oct 22 15:25:44 2014 +0200 Introduce parameter object for XxxTopiaPersistenceContext constructor (refs #2945) --- .../AbstractTopiaItLegacyPersistenceContext.java | 10 ++--- .../internal/AbstractTopiaPersistenceContext.java | 17 +++---- ...opiaPersistenceContextConstructorParameter.java | 52 ++++++++++++++++++++++ .../templates/ApplicationContextTransformer.java | 15 +++++-- .../templates/PersistenceContextTransformer.java | 14 ++---- 5 files changed, 77 insertions(+), 31 deletions(-) diff --git a/topia-it/src/main/java/org/nuiton/topia/it/legacy/AbstractTopiaItLegacyPersistenceContext.java b/topia-it/src/main/java/org/nuiton/topia/it/legacy/AbstractTopiaItLegacyPersistenceContext.java index 818f683..45eaec8 100644 --- a/topia-it/src/main/java/org/nuiton/topia/it/legacy/AbstractTopiaItLegacyPersistenceContext.java +++ b/topia-it/src/main/java/org/nuiton/topia/it/legacy/AbstractTopiaItLegacyPersistenceContext.java @@ -25,11 +25,7 @@ package org.nuiton.topia.it.legacy; */ import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContext; -import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; -import org.nuiton.topia.persistence.support.TopiaListenableSupport; -import org.nuiton.topia.persistence.internal.HibernateProvider; -import org.nuiton.topia.persistence.internal.TopiaHibernateSessionRegistry; -import org.nuiton.topia.persistence.TopiaIdFactory; +import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContextConstructorParameter; /** * Created on 12/19/13. @@ -39,7 +35,7 @@ import org.nuiton.topia.persistence.TopiaIdFactory; */ public abstract class AbstractTopiaItLegacyPersistenceContext extends AbstractTopiaPersistenceContext { - protected AbstractTopiaItLegacyPersistenceContext(HibernateProvider hibernateProvider, TopiaFiresSupport applicationFiresSupport, TopiaIdFactory topiaIdFactory, TopiaHibernateSessionRegistry sessionRegistry) { - super(hibernateProvider, applicationFiresSupport, topiaIdFactory, sessionRegistry); + protected AbstractTopiaItLegacyPersistenceContext(AbstractTopiaPersistenceContextConstructorParameter parameter) { + super(parameter); } } 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 8bbd93b..9124dd8 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 @@ -111,21 +111,16 @@ public abstract class AbstractTopiaPersistenceContext implements TopiaPersistenc /** * Creating a new TopiaPersistenceContext is equivalent to creating a new transaction * - * @param hibernateProvider holds the Hibernate configuration and session factory - * @param applicationFiresSupport the TopiaFiresSupport from the application context - * @param topiaIdFactory the TopiaIdFactory instance created according to the application's configuration + * @param parameter everything needed (specific parameter-object) */ - public AbstractTopiaPersistenceContext(HibernateProvider hibernateProvider, - TopiaFiresSupport applicationFiresSupport, - TopiaIdFactory topiaIdFactory, - TopiaHibernateSessionRegistry sessionRegistry) { + public AbstractTopiaPersistenceContext(AbstractTopiaPersistenceContextConstructorParameter parameter) { - this.topiaIdFactory = topiaIdFactory; - this.sessionRegistry = sessionRegistry; - this.firesSupport = new TopiaFiresSupport(applicationFiresSupport); + this.topiaIdFactory = parameter.getTopiaIdFactory(); + this.sessionRegistry = parameter.getSessionRegistry(); + this.firesSupport = new TopiaFiresSupport(parameter.getApplicationFiresSupport()); // Hibernate support can be created using the given hibernateProvider - this.hibernateSupport = new InternalTopiaHibernateSupport(hibernateProvider); + this.hibernateSupport = new InternalTopiaHibernateSupport(parameter.getHibernateProvider()); // Now starts the transaction, as this persistenceContext IS the TopiaTransaction startTransaction(); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContextConstructorParameter.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContextConstructorParameter.java new file mode 100644 index 0000000..e9906ef --- /dev/null +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContextConstructorParameter.java @@ -0,0 +1,52 @@ +package org.nuiton.topia.persistence.internal; + +import org.nuiton.topia.persistence.TopiaIdFactory; +import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; + +/** + * Parameter-object design pattern for the {@link org.nuiton.topia.persistence.internal.AbstractTopiaApplicationContext} + * constructor. + * + * This parameter-object is useful because we can add/change/remove parameters without changing + * the constructor signature which is necessary to ensure backward compatibility with XxxPersistenceContext + * overridden by the user. + */ +public class AbstractTopiaPersistenceContextConstructorParameter { + + protected final HibernateProvider hibernateProvider; + + protected final TopiaFiresSupport applicationFiresSupport; + + protected final TopiaIdFactory topiaIdFactory; + + protected final TopiaHibernateSessionRegistry sessionRegistry; + + /** + * @param hibernateProvider holds the Hibernate configuration and session factory + * @param applicationFiresSupport the TopiaFiresSupport from the application context + * @param topiaIdFactory the TopiaIdFactory instance created according to the application's configuration + */ + public AbstractTopiaPersistenceContextConstructorParameter(HibernateProvider hibernateProvider, TopiaFiresSupport applicationFiresSupport, TopiaIdFactory topiaIdFactory, TopiaHibernateSessionRegistry sessionRegistry) { + this.hibernateProvider = hibernateProvider; + this.applicationFiresSupport = applicationFiresSupport; + this.topiaIdFactory = topiaIdFactory; + this.sessionRegistry = sessionRegistry; + } + + public HibernateProvider getHibernateProvider() { + return hibernateProvider; + } + + public TopiaFiresSupport getApplicationFiresSupport() { + return applicationFiresSupport; + } + + public TopiaIdFactory getTopiaIdFactory() { + return topiaIdFactory; + } + + public TopiaHibernateSessionRegistry getSessionRegistry() { + return sessionRegistry; + } + +} diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java index d986c0c..d561600 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java @@ -33,9 +33,10 @@ import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnumProvider; import org.nuiton.topia.persistence.internal.AbstractTopiaApplicationContext; -import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContextConstructorParameter; import org.nuiton.topia.persistence.util.EntityOperator; import java.util.Properties; @@ -139,13 +140,21 @@ public class ApplicationContextTransformer extends ObjectModelTransformerToJava ObjectModelOperation op; - // getModelVersion method + // newPersistenceContext method + addImport(output, AbstractTopiaPersistenceContextConstructorParameter.class); op = addOperation(output, "newPersistenceContext", persistenceContextConcreteName, ObjectModelJavaModifier.PUBLIC); addAnnotation(output, op, Override.class); setOperationBody(op, "" /*{ + <%=persistenceContextConcreteName%> newContext = new <%=persistenceContextConcreteName%>( - getHibernateProvider(), getTopiaFiresSupport(), getTopiaIdFactory(), getSessionRegistry()); + new AbstractTopiaPersistenceContextConstructorParameter( + getHibernateProvider(), + getTopiaFiresSupport(), + getTopiaIdFactory(), + getSessionRegistry() + ) + ); registerPersistenceContext(newContext); return newContext; }*/ diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java index b1f5a04..69979e5 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java @@ -33,12 +33,9 @@ import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContext; import org.nuiton.topia.persistence.TopiaDaoSupplier; -import org.nuiton.topia.persistence.internal.HibernateProvider; -import org.nuiton.topia.persistence.internal.TopiaHibernateSessionRegistry; -import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; -import org.nuiton.topia.persistence.TopiaIdFactory; +import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContext; +import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContextConstructorParameter; import java.util.List; @@ -213,13 +210,10 @@ public class PersistenceContextTransformer extends ObjectModelTransformerToJava ObjectModelJavaModifier.PROTECTED; ObjectModelOperation constructor = addConstructor(output, visibility); - addParameter(constructor, HibernateProvider.class, "hibernateProvider"); - addParameter(constructor, TopiaFiresSupport.class, "applicationFiresSupport"); - addParameter(constructor, TopiaIdFactory.class, "topiaIdFactory"); - addParameter(constructor, TopiaHibernateSessionRegistry.class, "sessionRegistry"); + addParameter(constructor, AbstractTopiaPersistenceContextConstructorParameter.class, "parameter"); setOperationBody(constructor, "" /*{ - super(hibernateProvider, applicationFiresSupport, topiaIdFactory, sessionRegistry); + super(parameter); }*/ ); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.