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