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 2018/07/31 02:32:35 UTC

[18/24] james-project git commit: JAMES-2486 Drop joda-time

JAMES-2486 Drop joda-time


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

Branch: refs/heads/master
Commit: 1c69d3708503d7d1481e690f3a378b1c7d58d924
Parents: c4e0467
Author: Gautier DI FOLCO <gd...@linagora.com>
Authored: Thu Jul 19 11:31:00 2018 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Jul 31 09:25:23 2018 +0700

----------------------------------------------------------------------
 pom.xml                                         |  6 -----
 server/data/data-api/pom.xml                    |  4 ---
 .../sieverepository/api/SieveRepository.java    |  4 +--
 .../cassandra/CassandraActiveScriptDAO.java     |  4 ++-
 .../cassandra/CassandraSieveRepository.java     |  4 +--
 .../sieve/cassandra/model/ActiveScriptInfo.java | 11 ++++----
 .../file/SieveDefaultRepository.java            |  8 +++---
 .../file/SieveFileRepository.java               |  8 +++---
 .../lib/AbstractSieveRepositoryTest.java        |  6 +++--
 server/mailet/mailets/pom.xml                   |  4 ---
 .../transport/mailets/jsieve/ActionContext.java |  6 ++---
 .../mailets/jsieve/ResourceLocator.java         | 14 +++++-----
 .../mailets/jsieve/SieveMailAdapter.java        | 12 ++++-----
 .../mailets/jsieve/VacationAction.java          |  8 ++++--
 .../james/transport/mailets/DSNBounceTest.java  | 28 +++++++++++---------
 .../mailets/delivery/SieveIntegrationTest.java  | 15 +++++------
 .../redirect/NotifyMailetsMessageTest.java      |  5 ++--
 17 files changed, 72 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b453fec..8180a56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -634,7 +634,6 @@
         <jetty.version>9.4.7.v20170914</jetty.version>
         <testcontainers.version>1.8.1</testcontainers.version>
         <metrics.version>3.2.6</metrics.version>
-        <joda.version>2.9.4</joda.version>
         <assertj.version>3.3.0</assertj.version>
         <es.version>2.2.1</es.version>
         <es-reporter.version>2.2.0</es-reporter.version>
@@ -1949,11 +1948,6 @@
                 <version>1.1.0</version>
             </dependency>
             <dependency>
-                <groupId>joda-time</groupId>
-                <artifactId>joda-time</artifactId>
-                <version>${joda.version}</version>
-            </dependency>
-            <dependency>
                 <groupId>junit</groupId>
                 <artifactId>junit</artifactId>
                 <version>${junit.version}</version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/data/data-api/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-api/pom.xml b/server/data/data-api/pom.xml
index cfbd462..36f68bd 100644
--- a/server/data/data-api/pom.xml
+++ b/server/data/data-api/pom.xml
@@ -59,10 +59,6 @@
             <artifactId>javax.mail</artifactId>
         </dependency>
         <dependency>
-            <groupId>joda-time</groupId>
-            <artifactId>joda-time</artifactId>
-        </dependency>
-        <dependency>
             <groupId>nl.jqno.equalsverifier</groupId>
             <artifactId>equalsverifier</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/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 ea50969..f9d8c0b 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
@@ -21,6 +21,7 @@
 package org.apache.james.sieverepository.api;
 
 import java.io.InputStream;
+import java.time.ZonedDateTime;
 import java.util.List;
 
 import org.apache.james.core.User;
@@ -29,7 +30,6 @@ import org.apache.james.sieverepository.api.exception.IsActiveException;
 import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.sieverepository.api.exception.StorageException;
