You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2016/03/02 08:23:28 UTC

[5/6] james-project git commit: JSIEVE-103 Use yoda-time for vacation extension

JSIEVE-103 Use yoda-time for vacation extension


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a56bf6e4
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a56bf6e4
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a56bf6e4

Branch: refs/heads/master
Commit: a56bf6e497ce977b5b44614b69ce4a950f2714c0
Parents: d51a817
Author: Benoit Tellier <bt...@apache.org>
Authored: Mon Feb 15 14:44:59 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Mar 2 14:22:34 2016 +0700

----------------------------------------------------------------------
 server/data/data-api/pom.xml                    |  6 +++
 .../sieverepository/api/SieveRepository.java    |  4 +-
 .../file/SieveDefaultRepository.java            |  5 ++-
 .../file/SieveFileRepository.java               |  8 ++--
 .../transport/mailets/ResourceLocatorImpl.java  |  4 +-
 .../mailets/delivery/SieveMailetTest.java       | 41 +++++++++-----------
 6 files changed, 35 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a56bf6e4/server/data/data-api/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-api/pom.xml b/server/data/data-api/pom.xml
index 88bfd56..9cd08ed 100644
--- a/server/data/data-api/pom.xml
+++ b/server/data/data-api/pom.xml
@@ -47,6 +47,12 @@
             <groupId>com.sun.mail</groupId>
             <artifactId>javax.mail</artifactId>
         </dependency>
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a56bf6e4/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepository.java b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepository.java
index c60fa72..f85cbb6 100644
--- a/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepository.java
+++ b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepository.java
@@ -31,7 +31,7 @@ import org.apache.james.sieverepository.api.exception.QuotaNotFoundException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.sieverepository.api.exception.StorageException;
 import org.apache.james.sieverepository.api.exception.UserNotFoundException;
