Franciaflex-magalie-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2013
- 2 participants
- 45 discussions
r25 - trunk/magalie-persistence/src/main/java/com/franciaflex/magalie
by bleny@users.forge.codelutin.com 15 Mar '13
by bleny@users.forge.codelutin.com 15 Mar '13
15 Mar '13
Author: bleny
Date: 2013-03-15 10:45:38 +0100 (Fri, 15 Mar 2013)
New Revision: 25
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
fix warn caused by using deprecated ApplicationConfig API
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-15 08:48:41 UTC (rev 24)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-15 09:45:38 UTC (rev 25)
@@ -17,7 +17,7 @@
public MagalieApplicationConfig() {
applicationConfig = new ApplicationConfig();
- applicationConfig.loadDefaultOptions(MagalieConfigOption.class);
+ applicationConfig.loadDefaultOptions(MagalieConfigOption.values());
applicationConfig.setConfigFileName("magalie.properties");
try {
applicationConfig.parse();
1
0
Author: bleny
Date: 2013-03-15 09:48:41 +0100 (Fri, 15 Mar 2013)
New Revision: 24
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
fix warn while analyzing dependencies
Modified:
trunk/magalie-persistence/pom.xml
Modified: trunk/magalie-persistence/pom.xml
===================================================================
--- trunk/magalie-persistence/pom.xml 2013-03-14 15:33:52 UTC (rev 23)
+++ trunk/magalie-persistence/pom.xml 2013-03-15 08:48:41 UTC (rev 24)
@@ -21,6 +21,11 @@
<dependencies>
<dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
1
0
r23 - in trunk: . magalie-persistence/src/main/java/com/franciaflex/magalie/dao magalie-persistence/src/main/resources magalie-persistence/src/test/resources magalie-services/src/main/java/com/franciaflex/magalie/services magalie-web magalie-web/src/main/java/com/franciaflex/magalie/web magalie-web/src/main/resources magalie-web/src/main/webapp/WEB-INF
by bleny@users.forge.codelutin.com 14 Mar '13
by bleny@users.forge.codelutin.com 14 Mar '13
14 Mar '13
Author: bleny
Date: 2013-03-14 16:33:52 +0100 (Thu, 14 Mar 2013)
New Revision: 23
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
introduce JPA layer and servlet filter
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java
trunk/magalie-persistence/src/main/resources/magalie.properties
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java
trunk/magalie-web/src/main/resources/magalie.properties
Removed:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java
trunk/magalie-persistence/src/test/resources/magalie.properties
Modified:
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/RequestedItemService.java
trunk/magalie-web/pom.xml
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
trunk/magalie-web/src/main/resources/log4j.properties
trunk/magalie-web/src/main/webapp/WEB-INF/web.xml
trunk/pom.xml
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -0,0 +1,37 @@
+package com.franciaflex.magalie.dao;
+
+import javax.persistence.EntityManager;
+
+public abstract class AbstractJpaDao<E> implements JpaDao<E> {
+
+ protected EntityManager entityManager;
+
+ public AbstractJpaDao(EntityManager entityManager) {
+ this.entityManager = entityManager;
+ }
+
+ @Override
+ public void persist(E entity) {
+ entityManager.persist(entity);
+ }
+
+ @Override
+ public E merge(E entity) {
+ return entityManager.merge(entity);
+ }
+
+ @Override
+ public void remove(E entity) {
+ entityManager.remove(entity);
+ }
+
+ @Override
+ public boolean contains(E entity) {
+ return entityManager.contains(entity);
+ }
+
+ @Override
+ public void commit() {
+ entityManager.getTransaction().commit();
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -0,0 +1,14 @@
+package com.franciaflex.magalie.dao;
+
+public interface JpaDao<E> {
+
+ void persist(E entity);
+
+ E merge(E entity);
+
+ void remove(E entity);
+
+ boolean contains(E entity);
+
+ void commit();
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -0,0 +1,12 @@
+package com.franciaflex.magalie.dao;
+
+import com.franciaflex.magalie.entity.MagalieUser;
+
+import javax.persistence.EntityManager;
+
+public class JpaMagalieUserDao extends AbstractJpaDao<MagalieUser> implements MagalieUserDao {
+
+ public JpaMagalieUserDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -1,7 +0,0 @@
-package com.franciaflex.magalie.dao;
-
-/**
- * @author bleny
- */
-public interface MagalieUserDAO {
-}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java (from rev 22, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -0,0 +1,10 @@
+package com.franciaflex.magalie.dao;
+
+import com.franciaflex.magalie.entity.MagalieUser;
+
+/**
+ * @author bleny
+ */
+public interface MagalieUserDao extends JpaDao<MagalieUser> {
+
+}
Copied: trunk/magalie-persistence/src/main/resources/magalie.properties (from rev 22, trunk/magalie-persistence/src/test/resources/magalie.properties)
===================================================================
--- trunk/magalie-persistence/src/main/resources/magalie.properties (rev 0)
+++ trunk/magalie-persistence/src/main/resources/magalie.properties 2013-03-14 15:33:52 UTC (rev 23)
@@ -0,0 +1,9 @@
+javax.persistence.jdbc.driver=org.h2.Driver
+javax.persistence.jdbc.url=jdbc:h2:file:/tmp/magalie/h2data
+javax.persistence.jdbc.user=sa
+javax.persistence.jdbc.password=
+hibernate.dialect=org.hibernate.dialect.H2Dialect
+hibernate.hbm2ddl.auto=create-drop
+hibernate.show_sql=true
+hibernate.format_sql=true
+hibernate.transaction.flush_before_completion=true
Deleted: trunk/magalie-persistence/src/test/resources/magalie.properties
===================================================================
--- trunk/magalie-persistence/src/test/resources/magalie.properties 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-persistence/src/test/resources/magalie.properties 2013-03-14 15:33:52 UTC (rev 23)
@@ -1,9 +0,0 @@
-javax.persistence.jdbc.driver=org.h2.Driver
-javax.persistence.jdbc.url=jdbc:h2:file:/tmp/magalie/h2data
-javax.persistence.jdbc.user=sa
-javax.persistence.jdbc.password=
-hibernate.dialect=org.hibernate.dialect.H2Dialect
-hibernate.hbm2ddl.auto=create-drop
-hibernate.show_sql=true
-hibernate.format_sql=true
-hibernate.transaction.flush_before_completion=true
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-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -1,13 +1,21 @@
package com.franciaflex.magalie.services;
import com.franciaflex.magalie.MagalieTechnicalException;
-import com.franciaflex.magalie.dao.MagalieUserDAO;
+import com.franciaflex.magalie.dao.JpaMagalieUserDao;
+import com.franciaflex.magalie.dao.MagalieUserDao;
+import javax.persistence.EntityManager;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class DefaultMagalieServiceContext implements MagalieServiceContext {
+ protected EntityManager entityManager;
+
+ public void setEntityManager(EntityManager entityManager) {
+ this.entityManager = entityManager;
+ }
+
@Override
public <E extends MagalieService> E newService(Class<E> serviceClass) {
@@ -44,9 +52,9 @@
}
@Override
- public MagalieUserDAO getMagalieUserDao() {
+ public MagalieUserDao getMagalieUserDao() {
- throw new UnsupportedOperationException();
+ return new JpaMagalieUserDao(entityManager);
}
}
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-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -23,7 +23,7 @@
* #L%
*/
-import com.franciaflex.magalie.dao.MagalieUserDAO;
+import com.franciaflex.magalie.dao.MagalieUserDao;
/**
* @author bleny
@@ -32,6 +32,6 @@
<E extends MagalieService> E newService(Class<E> serviceClass);
- MagalieUserDAO getMagalieUserDao();
+ MagalieUserDao getMagalieUserDao();
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -23,6 +23,8 @@
* #L%
*/
+import com.franciaflex.magalie.dao.MagalieUserDao;
+import com.franciaflex.magalie.entity.MagalieUser;
import com.google.common.collect.ImmutableSet;
import java.util.Set;
@@ -37,6 +39,10 @@
public WithdrawTask getWithdrawTask() {
+ MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao();
+
+ magalieUserDao.persist(new MagalieUser());
+
Set<Site> sites = ImmutableSet.of(
new Site("A1", "1", 5),
new Site("A2", "2", 5),
Modified: trunk/magalie-web/pom.xml
===================================================================
--- trunk/magalie-web/pom.xml 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-web/pom.xml 2013-03-14 15:33:52 UTC (rev 23)
@@ -133,6 +133,12 @@
<artifactId>junit</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
</dependencies>
<build>
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -32,8 +32,12 @@
import com.opensymphony.xwork2.interceptor.Interceptor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.StrutsStatics;
import org.nuiton.util.beans.BeanUtil;
+import org.nuiton.web.filter.JpaTransactionFilter;
+import javax.persistence.EntityManager;
+import javax.servlet.http.HttpServletRequest;
import java.beans.PropertyDescriptor;
import java.util.Set;
@@ -61,7 +65,7 @@
action.getClass(),
BeanUtil.IS_WRITE_DESCRIPTOR);
- MagalieServiceContext serviceContext = newServiceContext();
+ MagalieServiceContext serviceContext = newServiceContext(invocation);
for (PropertyDescriptor propertyDescriptor : descriptors) {
@@ -141,10 +145,22 @@
}
- protected MagalieServiceContext newServiceContext() {
+ protected MagalieServiceContext newServiceContext(ActionInvocation invocation) {
DefaultMagalieServiceContext serviceContext = new DefaultMagalieServiceContext();
+ EntityManager entityManager = (EntityManager)
+ ((HttpServletRequest) invocation
+ .getInvocationContext()
+ .get(StrutsStatics.HTTP_REQUEST))
+ .getAttribute(JpaTransactionFilter.JPA_TRANSACTION_REQUEST_ATTRIBUTE);
+
+ Preconditions.checkNotNull(
+ "unable to find transaction for request",
+ entityManager);
+
+ serviceContext.setEntityManager(entityManager);
+
return serviceContext;
}
Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java (rev 0)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java 2013-03-14 15:33:52 UTC (rev 23)
@@ -0,0 +1,39 @@
+package com.franciaflex.magalie.web;
+
+import com.franciaflex.magalie.MagalieApplicationConfig;
+import org.nuiton.web.filter.JpaTransactionFilter;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import java.util.Map;
+
+public class MagalieJpaTransactionFilter extends JpaTransactionFilter {
+
+ private EntityManagerFactory entityManagerFactory;
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+
+ super.init(filterConfig);
+
+ MagalieApplicationConfig applicationConfig = new MagalieApplicationConfig();
+
+ Map<String, Object> jpaParameters = applicationConfig.getJpaParameters();
+
+ entityManagerFactory = Persistence.createEntityManagerFactory("magaliePersistenceUnit", jpaParameters);
+
+ }
+
+ @Override
+ protected EntityManager createEntityManager(ServletRequest request) {
+
+ EntityManager entityManager = entityManagerFactory.createEntityManager();
+
+ return entityManager;
+
+ }
+}
Modified: trunk/magalie-web/src/main/resources/log4j.properties
===================================================================
--- trunk/magalie-web/src/main/resources/log4j.properties 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-web/src/main/resources/log4j.properties 2013-03-14 15:33:52 UTC (rev 23)
@@ -26,8 +26,6 @@
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%p] %c %m%n
-log4j.logger.com.franciaflex.magalie=TRACE
-
# FileAppender : need to have pollen.log.dir in system properties at application startup
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${magalie.log.dir}/magalie.log
@@ -35,3 +33,7 @@
log4j.appender.file.MaxBackupIndex=4
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy/MM/dd hh:mm:ss} %5p (%F:%L) %m%n
+
+log4j.logger.com.franciaflex.magalie=TRACE
+log4j.logger.org.nuiton.web.filter.JpaTransactionFilter=TRACE
+
Added: trunk/magalie-web/src/main/resources/magalie.properties
===================================================================
Modified: trunk/magalie-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/web.xml 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/web.xml 2013-03-14 15:33:52 UTC (rev 23)
@@ -34,6 +34,11 @@
</session-config>
<filter>
+ <filter-name>jpaTransaction</filter-name>
+ <filter-class>com.franciaflex.magalie.web.MagalieJpaTransactionFilter</filter-class>
+ </filter>
+
+ <filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
</filter>
@@ -49,6 +54,11 @@
</filter>
<filter-mapping>
+ <filter-name>jpaTransaction</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-03-13 17:24:41 UTC (rev 22)
+++ trunk/pom.xml 2013-03-14 15:33:52 UTC (rev 23)
@@ -90,7 +90,7 @@
<projectId>franciaflex-magalie</projectId>
<!-- versions -->
- <nuitonWebVersion>1.12-beta-2</nuitonWebVersion>
+ <nuitonWebVersion>1.12-SNAPSHOT</nuitonWebVersion>
<nuitonUtilsVersion>2.6.11-SNAPSHOT</nuitonUtilsVersion>
<h2Version>1.3.170</h2Version>
<postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
1
0
13 Mar '13
Author: bleny
Date: 2013-03-13 18:24:41 +0100 (Wed, 13 Mar 2013)
New Revision: 22
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
replace topia by hibernate 4
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java
trunk/magalie-persistence/src/main/resources/META-INF/
trunk/magalie-persistence/src/main/resources/META-INF/persistence.xml
trunk/magalie-persistence/src/test/java/com/
trunk/magalie-persistence/src/test/java/com/franciaflex/
trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/
trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java
trunk/magalie-persistence/src/test/resources/magalie.properties
Modified:
trunk/magalie-persistence/pom.xml
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.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/pom.xml
Modified: trunk/magalie-persistence/pom.xml
===================================================================
--- trunk/magalie-persistence/pom.xml 2013-03-13 13:53:50 UTC (rev 21)
+++ trunk/magalie-persistence/pom.xml 2013-03-13 17:24:41 UTC (rev 22)
@@ -21,16 +21,31 @@
<dependencies>
<dependency>
- <groupId>org.nuiton.topia</groupId>
- <artifactId>topia-persistence</artifactId>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
</dependency>
<dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-config</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
@@ -75,35 +90,35 @@
<build>
<plugins>
- <plugin>
- <groupId>org.nuiton.eugene</groupId>
- <artifactId>eugene-maven-plugin</artifactId>
- <configuration>
- <inputs>zargo</inputs>
- <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver>
- </configuration>
- <executions>
- <execution>
- <id>generate-entities</id>
- <phase>generate-sources</phase>
- <configuration>
- <!-- Corresponding to extracted package from zargo file -->
- <fullPackagePath>com.franciaflex.magalie.persistence.entities</fullPackagePath>
- <!-- DefaultPackage used for DAOHelper generation -->
- <defaultPackage>com.franciaflex.magalie.persistence.entities</defaultPackage>
- <templates>
- org.nuiton.eugene.java.JavaInterfaceTransformer,
- org.nuiton.eugene.java.JavaBeanTransformer,
- org.nuiton.eugene.java.JavaEnumerationTransformer,
- org.nuiton.topia.generator.TopiaMetaTransformer
- </templates>
- </configuration>
- <goals>
- <goal>generate</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
+ <!--<plugin>-->
+ <!--<groupId>org.nuiton.eugene</groupId>-->
+ <!--<artifactId>eugene-maven-plugin</artifactId>-->
+ <!--<configuration>-->
+ <!--<inputs>zargo</inputs>-->
+ <!--<resolver>org.nuiton.util.FasterCachedResourceResolver</resolver>-->
+ <!--</configuration>-->
+ <!--<executions>-->
+ <!--<execution>-->
+ <!--<id>generate-entities</id>-->
+ <!--<phase>generate-sources</phase>-->
+ <!--<configuration>-->
+ <!--<!– Corresponding to extracted package from zargo file –>-->
+ <!--<fullPackagePath>com.franciaflex.magalie.persistence.entities</fullPackagePath>-->
+ <!--<!– DefaultPackage used for DAOHelper generation –>-->
+ <!--<defaultPackage>com.franciaflex.magalie.persistence.entities</defaultPackage>-->
+ <!--<templates>-->
+ <!--org.nuiton.eugene.java.JavaInterfaceTransformer,-->
+ <!--org.nuiton.eugene.java.JavaBeanTransformer,-->
+ <!--org.nuiton.eugene.java.JavaEnumerationTransformer,-->
+ <!--org.nuiton.topia.generator.TopiaMetaTransformer-->
+ <!--</templates>-->
+ <!--</configuration>-->
+ <!--<goals>-->
+ <!--<goal>generate</goal>-->
+ <!--</goals>-->
+ <!--</execution>-->
+ <!--</executions>-->
+ <!--</plugin>-->
</plugins>
</build>
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-13 13:53:50 UTC (rev 21)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-13 17:24:41 UTC (rev 22)
@@ -1,4 +1,41 @@
package com.franciaflex.magalie;
+import com.google.common.collect.Maps;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.config.ApplicationConfig;
+import org.nuiton.util.config.ArgumentsParserException;
+
+import java.util.Map;
+import java.util.Properties;
+
public class MagalieApplicationConfig {
+
+ private static final Log log = LogFactory.getLog(MagalieApplicationConfig.class);
+
+ protected ApplicationConfig applicationConfig;
+
+ public MagalieApplicationConfig() {
+ applicationConfig = new ApplicationConfig();
+ applicationConfig.loadDefaultOptions(MagalieConfigOption.class);
+ applicationConfig.setConfigFileName("magalie.properties");
+ try {
+ applicationConfig.parse();
+ } catch (ArgumentsParserException e) {
+ throw new MagalieTechnicalException(e);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("parsed options in config file" + applicationConfig.getOptions());
+ }
+ }
+
+ public Map<String, Object> getJpaParameters() {
+ Map<String, Object> jpaParameters = Maps.newHashMap();
+ Properties hibernateProperties = applicationConfig.getOptionStartsWith("hibernate");
+ jpaParameters.putAll((Map) hibernateProperties);
+ Properties jpaProperties = applicationConfig.getOptionStartsWith("javax.persistence");
+ jpaParameters.putAll((Map) jpaProperties);
+ return jpaParameters;
+ }
+
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java 2013-03-13 17:24:41 UTC (rev 22)
@@ -0,0 +1,90 @@
+package com.franciaflex.magalie;
+
+import org.nuiton.util.config.ConfigOptionDef;
+
+/**
+ * @author bleny
+ */
+public enum MagalieConfigOption implements ConfigOptionDef {
+
+ SMTP_HOST(
+ "smtp.host",
+ "Nom d'hôte du serveur SMTP",
+ "", String.class),
+
+ SMTP_PORT(
+ "smtp.port",
+ "Le port du serveur SMTP",
+ "25", Integer.class),
+
+ SMTP_FROM(
+ "smtp.from",
+ "L'adresse d'expéditeur pour les mails de notifications",
+ "", String.class),
+
+ DEV_MODE(
+ "devMode",
+ "Mode développement, court-circuite l'envoi de mail",
+ "true", Boolean.class),
+
+ ;
+
+ protected final String key;
+ protected final String description;
+ protected final Class<?> type;
+ protected String defaultValue;
+
+ private MagalieConfigOption(String key, String description,
+ String defaultValue, Class<?> type) {
+ this.key = key;
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.type = type;
+ }
+
+ @Override
+ public String getKey() {
+ return key;
+ }
+
+ @Override
+ public Class<?> getType() {
+ return type;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ @Override
+ public boolean isTransient() {
+ return false;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return false;
+ }
+
+ @Override
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ @Override
+ public void setTransient(boolean isTransient) {
+ // Nothing to do
+ }
+
+ @Override
+ public void setFinal(boolean isFinal) {
+ // Nothing to do
+ }
+
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java 2013-03-13 17:24:41 UTC (rev 22)
@@ -0,0 +1,7 @@
+package com.franciaflex.magalie.dao;
+
+/**
+ * @author bleny
+ */
+public interface MagalieUserDAO {
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java 2013-03-13 17:24:41 UTC (rev 22)
@@ -0,0 +1,19 @@
+package com.franciaflex.magalie.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Entity
+public class MagalieUser {
+
+ @Id
+ protected Long id = 1L;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+}
Added: trunk/magalie-persistence/src/main/resources/META-INF/persistence.xml
===================================================================
--- trunk/magalie-persistence/src/main/resources/META-INF/persistence.xml (rev 0)
+++ trunk/magalie-persistence/src/main/resources/META-INF/persistence.xml 2013-03-13 17:24:41 UTC (rev 22)
@@ -0,0 +1,13 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+ version="2.0">
+
+ <persistence-unit name="magaliePersistenceUnit" transaction-type="RESOURCE_LOCAL">
+
+ <description></description>
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+
+ </persistence-unit>
+
+</persistence>
\ No newline at end of file
Added: trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java
===================================================================
--- trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java (rev 0)
+++ trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-13 17:24:41 UTC (rev 22)
@@ -0,0 +1,35 @@
+package com.franciaflex.magalie;
+
+import com.franciaflex.magalie.entity.MagalieUser;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import java.util.Map;
+
+public class PersistenceTest {
+
+ @Test
+ @Ignore
+ public void testName() throws Exception {
+
+ MagalieApplicationConfig applicationConfig = new MagalieApplicationConfig();
+
+ Map<String, Object> jpaParameters = applicationConfig.getJpaParameters();
+
+ EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("magaliePersistenceUnit", jpaParameters);
+
+ EntityManager entityManager = entityManagerFactory.createEntityManager();
+
+ entityManager.getTransaction().begin();
+
+ entityManager.persist(new MagalieUser());
+
+ entityManager.getTransaction().commit();
+
+ entityManager.close();
+
+ }
+}
Added: trunk/magalie-persistence/src/test/resources/magalie.properties
===================================================================
--- trunk/magalie-persistence/src/test/resources/magalie.properties (rev 0)
+++ trunk/magalie-persistence/src/test/resources/magalie.properties 2013-03-13 17:24:41 UTC (rev 22)
@@ -0,0 +1,9 @@
+javax.persistence.jdbc.driver=org.h2.Driver
+javax.persistence.jdbc.url=jdbc:h2:file:/tmp/magalie/h2data
+javax.persistence.jdbc.user=sa
+javax.persistence.jdbc.password=
+hibernate.dialect=org.hibernate.dialect.H2Dialect
+hibernate.hbm2ddl.auto=create-drop
+hibernate.show_sql=true
+hibernate.format_sql=true
+hibernate.transaction.flush_before_completion=true
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-03-13 13:53:50 UTC (rev 21)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-13 17:24:41 UTC (rev 22)
@@ -1,19 +1,13 @@
package com.franciaflex.magalie.services;
import com.franciaflex.magalie.MagalieTechnicalException;
-import com.franciaflex.magalie.persistence.entities.MagalieDAOHelper;
-import com.franciaflex.magalie.persistence.entities.MagalieUserDAO;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.TopiaRuntimeException;
+import com.franciaflex.magalie.dao.MagalieUserDAO;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class DefaultMagalieServiceContext implements MagalieServiceContext {
- protected TopiaContext context;
-
@Override
public <E extends MagalieService> E newService(Class<E> serviceClass) {
@@ -52,18 +46,7 @@
@Override
public MagalieUserDAO getMagalieUserDao() {
- MagalieUserDAO magalieUserDAO;
+ throw new UnsupportedOperationException();
- try {
-
- magalieUserDAO = MagalieDAOHelper.getMagalieUserDAO(context);
-
- } catch (TopiaException e) {
-
- throw new TopiaRuntimeException(e);
-
- }
-
- return magalieUserDAO;
}
}
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-03-13 13:53:50 UTC (rev 21)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-13 17:24:41 UTC (rev 22)
@@ -23,7 +23,7 @@
* #L%
*/
-import com.franciaflex.magalie.persistence.entities.MagalieUserDAO;
+import com.franciaflex.magalie.dao.MagalieUserDAO;
/**
* @author bleny
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-03-13 13:53:50 UTC (rev 21)
+++ trunk/pom.xml 2013-03-13 17:24:41 UTC (rev 22)
@@ -100,7 +100,7 @@
<shiroVersion>1.2.1</shiroVersion>
<slf4jVersion>1.7.2</slf4jVersion>
<jettyVersion>${jettyPluginVersion}</jettyVersion>
- <hibernateVersion>3.6.10.Final</hibernateVersion>
+ <hibernateVersion>4.1.9.Final</hibernateVersion>
<seleniumVersion>2.28.0</seleniumVersion>
<mockitoVersion>1.9.5</mockitoVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
@@ -120,14 +120,21 @@
<dependencies>
<dependency>
- <groupId>org.nuiton.topia</groupId>
- <artifactId>topia-persistence</artifactId>
- <version>${topiaVersion}</version>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>${hibernateVersion}</version>
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>${hibernateVersion}</version>
+ </dependency>
+
+ <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
+ <scope>test</scope>
<version>${h2Version}</version>
</dependency>
@@ -139,6 +146,12 @@
</dependency>
<dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-config</artifactId>
+ <version>${nuitonUtilsVersion}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.nuiton.web</groupId>
<artifactId>nuiton-struts2</artifactId>
<version>${nuitonWebVersion}</version>
1
0
13 Mar '13
Author: bleny
Date: 2013-03-13 14:53:50 +0100 (Wed, 13 Mar 2013)
New Revision: 21
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
introduce session, application context and injection by interceptor
Added:
trunk/magalie-persistence/src/main/java/com/
trunk/magalie-persistence/src/main/java/com/franciaflex/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.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/test/java/com/
trunk/magalie-services/src/test/java/com/franciaflex/
trunk/magalie-services/src/test/java/com/franciaflex/magalie/
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationListener.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java
Removed:
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ServiceContext.java
Modified:
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java
trunk/magalie-web/pom.xml
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java
trunk/magalie-web/src/main/resources/log4j.properties
trunk/magalie-web/src/main/webapp/WEB-INF/web.xml
trunk/pom.xml
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,4 @@
+package com.franciaflex.magalie;
+
+public class MagalieApplicationConfig {
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,19 @@
+package com.franciaflex.magalie;
+
+public class MagalieTechnicalException extends RuntimeException {
+
+ public MagalieTechnicalException() {
+ }
+
+ public MagalieTechnicalException(String message) {
+ super(message);
+ }
+
+ public MagalieTechnicalException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public MagalieTechnicalException(Throwable cause) {
+ super(cause);
+ }
+}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,69 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.MagalieTechnicalException;
+import com.franciaflex.magalie.persistence.entities.MagalieDAOHelper;
+import com.franciaflex.magalie.persistence.entities.MagalieUserDAO;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.TopiaRuntimeException;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+public class DefaultMagalieServiceContext implements MagalieServiceContext {
+
+ protected TopiaContext context;
+
+ @Override
+ public <E extends MagalieService> E newService(Class<E> serviceClass) {
+
+ E service;
+
+ try {
+
+ Constructor<E> constructor = serviceClass.getConstructor();
+
+ service = constructor.newInstance();
+
+ } catch (NoSuchMethodException e) {
+
+ throw new MagalieTechnicalException("all services must provide a non-argument contructor", e);
+
+ } catch (InvocationTargetException e) {
+
+ throw new MagalieTechnicalException("unable to instantiate magalie service", e);
+
+ } catch (InstantiationException e) {
+
+ throw new MagalieTechnicalException("unable to instantiate magalie service", e);
+
+ } catch (IllegalAccessException e) {
+
+ throw new MagalieTechnicalException("unable to instantiate magalie service", e);
+
+ }
+
+ service.setServiceContext(this);
+
+ return service;
+
+ }
+
+ @Override
+ public MagalieUserDAO getMagalieUserDao() {
+
+ MagalieUserDAO magalieUserDAO;
+
+ try {
+
+ magalieUserDAO = MagalieDAOHelper.getMagalieUserDAO(context);
+
+ } catch (TopiaException e) {
+
+ throw new TopiaRuntimeException(e);
+
+ }
+
+ return magalieUserDAO;
+ }
+}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieService.java 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieService.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -25,6 +25,6 @@
public interface MagalieService {
- void setServiceContext(ServiceContext serviceContext);
+ void setServiceContext(MagalieServiceContext serviceContext);
}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java (from rev 18, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ServiceContext.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,37 @@
+package com.franciaflex.magalie.services;
+
+/*
+ * #%L
+ * MagaLiE :: Services
+ * $Id:$
+ * $HeadURL:$
+ * %%
+ * Copyright (C) 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import com.franciaflex.magalie.persistence.entities.MagalieUserDAO;
+
+/**
+ * @author bleny
+ */
+public interface MagalieServiceContext {
+
+ <E extends MagalieService> E newService(Class<E> serviceClass);
+
+ MagalieUserDAO getMagalieUserDao();
+
+}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -29,9 +29,9 @@
public class RequestedItemService implements MagalieService {
- protected ServiceContext serviceContext;
+ protected MagalieServiceContext serviceContext;
- public void setServiceContext(ServiceContext serviceContext) {
+ public void setServiceContext(MagalieServiceContext serviceContext) {
this.serviceContext = serviceContext;
}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ServiceContext.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ServiceContext.java 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ServiceContext.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -1,31 +0,0 @@
-package com.franciaflex.magalie.services;
-
-/*
- * #%L
- * MagaLiE :: Services
- * $Id:$
- * $HeadURL:$
- * %%
- * Copyright (C) 2013 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-/**
- * @author bleny
- */
-public interface ServiceContext {
-
-}
Added: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,10 @@
+package com.franciaflex.magalie.services;
+
+import org.junit.Test;
+
+public class RequestedItemServiceTest {
+
+ @Test
+ public void testGetWithdrawTask() throws Exception {
+ }
+}
Modified: trunk/magalie-web/pom.xml
===================================================================
--- trunk/magalie-web/pom.xml 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-web/pom.xml 2013-03-13 13:53:50 UTC (rev 21)
@@ -162,7 +162,7 @@
<path>/${defaultWebContextPath}</path>
<systemProperties>
<siteUrl>${defaultSiteUrl}</siteUrl>
- <pollen.log.dir>${defaultLogDir}</pollen.log.dir>
+ <magalie.log.dir>${defaultLogDir}</magalie.log.dir>
</systemProperties>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java (rev 0)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,40 @@
+package com.franciaflex.magalie.web;
+
+import com.franciaflex.magalie.MagalieApplicationConfig;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.DateUtil;
+
+import java.util.Date;
+
+public class MagalieApplicationContext {
+
+ private static final Log log = LogFactory.getLog(MagalieApplicationContext.class);
+
+ protected static final String APPLICATION_CONTEXT_PARAMETER = "magalieApplicationContext";
+
+ protected MagalieApplicationConfig applicationConfig;
+
+ protected Date applicationConfigLastRead;
+
+ public MagalieApplicationConfig getMagalieApplicationConfig() {
+
+ Date now = new Date();
+
+ if (applicationConfigLastRead == null || DateUtil.getDifferenceInDays(applicationConfigLastRead, now) > 1) {
+
+ applicationConfigLastRead = now;
+
+ if (log.isDebugEnabled()) {
+ log.debug("reloading config");
+ }
+
+ applicationConfig = new MagalieApplicationConfig();
+
+ }
+
+ return applicationConfig;
+
+ }
+
+}
Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationListener.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationListener.java (rev 0)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationListener.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,31 @@
+package com.franciaflex.magalie.web;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+public class MagalieApplicationListener implements ServletContextListener {
+
+ private static final Log log = LogFactory.getLog(MagalieApplicationListener.class);
+
+ @Override
+ public void contextInitialized(ServletContextEvent sce) {
+
+ MagalieApplicationContext applicationContext = new MagalieApplicationContext();
+
+ ServletContext servletContext = sce.getServletContext();
+
+ servletContext.setAttribute(
+ MagalieApplicationContext.APPLICATION_CONTEXT_PARAMETER,
+ applicationContext);
+
+ }
+
+ @Override
+ public void contextDestroyed(ServletContextEvent sce) {
+ // nothing to do
+ }
+}
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -23,20 +23,22 @@
* #L%
*/
+import com.franciaflex.magalie.MagalieApplicationConfig;
+import com.franciaflex.magalie.services.DefaultMagalieServiceContext;
import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
import com.google.common.base.Preconditions;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.beans.BeanUtil;
-import java.beans.BeanInfo;
-import java.beans.Introspector;
import java.beans.PropertyDescriptor;
-import java.lang.reflect.Constructor;
+import java.util.Set;
/**
- * This interceptor injects services in actions.
+ * This interceptor injects services, config and session in actions.
*/
public class MagalieInterceptor implements Interceptor {
@@ -54,27 +56,44 @@
if (action instanceof MagalieActionSupport) {
- BeanInfo beanInfo = Introspector.getBeanInfo(action.getClass());
+ Set<PropertyDescriptor> descriptors =
+ BeanUtil.getDescriptors(
+ action.getClass(),
+ BeanUtil.IS_WRITE_DESCRIPTOR);
- for (PropertyDescriptor propertyDescriptor : beanInfo.getPropertyDescriptors()) {
+ MagalieServiceContext serviceContext = newServiceContext();
+ for (PropertyDescriptor propertyDescriptor : descriptors) {
+
Class<?> propertyType = propertyDescriptor.getPropertyType();
+ Object toInject = null;
+
if (MagalieService.class.isAssignableFrom(propertyType)) {
- Constructor<? extends MagalieService> constructor = (Constructor<? extends MagalieService>) propertyType.getConstructor();
+ Class<? extends MagalieService> serviceClass =
+ (Class<? extends MagalieService>) propertyType;
- Preconditions.checkNotNull(constructor);
+ toInject = serviceContext.newService(serviceClass);
- MagalieService service = constructor.newInstance();
+ } else if (MagalieSession.class.isAssignableFrom(propertyType)) {
- service.setServiceContext(null);
+ toInject = getMagalieSession(invocation);
- propertyDescriptor.getWriteMethod().invoke(action, service);
+ } else if (MagalieApplicationConfig.class.isAssignableFrom(propertyType)) {
+ toInject = getMagalieApplicationConfig(invocation);
+
+ }
+
+ if (toInject != null) {
+
if (log.isTraceEnabled()) {
- log.trace("injecting service " + service + " in action " + action);
+ log.trace("injecting " + toInject + " in action " + action);
}
+
+ propertyDescriptor.getWriteMethod().invoke(action, toInject);
+
}
}
}
@@ -82,6 +101,54 @@
return invocation.invoke();
}
+ protected MagalieApplicationConfig getMagalieApplicationConfig(ActionInvocation invocation) {
+
+ MagalieApplicationConfig applicationConfig = getMagalieApplicationContext(invocation).getMagalieApplicationConfig();
+
+ return applicationConfig;
+
+ }
+
+ protected MagalieSession getMagalieSession(ActionInvocation invocation) {
+
+ MagalieSession session = (MagalieSession) invocation.getInvocationContext().getSession().get(MagalieSession.SESSION_PARAMETER);
+
+ if (session == null) {
+
+ session = new MagalieSession();
+
+ invocation.getInvocationContext().getSession().put(MagalieSession.SESSION_PARAMETER, session);
+
+ }
+
+ return session;
+
+ }
+
+ protected MagalieApplicationContext getMagalieApplicationContext(ActionInvocation invocation) {
+
+ MagalieApplicationContext applicationContext =
+ (MagalieApplicationContext) invocation
+ .getInvocationContext()
+ .getApplication()
+ .get(MagalieApplicationContext.APPLICATION_CONTEXT_PARAMETER);
+
+ Preconditions.checkNotNull(
+ "application context must be initialized before calling an action",
+ applicationContext);
+
+ return applicationContext;
+
+ }
+
+ protected MagalieServiceContext newServiceContext() {
+
+ DefaultMagalieServiceContext serviceContext = new DefaultMagalieServiceContext();
+
+ return serviceContext;
+
+ }
+
@Override
public void destroy() {
// nothing to do
Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java (rev 0)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -0,0 +1,18 @@
+package com.franciaflex.magalie.web;
+
+import java.io.Serializable;
+
+/**
+ * The single object every user will have in its session.
+ *
+ * @author bleny
+ */
+public class MagalieSession implements Serializable {
+
+ /**
+ * Key to store the {@link MagalieSession} instance in the session's map.
+ */
+ public static final String SESSION_PARAMETER = "magalieSession";
+
+
+}
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-13 13:53:50 UTC (rev 21)
@@ -23,6 +23,7 @@
* #L%
*/
+import com.franciaflex.magalie.MagalieApplicationConfig;
import com.franciaflex.magalie.services.RequestedItemService;
import com.franciaflex.magalie.services.WithdrawTask;
import com.franciaflex.magalie.web.MagalieActionSupport;
@@ -37,12 +38,18 @@
protected RequestedItemService service;
+ protected MagalieApplicationConfig config;
+
protected WithdrawTask withdrawTask;
public void setService(RequestedItemService service) {
this.service = service;
}
+ public void setConfig(MagalieApplicationConfig config) {
+ this.config = config;
+ }
+
public void setModel(String model) {
if (log.isErrorEnabled()) {
@@ -64,6 +71,10 @@
withdrawTask = service.getWithdrawTask();
+ if (log.isDebugEnabled()) {
+ log.debug("config = " + config);
+ }
+
return INPUT;
}
Modified: trunk/magalie-web/src/main/resources/log4j.properties
===================================================================
--- trunk/magalie-web/src/main/resources/log4j.properties 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-web/src/main/resources/log4j.properties 2013-03-13 13:53:50 UTC (rev 21)
@@ -30,7 +30,7 @@
# FileAppender : need to have pollen.log.dir in system properties at application startup
log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=${magalie.log.dir}/pollen.log
+log4j.appender.file.File=${magalie.log.dir}/magalie.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=4
log4j.appender.file.layout=org.apache.log4j.PatternLayout
Modified: trunk/magalie-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/web.xml 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/web.xml 2013-03-13 13:53:50 UTC (rev 21)
@@ -62,12 +62,10 @@
<filter-name>struts-execute</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-<!--
<listener>
<description>Init</description>
- <listener-class>fr.cerqual.nflogement.extranet.ui.ApplicationListener</listener-class>
+ <listener-class>com.franciaflex.magalie.web.MagalieApplicationListener</listener-class>
</listener>
--->
</web-app>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-03-12 17:23:23 UTC (rev 20)
+++ trunk/pom.xml 2013-03-13 13:53:50 UTC (rev 21)
@@ -91,7 +91,7 @@
<!-- versions -->
<nuitonWebVersion>1.12-beta-2</nuitonWebVersion>
- <nuitonUtilsVersion>2.6.10</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.6.11-SNAPSHOT</nuitonUtilsVersion>
<h2Version>1.3.170</h2Version>
<postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
<struts2Version>2.3.8</struts2Version>
1
0