-import org.joda.time.DateTime;
 
 
 /**
@@ -56,7 +56,7 @@ public interface SieveRepository extends SieveQuotaRepository {
     
     List<ScriptSummary> listScripts(User user) throws StorageException;
 
-    DateTime getActivationDateForActiveScript(User user) throws StorageException, ScriptNotFoundException;
+    ZonedDateTime getActivationDateForActiveScript(User user) throws StorageException, ScriptNotFoundException;
 
     InputStream getActive(User user) throws ScriptNotFoundException, StorageException;
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAO.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAO.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAO.java
index b3773f9..47c598d 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAO.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAO.java
@@ -29,6 +29,8 @@ import static org.apache.james.sieve.cassandra.tables.CassandraSieveActiveTable.
 import static org.apache.james.sieve.cassandra.tables.CassandraSieveActiveTable.TABLE_NAME;
 import static org.apache.james.sieve.cassandra.tables.CassandraSieveActiveTable.USER_NAME;
 
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
 import java.util.Date;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
@@ -70,7 +72,7 @@ public class CassandraActiveScriptDAO {
                 .setString(USER_NAME, user.asString()))
             .thenApply(rowOptional -> rowOptional.map(row -> new ActiveScriptInfo(
                 new ScriptName(row.getString(SCRIPT_NAME)),
-                row.getTimestamp(DATE))));
+                ZonedDateTime.ofInstant(row.getTimestamp(DATE).toInstant(), ZoneOffset.UTC))));
     }
 
     public CompletableFuture<Void> unactivate(User user) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
index 56a7563..a3874ee 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
@@ -21,6 +21,7 @@ package org.apache.james.sieve.cassandra;
 
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
+import java.time.ZonedDateTime;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
@@ -43,7 +44,6 @@ import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 import org.apache.james.sieverepository.api.exception.QuotaNotFoundException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.util.CompletableFutureUtil;
-import org.joda.time.DateTime;
 
 public class CassandraSieveRepository implements SieveRepository {
 
@@ -59,7 +59,7 @@ public class CassandraSieveRepository implements SieveRepository {
     }
 
     @Override
-    public DateTime getActivationDateForActiveScript(User user) throws ScriptNotFoundException {
+    public ZonedDateTime getActivationDateForActiveScript(User user) throws ScriptNotFoundException {
         return cassandraActiveScriptDAO.getActiveSctiptInfo(user).join()
             .orElseThrow(ScriptNotFoundException::new)
             .getActivationDate();

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/ActiveScriptInfo.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/ActiveScriptInfo.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/ActiveScriptInfo.java
index 051d7a4..6f975ef 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/ActiveScriptInfo.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/ActiveScriptInfo.java
@@ -19,26 +19,25 @@
 
 package org.apache.james.sieve.cassandra.model;
 
-import java.util.Date;
+import java.time.ZonedDateTime;
 
 import org.apache.james.sieverepository.api.ScriptName;
-import org.joda.time.DateTime;
 
 public class ActiveScriptInfo {
 
     private final ScriptName name;
-    private final DateTime activationDate;
+    private final ZonedDateTime activationDate;
 
-    public ActiveScriptInfo(ScriptName name, Date date) {
+    public ActiveScriptInfo(ScriptName name, ZonedDateTime activationDate) {
         this.name = name;
-        this.activationDate = new DateTime(date);
+        this.activationDate = activationDate;
     }
 
     public ScriptName getName() {
         return name;
     }
 
-    public DateTime getActivationDate() {
+    public ZonedDateTime getActivationDate() {
         return activationDate;
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/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 bfa8f64..8155bc8 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
@@ -24,6 +24,9 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.InputStream;
+import java.time.Instant;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
 import java.util.List;
 
 import javax.inject.Inject;
@@ -41,7 +44,6 @@ import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 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.joda.time.DateTime;
 
 /**
  * <code>SieveFileRepository</code> manages sieve scripts stored on the file system.
@@ -83,8 +85,8 @@ public class SieveDefaultRepository implements SieveRepository {
     }
 
     @Override
-    public DateTime getActivationDateForActiveScript(User user) throws StorageException, ScriptNotFoundException {
-        return new DateTime(retrieveUserFile(user).lastModified());
+    public ZonedDateTime getActivationDateForActiveScript(User user) throws StorageException, ScriptNotFoundException {
+        return ZonedDateTime.ofInstant(Instant.ofEpochMilli(retrieveUserFile(user).lastModified()), ZoneOffset.UTC);
     }
 
     public File retrieveUserFile(User user) throws ScriptNotFoundException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/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 b544ef5..d856dcd 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
@@ -29,6 +29,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
+import java.time.Instant;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -51,7 +54,6 @@ import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 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.joda.time.DateTime;
 
 /**
  * <code>SieveFileRepository</code> manages sieve scripts stored on the file system.
@@ -272,8 +274,8 @@ public class SieveFileRepository implements SieveRepository {
     }
 
     @Override
-    public DateTime getActivationDateForActiveScript(User user) throws StorageException, ScriptNotFoundException {
-        return new DateTime(getActiveFile(user).lastModified());
+    public ZonedDateTime getActivationDateForActiveScript(User user) throws StorageException, ScriptNotFoundException {
+        return ZonedDateTime.ofInstant(Instant.ofEpochMilli(getActiveFile(user).lastModified()), ZoneOffset.UTC);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
index a057d3a..266d8b8 100644
--- a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
@@ -23,6 +23,9 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
+import java.time.Instant;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.james.core.User;
@@ -36,7 +39,6 @@ import org.apache.james.sieverepository.api.exception.IsActiveException;
 import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 import org.apache.james.sieverepository.api.exception.QuotaNotFoundException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
-import org.joda.time.DateTime;
 import org.junit.Test;
 
 public abstract class AbstractSieveRepositoryTest {
@@ -72,7 +74,7 @@ public abstract class AbstractSieveRepositoryTest {
         sieveRepository.putScript(USER, SCRIPT_NAME, SCRIPT_CONTENT);
         sieveRepository.setActive(USER, SCRIPT_NAME);
         assertThat(sieveRepository.getActivationDateForActiveScript(USER)).isNotNull();
-        assertThat(sieveRepository.getActivationDateForActiveScript(USER)).isNotEqualTo(new DateTime(0L));
+        assertThat(sieveRepository.getActivationDateForActiveScript(USER)).isNotEqualTo(ZonedDateTime.ofInstant(Instant.ofEpochMilli(0L), ZoneOffset.UTC));
     }
 
     @Test(expected = ScriptNotFoundException.class)

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/pom.xml
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/pom.xml b/server/mailet/mailets/pom.xml
index 9e65f80..5a3f3cc 100644
--- a/server/mailet/mailets/pom.xml
+++ b/server/mailet/mailets/pom.xml
@@ -205,10 +205,6 @@
             <artifactId>javax.inject</artifactId>
         </dependency>
         <dependency>
-            <groupId>joda-time</groupId>
-            <artifactId>joda-time</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
index e21d0ed..062772e 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.transport.mailets.jsieve;
 
+import java.time.ZonedDateTime;
 import java.util.Collection;
 
 import javax.mail.MessagingException;
@@ -25,7 +26,6 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.MailAddress;
 import org.apache.mailet.Mail;
-import org.joda.time.DateTime;
 
 /**
  * Provides context for action execution.
@@ -35,12 +35,12 @@ public interface ActionContext {
     /**
      * @return Date the script was activated
      */