-
+import org.joda.time.DateTime;
 
 
 /**
@@ -59,7 +59,7 @@ public interface SieveRepository {
     
     InputStream getActive(String user) throws UserNotFoundException, ScriptNotFoundException, StorageException;
 
-    Date getActivationDateForActiveScript(String user) throws StorageException, UserNotFoundException, ScriptNotFoundException;
+    DateTime getActivationDateForActiveScript(String user) throws StorageException, UserNotFoundException, ScriptNotFoundException;
     
     void setActive(String user, String name) throws UserNotFoundException, ScriptNotFoundException, StorageException;
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a56bf6e4/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveDefaultRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveDefaultRepository.java b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveDefaultRepository.java
index 7999b74..bd2aebe 100644
--- a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveDefaultRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveDefaultRepository.java
@@ -39,6 +39,7 @@ import org.apache.james.sieverepository.api.exception.QuotaNotFoundException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.sieverepository.api.exception.StorageException;
 import org.apache.james.sieverepository.api.exception.UserNotFoundException;
+import org.joda.time.DateTime;
 
 /**
  * <code>SieveFileRepository</code> manages sieve scripts stored on the file system.
@@ -80,8 +81,8 @@ public class SieveDefaultRepository implements SieveRepository {
     }
 
     @Override
-    public Date getActivationDateForActiveScript(String user) throws StorageException, UserNotFoundException, ScriptNotFoundException {
-        return new Date(retrieveUserFile(user).lastModified());
+    public DateTime getActivationDateForActiveScript(String user) throws StorageException, UserNotFoundException, ScriptNotFoundException {
+        return new DateTime(retrieveUserFile(user).lastModified());
     }
 
     public File retrieveUserFile(String user) throws ScriptNotFoundException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a56bf6e4/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
index 1a0c7eb..a0b9cc0 100644
--- a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
@@ -32,6 +32,7 @@ import org.apache.james.sieverepository.api.exception.QuotaNotFoundException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.sieverepository.api.exception.StorageException;
 import org.apache.james.sieverepository.api.exception.UserNotFoundException;
+import org.joda.time.DateTime;
 
 import javax.inject.Inject;
 import java.io.BufferedOutputStream;
@@ -43,10 +44,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Scanner;
@@ -296,8 +295,9 @@ public class SieveFileRepository implements SieveRepository {
         return script;
     }
 
-    public Date getActivationDateForActiveScript(String user) throws StorageException, UserNotFoundException, ScriptNotFoundException {
-        return new Date(getActiveFile(user).lastModified());
+    @Override
+    public DateTime getActivationDateForActiveScript(String user) throws StorageException, UserNotFoundException, ScriptNotFoundException {
+        return new DateTime(getActiveFile(user).lastModified());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a56bf6e4/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
index 65c9dce..b1041fb 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
@@ -24,9 +24,9 @@ import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.jsieve.mailet.ResourceLocator;
+import org.joda.time.DateTime;
 
 import javax.mail.MessagingException;
-import java.util.Date;
 
 public class ResourceLocatorImpl implements ResourceLocator {
 
@@ -57,6 +57,6 @@ public class ResourceLocatorImpl implements ResourceLocator {
             username = uri.substring(0, uri.indexOf("@"));
         }
 
-        return new UserSieveInformation(sieveRepository.getActivationDateForActiveScript(username), new Date(), sieveRepository.getActive(username));
+        return new UserSieveInformation(sieveRepository.getActivationDateForActiveScript(username), DateTime.now(), sieveRepository.getActive(username));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a56bf6e4/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
index 24c8c36..250d3f1 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveMailetTest.java
@@ -44,6 +44,9 @@ import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.invocation.InvocationOnMock;
@@ -61,7 +64,6 @@ import javax.mail.internet.MimeMultipart;
 import javax.mail.util.ByteArrayDataSource;
 import java.io.IOException;
 import java.io.InputStream;
-import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Properties;
 
@@ -77,7 +79,11 @@ public class SieveMailetTest {
         }
     }
 
-    public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
+    public static DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-mm-dd HH:mm:ss");
+    public static final DateTime DATE_CLOSE = formatter.parseDateTime("2016-01-16 00:00:00");
+    public static final DateTime DATE_DEFAULT = formatter.parseDateTime("2016-01-14 00:00:00");
+    public static final DateTime DATE_NEW = formatter.parseDateTime("2016-01-18 00:00:00");
+    public static final DateTime DATE_OLD = formatter.parseDateTime("2011-01-18 00:00:00");
     public static final MailboxPath NOT_SELECTED_MAILBOX = new MailboxPath("#private", "receiver", "INBOX.not.selected");
     public static final MailboxPath SELECTED_MAILBOX = new MailboxPath("#private", "receiver", "INBOX.select");
     public static final MailboxPath INBOX = new MailboxPath("#private", "receiver", "INBOX");
@@ -89,12 +95,6 @@ public class SieveMailetTest {
     private FakeMailContext fakeMailContext;
     private FakeMailetConfig fakeMailetConfig;
 
-
-    public Date dateOld;
-    public Date dateNew;
-    public Date dateDefault;
-    public Date dateClose;
-
     @Before
     public void setUp() throws Exception {
         resourceLocator = mock(ResourceLocator.class);
@@ -103,11 +103,6 @@ public class SieveMailetTest {
         fakeMailContext = new FakeMailContext();
         fakeMailetConfig = new FakeMailetConfig("sieveMailet", fakeMailContext);
         sieveMailet = new SieveMailet(usersRepository, mailboxManager, resourceLocator, "INBOX");
-
-        dateOld = simpleDateFormat.parse("2011-01-18 00:00:00.0");
-        dateNew = simpleDateFormat.parse("2016-01-18 00:00:00.0");
-        dateDefault = simpleDateFormat.parse("2016-01-14 00:00:00.0");
-        dateClose = simpleDateFormat.parse("2016-01-16 00:00:00.0");
     }
 
     @Test
@@ -820,7 +815,7 @@ public class SieveMailetTest {
 
     @Test
     public void vacationShouldNotGenerateNotificationIfTooOld() throws Exception {
-        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReason.script", dateOld, dateNew);
+        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReason.script", DATE_OLD, DATE_NEW);
         MessageManager messageManager = prepareMessageManagerOn(INBOX);
         sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
@@ -830,7 +825,7 @@ public class SieveMailetTest {
 
     @Test
     public void vacationShouldNotCancelFileIntoActionIfNotExecuted() throws Exception {
-        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReasonAndFileInto.script", dateOld, dateNew);
+        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReasonAndFileInto.script", DATE_OLD, DATE_NEW);
         MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX);
         sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
@@ -840,7 +835,7 @@ public class SieveMailetTest {
 
     @Test
     public void vacationDaysParameterShouldFilterTooOldDates() throws Exception {
-        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysReason.script", dateDefault, dateNew);
+        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysReason.script", DATE_DEFAULT, DATE_NEW);
         MessageManager messageManager = prepareMessageManagerOn(INBOX);
         sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
@@ -850,7 +845,7 @@ public class SieveMailetTest {
 
     @Test
     public void vacationDaysParameterShouldKeepDatesInRange() throws Exception {
-        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysReason.script", dateClose, dateNew);
+        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysReason.script", DATE_CLOSE, DATE_NEW);
         MessageManager messageManager = prepareMessageManagerOn(INBOX);
         sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
@@ -860,7 +855,7 @@ public class SieveMailetTest {
 
     @Test
     public void vacationShouldNotCancelFileIntoActionIfExecuted() throws Exception {
-        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReasonAndFileInto.script", dateDefault, dateNew);
+        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReasonAndFileInto.script", DATE_DEFAULT, DATE_NEW);
         MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX);
         sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
@@ -870,7 +865,7 @@ public class SieveMailetTest {
 
     @Test
     public void vacationFromSubjectShouldWork() throws Exception {
-        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationSubjectFromReason.script", dateDefault, dateNew);
+        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationSubjectFromReason.script", DATE_DEFAULT, DATE_NEW);
         MessageManager messageManager = prepareMessageManagerOn(INBOX);
         sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
@@ -880,7 +875,7 @@ public class SieveMailetTest {
 
     @Test
     public void vacationDaysAddressesShouldWork() throws Exception {
-        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysAddressesReason.script", dateClose, dateNew);
+        prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysAddressesReason.script", DATE_CLOSE, DATE_NEW);
         MessageManager messageManager = prepareMessageManagerOn(INBOX);
         sieveMailet.service(createMail());
         verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
@@ -888,11 +883,11 @@ public class SieveMailetTest {
         assertThat(fakeMailContext.getSentMails()).containsExactly(new FakeMailContext.SentMail(new MailAddress("receiver@domain.com"), Lists.newArrayList(new MailAddress("sender@any.com")), null));
     }
 
-    private void prepareTestUsingScript(String script) throws Exception {
-        prepareTestUsingScriptAndDates(script, dateDefault, dateDefault);
+    private void prepareTestUsingScript(final String script) throws Exception {
+        prepareTestUsingScriptAndDates(script, DATE_DEFAULT, DATE_DEFAULT);
     }
 
-    private void prepareTestUsingScriptAndDates(String script, Date scriptCreationDate, Date scriptExecutionDate) throws Exception {
+    private void prepareTestUsingScriptAndDates(String script, DateTime scriptCreationDate, DateTime scriptExecutionDate) throws Exception {
         when(usersRepository.supportVirtualHosting()).thenReturn(false);
         when(resourceLocator.get("//receiver@localhost/sieve")).thenReturn(new ResourceLocator.UserSieveInformation(scriptCreationDate,
             scriptExecutionDate,


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org