r67 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa magalie-services/src/main/java/com/franciaflex/magalie/services magalie-services/src/main/java/com/franciaflex/magalie/services/service
Author: bleny Date: 2013-04-03 12:20:27 +0200 (Wed, 03 Apr 2013) New Revision: 67 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: manually deal with transaction management Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java 2013-04-03 10:20:27 UTC (rev 67) @@ -0,0 +1,88 @@ +package com.franciaflex.magalie.persistence; + +import com.franciaflex.magalie.persistence.dao.ArticleDao; +import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; +import com.franciaflex.magalie.persistence.dao.SiteDao; +import com.franciaflex.magalie.persistence.dao.SiteErrorDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; +import com.franciaflex.magalie.persistence.dao.StoredArticleDao; +import com.franciaflex.magalie.persistence.dao.jpa.ArticleJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.MagalieUserJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.RequestedArticleJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.SiteErrorJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.SiteJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementOrderJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.StoredArticleJpaDao; + +import javax.persistence.EntityManager; +import javax.persistence.EntityTransaction; + +public class JpaMagaliePersistenceContext implements MagaliePersistenceContext { + + protected EntityManager entityManager; + + protected EntityTransaction entityTransaction; + + public JpaMagaliePersistenceContext(EntityManager entityManager) { + this.entityManager = entityManager; + entityTransaction = entityManager.getTransaction(); + entityTransaction.begin(); + } + + @Override + public MagalieUserDao getMagalieUserDao() { + return new MagalieUserJpaDao(entityManager); + } + + @Override + public StoredArticleDao getStoredArticleDao() { + return new StoredArticleJpaDao(entityManager); + } + + @Override + public RequestedArticleDao getRequestedArticleDao() { + return new RequestedArticleJpaDao(entityManager); + } + + @Override + public ArticleDao getArticleDao() { + return new ArticleJpaDao(entityManager); + } + + @Override + public StorageMovementDao getStorageMovementDao() { + return new StorageMovementJpaDao(entityManager); + } + + @Override + public SiteErrorDao getSiteErrorDao() { + return new SiteErrorJpaDao(entityManager); + } + + @Override + public StorageMovementOrderDao getStorageMovementOrderDao() { + return new StorageMovementOrderJpaDao(entityManager); + } + + @Override + public SiteDao getSiteDao() { + return new SiteJpaDao(entityManager); + } + + @Override + public void commit() { + entityTransaction.commit(); + entityTransaction = entityManager.getTransaction(); + entityTransaction.begin(); + } + + @Override + public void rollback() { + entityTransaction.rollback(); + entityTransaction = entityManager.getTransaction(); + entityTransaction.begin(); + } +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java 2013-04-03 10:20:27 UTC (rev 67) @@ -0,0 +1,37 @@ +package com.franciaflex.magalie.persistence; + +import com.franciaflex.magalie.persistence.dao.ArticleDao; +import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; +import com.franciaflex.magalie.persistence.dao.SiteDao; +import com.franciaflex.magalie.persistence.dao.SiteErrorDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; +import com.franciaflex.magalie.persistence.dao.StoredArticleDao; + +/** + * @author bleny + */ +public interface MagaliePersistenceContext { + + MagalieUserDao getMagalieUserDao(); + + StoredArticleDao getStoredArticleDao(); + + RequestedArticleDao getRequestedArticleDao(); + + ArticleDao getArticleDao(); + + StorageMovementDao getStorageMovementDao(); + + SiteErrorDao getSiteErrorDao(); + + StorageMovementOrderDao getStorageMovementOrderDao(); + + SiteDao getSiteDao(); + + void commit(); + + void rollback(); + +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java 2013-04-02 16:11:50 UTC (rev 66) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java 2013-04-03 10:20:27 UTC (rev 67) @@ -4,7 +4,6 @@ import com.franciaflex.magalie.persistence.entity.AbstractEntity; import javax.persistence.EntityManager; -import javax.persistence.EntityTransaction; public abstract class AbstractJpaDao<E extends AbstractEntity> implements Dao<E> { @@ -24,18 +23,12 @@ @Override public void persist(E entity) { - EntityTransaction transaction = entityManager.getTransaction(); - transaction.begin(); entityManager.persist(entity); - transaction.commit(); } @Override public E merge(E entity) { - EntityTransaction transaction = entityManager.getTransaction(); - transaction.begin(); E merge = entityManager.merge(entity); - transaction.commit(); return merge; } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-04-02 16:11:50 UTC (rev 66) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-04-03 10:20:27 UTC (rev 67) @@ -2,6 +2,8 @@ import com.franciaflex.magalie.MagalieApplicationConfig; import com.franciaflex.magalie.MagalieTechnicalException; +import com.franciaflex.magalie.persistence.JpaMagaliePersistenceContext; +import com.franciaflex.magalie.persistence.MagaliePersistenceContext; import com.franciaflex.magalie.persistence.dao.ArticleDao; import com.franciaflex.magalie.persistence.dao.MagalieUserDao; import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; @@ -10,14 +12,6 @@ import com.franciaflex.magalie.persistence.dao.StorageMovementDao; import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; import com.franciaflex.magalie.persistence.dao.StoredArticleDao; -import com.franciaflex.magalie.persistence.dao.jpa.ArticleJpaDao; -import com.franciaflex.magalie.persistence.dao.jpa.MagalieUserJpaDao; -import com.franciaflex.magalie.persistence.dao.jpa.RequestedArticleJpaDao; -import com.franciaflex.magalie.persistence.dao.jpa.SiteErrorJpaDao; -import com.franciaflex.magalie.persistence.dao.jpa.SiteJpaDao; -import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementJpaDao; -import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementOrderJpaDao; -import com.franciaflex.magalie.persistence.dao.jpa.StoredArticleJpaDao; import javax.persistence.EntityManager; import java.lang.reflect.Constructor; @@ -30,6 +24,8 @@ protected MagalieApplicationConfig magalieApplicationConfig; + protected MagaliePersistenceContext persistenceContext; + public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } @@ -89,42 +85,50 @@ } @Override + public MagaliePersistenceContext getPersistenceContext() { + if (persistenceContext == null) { + persistenceContext = new JpaMagaliePersistenceContext(entityManager); + } + return persistenceContext; + } + + @Override public MagalieUserDao getMagalieUserDao() { - return new MagalieUserJpaDao(entityManager); + return getPersistenceContext().getMagalieUserDao(); } @Override public StoredArticleDao getStoredArticleDao() { - return new StoredArticleJpaDao(entityManager); + return getPersistenceContext().getStoredArticleDao(); } @Override public RequestedArticleDao getRequestedArticleDao() { - return new RequestedArticleJpaDao(entityManager); + return getPersistenceContext().getRequestedArticleDao(); } @Override public ArticleDao getArticleDao() { - return new ArticleJpaDao(entityManager); + return getPersistenceContext().getArticleDao(); } @Override public StorageMovementDao getStorageMovementDao() { - return new StorageMovementJpaDao(entityManager); + return getPersistenceContext().getStorageMovementDao(); } @Override public SiteErrorDao getSiteErrorDao() { - return new SiteErrorJpaDao(entityManager); + return getPersistenceContext().getSiteErrorDao(); } @Override public StorageMovementOrderDao getStorageMovementOrderDao() { - return new StorageMovementOrderJpaDao(entityManager); + return getPersistenceContext().getStorageMovementOrderDao(); } @Override public SiteDao getSiteDao() { - return new SiteJpaDao(entityManager); + return getPersistenceContext().getSiteDao(); } } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-04-02 16:11:50 UTC (rev 66) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-04-03 10:20:27 UTC (rev 67) @@ -24,6 +24,7 @@ */ import com.franciaflex.magalie.MagalieApplicationConfig; +import com.franciaflex.magalie.persistence.MagaliePersistenceContext; import com.franciaflex.magalie.persistence.dao.ArticleDao; import com.franciaflex.magalie.persistence.dao.MagalieUserDao; import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; @@ -44,6 +45,8 @@ <E extends MagalieService> E newService(Class<E> serviceClass); + MagaliePersistenceContext getPersistenceContext(); + MagalieUserDao getMagalieUserDao(); StoredArticleDao getStoredArticleDao(); Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-04-02 16:11:50 UTC (rev 66) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-04-03 10:20:27 UTC (rev 67) @@ -1,5 +1,6 @@ package com.franciaflex.magalie.services.service; +import com.franciaflex.magalie.persistence.MagaliePersistenceContext; import com.franciaflex.magalie.persistence.StoredArticles; import com.franciaflex.magalie.persistence.dao.SiteDao; import com.franciaflex.magalie.persistence.dao.StorageMovementDao; @@ -131,10 +132,14 @@ } - StorageMovementOrderDao dao = serviceContext.getStorageMovementOrderDao(); + MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); + StorageMovementOrderDao dao = persistenceContext.getStorageMovementOrderDao(); + dao.persist(storageMovementOrder); + persistenceContext.commit(); + return storageMovementOrder; } @@ -340,5 +345,7 @@ storageMovementOrderDao.merge(storageMovementOrder); + serviceContext.getPersistenceContext().commit(); + } } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java 2013-04-02 16:11:50 UTC (rev 66) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java 2013-04-03 10:20:27 UTC (rev 67) @@ -51,8 +51,12 @@ EntityManager entityManager = ((DefaultMagalieServiceContext) serviceContext).getEntityManager(); + // serviceContext.getPersistenceContext(); + JpaUtil.cleanDatabase(entityManager); + serviceContext.getPersistenceContext().commit(); + MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao(); Collection<MagalieUser> users = fixtures.fixture("users"); @@ -63,6 +67,8 @@ } + serviceContext.getPersistenceContext().commit(); + SiteDao siteDao = serviceContext.getSiteDao(); Collection<Site> sites = fixtures.fixture("sites"); @@ -73,16 +79,20 @@ } + serviceContext.getPersistenceContext().commit(); + ArticleDao articleDao = serviceContext.getArticleDao(); Collection<Article> articles = fixtures.fixture("articles"); for (Article article : articles) { - articleDao.persist(article); + articleDao.merge(article); } + serviceContext.getPersistenceContext().commit(); + StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao(); Collection<StoredArticle> storedArticles = fixtures.fixture("storedArticles"); @@ -93,6 +103,8 @@ } + serviceContext.getPersistenceContext().commit(); + } else { if (log.isWarnEnabled()) { Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java 2013-04-02 16:11:50 UTC (rev 66) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java 2013-04-03 10:20:27 UTC (rev 67) @@ -49,6 +49,8 @@ siteErrorDao.persist(newSiteError); + serviceContext.getPersistenceContext().commit(); + } else { if (log.isInfoEnabled()) {
participants (1)
-
bleny@users.forge.codelutin.com