-    DateTime getScriptActivationDate();
+    ZonedDateTime getScriptActivationDate();
 
     /**
      * @return Date the script is currently interpreted
      */
-    DateTime getScriptInterpretationDate();
+    ZonedDateTime getScriptInterpretationDate();
 
     /**
      * @return Recipient receiving the given eMail

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
index cdb310c..68c306b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
@@ -19,32 +19,32 @@
 package org.apache.james.transport.mailets.jsieve;
 
 import java.io.InputStream;
+import java.time.ZonedDateTime;
 
 import org.apache.james.core.MailAddress;
 import org.apache.james.core.User;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
-import org.joda.time.DateTime;
 
 public class ResourceLocator {
 
     public static class UserSieveInformation {
-        private DateTime scriptActivationDate;
-        private DateTime scriptInterpretationDate;
+        private ZonedDateTime scriptActivationDate;
+        private ZonedDateTime scriptInterpretationDate;
         private InputStream scriptContent;
 
-        public UserSieveInformation(DateTime scriptActivationDate, DateTime scriptInterpretationDate, InputStream scriptContent) {
+        public UserSieveInformation(ZonedDateTime scriptActivationDate, ZonedDateTime scriptInterpretationDate, InputStream scriptContent) {
             this.scriptActivationDate = scriptActivationDate;
             this.scriptInterpretationDate = scriptInterpretationDate;
             this.scriptContent = scriptContent;
         }
 
-        public DateTime getScriptActivationDate() {
+        public ZonedDateTime getScriptActivationDate() {
             return scriptActivationDate;
         }
 
-        public DateTime getScriptInterpretationDate() {
+        public ZonedDateTime getScriptInterpretationDate() {
             return scriptInterpretationDate;
         }
 
@@ -63,7 +63,7 @@ public class ResourceLocator {
 
     public UserSieveInformation get(MailAddress mailAddress) throws Exception {
         User username = retrieveUsername(mailAddress);
-        return new UserSieveInformation(sieveRepository.getActivationDateForActiveScript(username), DateTime.now(), sieveRepository.getActive(username));
+        return new UserSieveInformation(sieveRepository.getActivationDateForActiveScript(username), ZonedDateTime.now(), sieveRepository.getActive(username));
     }
 
     private User retrieveUsername(MailAddress mailAddress) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
index 82b236d..ed0feba 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.transport.mailets.jsieve;
 
+import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -51,7 +52,6 @@ import org.apache.jsieve.mail.SieveMailException;
 import org.apache.jsieve.mail.optional.EnvelopeAccessors;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailetContext;
-import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -82,8 +82,8 @@ public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionC
     private final ActionDispatcher dispatcher;
     
     private final Poster poster;
-    private final DateTime scriptActivationDate;
-    private final DateTime scriptInterpretationDate;
+    private final ZonedDateTime scriptActivationDate;
+    private final ZonedDateTime scriptInterpretationDate;
     private final MailAddress recipient;
 
     /**
@@ -93,7 +93,7 @@ public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionC
      * @param aMailetContext
      */
     public SieveMailAdapter(final Mail aMail, final MailetContext aMailetContext, final ActionDispatcher dispatcher, final Poster poster,
-                            DateTime scriptActivationDate, DateTime scriptInterpretationDate, MailAddress recipient) {
+                            ZonedDateTime scriptActivationDate, ZonedDateTime scriptInterpretationDate, MailAddress recipient) {
         this.poster = poster;
         this.dispatcher = dispatcher;
         this.scriptInterpretationDate = scriptInterpretationDate;
@@ -104,12 +104,12 @@ public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionC
     }
 
     @Override
