Author: bleny Date: 2014-09-15 15:15:22 +0200 (Mon, 15 Sep 2014) New Revision: 2257 Url: http://forge.codelutin.com/projects/wao/repository/revisions/2257 Log: Fusion des changements effectu?\195?\169s en 0.4.x vers la 4.1 Modified: trunk/ trunk/pom.xml trunk/wao-services/pom.xml trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/NewsService.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/mail/EmailService.java trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/mail/EmailServiceTest.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo - /branches/wao-4.0-obsvente:2075-2085 /branches/wao-4.0.x:2169-2249 + /branches/wao-4.0-obsvente:2075-2085 /branches/wao-4.0.x:2169-2256 Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-09-15 13:11:00 UTC (rev 2256) +++ trunk/pom.xml 2014-09-15 13:15:22 UTC (rev 2257) @@ -109,7 +109,7 @@ <mockitoVersion>1.9.5</mockitoVersion> <postgresqlDriverVersion>9.3-1102-jdbc41</postgresqlDriverVersion> <commonsEmailVersion>1.3.2</commonsEmailVersion> - <mustacheVersion>0.8.15</mustacheVersion> + <mustacheVersion>1.9</mustacheVersion> <commonsCodecVersion>1.9</commonsCodecVersion> <ehCacheVersion>2.6.9</ehCacheVersion> <jFreeChartVersion>1.0.13</jFreeChartVersion> @@ -259,8 +259,8 @@ <!-- services module --> <dependency> - <groupId>com.github.spullara.mustache.java</groupId> - <artifactId>compiler</artifactId> + <groupId>com.samskivert</groupId> + <artifactId>jmustache</artifactId> <version>${mustacheVersion}</version> </dependency> Modified: trunk/wao-services/pom.xml =================================================================== --- trunk/wao-services/pom.xml 2014-09-15 13:11:00 UTC (rev 2256) +++ trunk/wao-services/pom.xml 2014-09-15 13:15:22 UTC (rev 2257) @@ -41,8 +41,8 @@ </dependency> <dependency> - <groupId>com.github.spullara.mustache.java</groupId> - <artifactId>compiler</artifactId> + <groupId>com.samskivert</groupId> + <artifactId>jmustache</artifactId> </dependency> <dependency> Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/NewsService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/NewsService.java 2014-09-15 13:11:00 UTC (rev 2256) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/NewsService.java 2014-09-15 13:15:22 UTC (rev 2257) @@ -44,10 +44,13 @@ // on ne veut que les news pour le programme et 'null' pour les news publiées pour tous les programmes query.addIn(News.PROPERTY_OBS_PROGRAM, Lists.newArrayList(authenticatedWaoUser.getObsProgram(), null)); - // on ne veut que les news publiées par le programme et les news publiées par la même société que l'utilisateur connecté - if ( ! authenticatedWaoUser.isAdmin()) { + if (authenticatedWaoUser.isCoordinatorOrObserver()) { + // on veut les news publiées par le programme et les news internes de la société Company company = authenticatedWaoUser.getWaoUser().getCompany(); query.addIn(News.PROPERTY_COMPANY, Lists.newArrayList(company, null)); + } else { + // uniquement les news publiées par le programme + query.addNull(News.PROPERTY_COMPANY); } // de la plus récente à la plus ancienne Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/mail/EmailService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/mail/EmailService.java 2014-09-15 13:11:00 UTC (rev 2256) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/mail/EmailService.java 2014-09-15 13:15:22 UTC (rev 2257) @@ -21,11 +21,10 @@ * #L% */ -import com.github.mustachejava.DefaultMustacheFactory; -import com.github.mustachejava.Mustache; -import com.github.mustachejava.MustacheFactory; import com.google.common.base.Charsets; import com.google.common.base.Objects; +import com.samskivert.mustache.Mustache; +import com.samskivert.mustache.Template; import fr.ifremer.wao.WaoApplicationConfig; import fr.ifremer.wao.WaoTechnicalException; import fr.ifremer.wao.services.service.WaoServiceSupport; @@ -35,7 +34,8 @@ import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; -import java.io.StringWriter; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.Locale; public class EmailService extends WaoServiceSupport { @@ -131,17 +131,19 @@ Locale locale = mail.getLocale(); - MustacheFactory mustacheFactory = new DefaultMustacheFactory(); + String templateName = "/email/" + mail.getClass().getSimpleName() + "_" + locale.getLanguage() + ".mustache"; - String templateName = "email/" + mail.getClass().getSimpleName() + "_" + locale.getLanguage() + ".mustache"; + try (InputStreamReader reader = new InputStreamReader(getClass().getResourceAsStream(templateName), Charsets.UTF_8.name())) { - Mustache mustache = mustacheFactory.compile(templateName); + Template template = Mustache.compiler().escapeHTML(false).compile(reader); - StringWriter stringWriter = new StringWriter(); + String body = template.execute(mail); - mustache.execute(stringWriter, mail); + return body; - return stringWriter.toString(); + } catch (IOException e) { + throw new WaoTechnicalException("Unable to read " + templateName, e); + } } Modified: trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/mail/EmailServiceTest.java =================================================================== --- trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/mail/EmailServiceTest.java 2014-09-15 13:11:00 UTC (rev 2256) +++ trunk/wao-services/src/test/java/fr/ifremer/wao/services/service/mail/EmailServiceTest.java 2014-09-15 13:15:22 UTC (rev 2257) @@ -23,6 +23,8 @@ import fr.ifremer.wao.entity.WaoUserImpl; import fr.ifremer.wao.services.AbstractWaoServiceTest; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -31,6 +33,8 @@ public class EmailServiceTest extends AbstractWaoServiceTest { + private static final Log log = LogFactory.getLog(EmailServiceTest.class); + protected EmailService service; @Before @@ -38,19 +42,28 @@ service = newService(EmailService.class); + newMail(); + } + protected UserCredentialsEmail newMail() { + UserCredentialsEmail mail = service.newUserCredentialsEmail(); + WaoUserImpl waoUser = new WaoUserImpl(); + waoUser.setFirstName("F"); + waoUser.setLogin("Login"); + mail.setWaoUser(waoUser); + mail.setNewPassword("taiste'"); + return mail; + } + @Test public void testGetBody() { { serviceContext.setLocale(Locale.FRANCE); - UserCredentialsEmail mail = service.newUserCredentialsEmail(); - mail.setWaoUser(new WaoUserImpl()); - mail.setNewPassword("taiste"); - String body = service.getBody(mail); + String body = service.getBody(newMail()); Assert.assertTrue(body.contains("taiste")); Assert.assertTrue(body.contains("Bonjour")); @@ -59,11 +72,8 @@ { serviceContext.setLocale(Locale.FRENCH); - UserCredentialsEmail mail = service.newUserCredentialsEmail(); - mail.setWaoUser(new WaoUserImpl()); - mail.setNewPassword("taiste"); - String body = service.getBody(mail); + String body = service.getBody(newMail()); Assert.assertTrue(body.contains("taiste")); Assert.assertTrue(body.contains("Bonjour")); @@ -72,11 +82,8 @@ { serviceContext.setLocale(Locale.CANADA_FRENCH); - UserCredentialsEmail mail = service.newUserCredentialsEmail(); - mail.setWaoUser(new WaoUserImpl()); - mail.setNewPassword("taiste"); - String body = service.getBody(mail); + String body = service.getBody(newMail()); Assert.assertTrue(body.contains("taiste")); Assert.assertTrue(body.contains("Bonjour")); @@ -85,11 +92,8 @@ { serviceContext.setLocale(Locale.ENGLISH); - UserCredentialsEmail mail = service.newUserCredentialsEmail(); - mail.setWaoUser(new WaoUserImpl()); - mail.setNewPassword("taiste"); - String body = service.getBody(mail); + String body = service.getBody(newMail()); Assert.assertTrue(body.contains("taiste")); Assert.assertTrue(body.contains("Hi")); @@ -98,11 +102,8 @@ { serviceContext.setLocale(Locale.US); - UserCredentialsEmail mail = service.newUserCredentialsEmail(); - mail.setWaoUser(new WaoUserImpl()); - mail.setNewPassword("taiste"); - String body = service.getBody(mail); + String body = service.getBody(newMail()); Assert.assertTrue(body.contains("taiste")); Assert.assertTrue(body.contains("Hi")); @@ -111,11 +112,8 @@ { serviceContext.setLocale(Locale.CANADA); - UserCredentialsEmail mail = service.newUserCredentialsEmail(); - mail.setWaoUser(new WaoUserImpl()); - mail.setNewPassword("taiste"); - String body = service.getBody(mail); + String body = service.getBody(newMail()); Assert.assertTrue(body.contains("taiste")); Assert.assertTrue(body.contains("Hi")); @@ -123,4 +121,19 @@ } } + @Test + public void mustacheShouldNotEscapeContent() { + + serviceContext.setLocale(Locale.FRANCE); + + String body = service.getBody(newMail()); + + if (log.isDebugEnabled()) { + log.debug("body = \n" + body); + } + + Assert.assertFalse(body.contains("taiste'")); + Assert.assertTrue(body.contains("taiste'")); + + } } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java 2014-09-15 13:11:00 UTC (rev 2256) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/DefaultWaoApplicationContext.java 2014-09-15 13:15:22 UTC (rev 2257) @@ -24,7 +24,6 @@ import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.opensymphony.xwork2.util.LocalizedTextUtil; -import fr.ifremer.wao.ContactsFilter; import fr.ifremer.wao.WaoApplicationConfig; import fr.ifremer.wao.WaoTopiaApplicationContext; import fr.ifremer.wao.WaoTopiaPersistenceContext; @@ -136,7 +135,7 @@ BoatsFilterValuesCacheLoader loader = new BoatsFilterValuesCacheLoader(this); boatsFilterValuesCache = newCacheBuilder(100) . expireAfterAccess(20, TimeUnit.DAYS) - . refreshAfterWrite(20, TimeUnit.MINUTES) + . refreshAfterWrite(1, TimeUnit.DAYS) . build(loader); } return boatsFilterValuesCache; @@ -156,7 +155,7 @@ ContactsFilterValuesCacheLoader loader = new ContactsFilterValuesCacheLoader(this); contactsFilterValuesCache = newCacheBuilder(100) . expireAfterAccess(20, TimeUnit.DAYS) - . refreshAfterWrite(20, TimeUnit.MINUTES) + . refreshAfterWrite(1, TimeUnit.DAYS) . build(loader); } return contactsFilterValuesCache;