[topia] branch feature/2945 created (now 5e9b351)
This is an automated email from the git hooks/post-receive script. New change to branch feature/2945 in repository topia. See http://git.nuiton.org/topia.git at 5e9b351 Introduce parameter object for XxxTopiaPersistenceContext constructor (refs #2945) This branch includes the following new commits: new 5e9b351 Introduce parameter object for XxxTopiaPersistenceContext constructor (refs #2945) 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 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) -- 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/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>.
participants (1)
-
nuiton.org scm