-    public DateTime getScriptActivationDate() {
+    public ZonedDateTime getScriptActivationDate() {
         return scriptActivationDate;
     }
 
     @Override
-    public DateTime getScriptInterpretationDate() {
+    public ZonedDateTime getScriptInterpretationDate() {
         return scriptInterpretationDate;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
index 7fe9f3a..b3847b9 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.transport.mailets.jsieve;
 
+import java.time.temporal.ChronoUnit;
 import java.util.Enumeration;
 import java.util.Set;
 
@@ -29,7 +30,6 @@ import org.apache.james.core.MailAddress;
 import org.apache.jsieve.mail.Action;
 import org.apache.jsieve.mail.optional.ActionVacation;
 import org.apache.mailet.Mail;
-import org.joda.time.Days;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,7 +43,11 @@ public class VacationAction implements MailAction {
     @Override
     public void execute(Action action, Mail mail, ActionContext context) throws MessagingException {
         ActionVacation actionVacation = (ActionVacation) action;
-        int dayDifference = Days.daysBetween(context.getScriptActivationDate(), context.getScriptInterpretationDate()).getDays();
+        int dayDifference = Long.valueOf(
+            ChronoUnit.DAYS.between(
+                context.getScriptActivationDate().toLocalDate(),
+                context.getScriptInterpretationDate().toLocalDate()))
+            .intValue();
         if (isStillInVacation(actionVacation, dayDifference)) {
             if (isValidForReply(mail, actionVacation, context)) {
                 if (!isMailingList(mail)) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java
index def7677..002c0d6 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java
@@ -26,6 +26,9 @@ import static org.mockito.Mockito.when;
 
 import java.net.InetAddress;
 import java.nio.charset.StandardCharsets;
+import java.text.DateFormat;
+import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 import java.util.TimeZone;
 
@@ -49,7 +52,6 @@ import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailContext.SentMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
-import org.joda.time.DateTime;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -131,7 +133,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .build();
 
         dsnBounce.service(mail);
@@ -162,7 +164,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .build();
 
         dsnBounce.service(mail);
@@ -203,7 +205,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .build();
 
         dsnBounce.service(mail);
@@ -242,7 +244,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .remoteAddr("remoteHost")
                 .build();
 
@@ -281,7 +283,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .remoteAddr("remoteHost")
                 .build();
 
@@ -304,7 +306,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .remoteAddr("remoteHost")
                 .build();
 
@@ -328,7 +330,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .remoteAddr("remoteHost")
                 .build();
 
@@ -353,7 +355,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .build();
 
         dsnBounce.service(mail);
@@ -385,7 +387,7 @@ public class DSNBounceTest {
             .sender(senderMailAddress)
             .name(MAILET_NAME)
             .recipient("recipient@domain.com")
-            .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+            .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
             .mimeMessage(mimeMessage)
             .build();
         MimeMessage mimeMessageCopy = new MimeMessage(mimeMessage);
@@ -423,7 +425,7 @@ public class DSNBounceTest {
                     .setSubject("mySubject"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .build();
 
         dsnBounce.service(mail);
@@ -458,7 +460,7 @@ public class DSNBounceTest {
                     .setText("My content"))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .build();
 
         dsnBounce.service(mail);
@@ -489,7 +491,7 @@ public class DSNBounceTest {
                     .addHeader(RFC2822Headers.DATE, expectedDate))
                 .name(MAILET_NAME)
                 .recipient("recipient@domain.com")
-                .lastUpdated(DateTime.parse("2016-09-08T14:25:52.000Z").toDate())
+                .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
                 .build();
 
         dsnBounce.service(mail);

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
index faad032..66ac1cb 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.io.IOException;
+import java.time.ZonedDateTime;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
@@ -41,9 +42,6 @@ import org.apache.mailet.Mail;
 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.slf4j.Logger;
@@ -53,11 +51,10 @@ public class SieveIntegrationTest {
     public static final String LOCAL_PART = "receiver";
     public static final String RECEIVER_DOMAIN_COM = LOCAL_PART + "@domain.com";
 
-    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 ZonedDateTime DATE_CLOSE = ZonedDateTime.parse("2016-01-16T00:00:00Z");
+    public static final ZonedDateTime DATE_DEFAULT = ZonedDateTime.parse("2016-01-14T00:00:00Z");
+    public static final ZonedDateTime DATE_NEW = ZonedDateTime.parse("2016-01-18T00:00:00Z");
+    public static final ZonedDateTime DATE_OLD = ZonedDateTime.parse("2011-01-18T00:00:00Z");
     public static final MailboxPath NOT_SELECTED_MAILBOX = MailboxPath.forUser(LOCAL_PART, "INBOX.not.selected");
     public static final MailboxPath SELECTED_MAILBOX = MailboxPath.forUser(LOCAL_PART, "INBOX.select");
     public static final MailboxPath INBOX = MailboxPath.forUser(LOCAL_PART, "INBOX");
@@ -932,7 +929,7 @@ public class SieveIntegrationTest {
         prepareTestUsingScriptAndDates(script, DATE_DEFAULT, DATE_DEFAULT);
     }
 
-    private void prepareTestUsingScriptAndDates(String script, DateTime scriptCreationDate, DateTime scriptExecutionDate) throws Exception {
+    private void prepareTestUsingScriptAndDates(String script, ZonedDateTime scriptCreationDate, ZonedDateTime scriptExecutionDate) throws Exception {
         when(usersRepository.supportVirtualHosting()).thenReturn(false);
         when(usersRepository.getUser(new MailAddress(LOCAL_PART + "@localhost"))).thenReturn(LOCAL_PART);
         when(usersRepository.getUser(new MailAddress(LOCAL_PART + "@domain.com"))).thenReturn(LOCAL_PART);

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c69d370/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetsMessageTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetsMessageTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetsMessageTest.java
index 3cb08d7..235d65e 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetsMessageTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetsMessageTest.java
@@ -23,6 +23,8 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.time.Instant;
+import java.util.Date;
 import java.util.Optional;
 import java.util.TimeZone;
 
@@ -34,7 +36,6 @@ import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.util.MimeMessageUtil;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
-import org.joda.time.DateTime;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -94,7 +95,7 @@ public class NotifyMailetsMessageTest {
     @Test
     public void generateMessageShouldAddSentDateWhenMimeMessageAsSome() throws Exception {
         MimeMessage message = MimeMessageUtil.defaultMimeMessage();
-        message.setSentDate(DateTime.parse("2016-09-08T14:25:52.000Z").toDate());
+        message.setSentDate(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")));
         FakeMail mail = FakeMail.from(message);
 
         String generateMessage = new NotifyMailetsMessage().generateMessage("my message", mail);


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