Switch to Java Date/Time API for mail related code
Change-Id: I2b13d56ac8ee5b2ffc9b20ec43a6b525d4491889
This commit is contained in:
@@ -23,8 +23,8 @@ import com.google.gerrit.extensions.api.changes.ReviewInput.CommentInput;
|
||||
import com.google.gerrit.extensions.client.Comment;
|
||||
import com.google.gerrit.extensions.client.Side;
|
||||
import com.google.gerrit.server.mail.receive.MailMessage;
|
||||
import java.time.Instant;
|
||||
import java.util.HashMap;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.Ignore;
|
||||
|
||||
@Ignore
|
||||
@@ -36,7 +36,7 @@ public class AbstractMailIT extends AbstractDaemonTest {
|
||||
b.from(user.emailAddress);
|
||||
b.addTo(user.emailAddress); // Not evaluated
|
||||
b.subject("");
|
||||
b.dateReceived(new DateTime());
|
||||
b.dateReceived(Instant.now());
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ import com.google.auto.value.AutoValue;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import org.joda.time.DateTime;
|
||||
import java.time.Instant;
|
||||
|
||||
/**
|
||||
* A simplified representation of an RFC 2045-2047 mime email message used for representing received
|
||||
@@ -40,7 +40,7 @@ public abstract class MailMessage {
|
||||
|
||||
public abstract ImmutableList<Address> cc();
|
||||
// Metadata
|
||||
public abstract DateTime dateReceived();
|
||||
public abstract Instant dateReceived();
|
||||
|
||||
public abstract ImmutableList<String> additionalHeaders();
|
||||
// Content
|
||||
@@ -84,7 +84,7 @@ public abstract class MailMessage {
|
||||
return this;
|
||||
}
|
||||
|
||||
public abstract Builder dateReceived(DateTime val);
|
||||
public abstract Builder dateReceived(Instant instant);
|
||||
|
||||
public abstract ImmutableList.Builder<String> additionalHeadersBuilder();
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ import org.apache.james.mime4j.dom.Multipart;
|
||||
import org.apache.james.mime4j.dom.TextBody;
|
||||
import org.apache.james.mime4j.dom.address.Mailbox;
|
||||
import org.apache.james.mime4j.message.DefaultMessageBuilder;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
/** Parses raw email content received through POP3 or IMAP into an internal {@link MailMessage}. */
|
||||
public class RawMailParser {
|
||||
@@ -66,7 +65,7 @@ public class RawMailParser {
|
||||
if (mimeMessage.getSubject() != null) {
|
||||
messageBuilder.subject(mimeMessage.getSubject());
|
||||
}
|
||||
messageBuilder.dateReceived(new DateTime(mimeMessage.getDate()));
|
||||
messageBuilder.dateReceived(mimeMessage.getDate().toInstant());
|
||||
|
||||
// Add From, To and Cc
|
||||
if (mimeMessage.getFrom() != null && mimeMessage.getFrom().size() > 0) {
|
||||
|
||||
@@ -20,9 +20,9 @@ import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Comment;
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.Ignore;
|
||||
|
||||
@Ignore
|
||||
@@ -85,7 +85,7 @@ public class AbstractParserTest {
|
||||
MailMessage.Builder b = MailMessage.builder();
|
||||
b.id("id");
|
||||
b.from(new Address("Foo Bar", "foo@bar.com"));
|
||||
b.dateReceived(new DateTime());
|
||||
b.dateReceived(Instant.now());
|
||||
b.subject("");
|
||||
return b;
|
||||
}
|
||||
|
||||
@@ -20,8 +20,10 @@ import static com.google.gerrit.server.mail.MetadataName.toHeaderWithDelimiter;
|
||||
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import com.google.gerrit.server.mail.MetadataName;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.ZoneOffset;
|
||||
import org.junit.Test;
|
||||
|
||||
public class MetadataParserTest {
|
||||
@@ -31,7 +33,7 @@ public class MetadataParserTest {
|
||||
// email headers of the message.
|
||||
MailMessage.Builder b = MailMessage.builder();
|
||||
b.id("");
|
||||
b.dateReceived(new DateTime());
|
||||
b.dateReceived(Instant.now());
|
||||
b.subject("");
|
||||
|
||||
b.addAdditionalHeader(toHeaderWithDelimiter(MetadataName.CHANGE_NUMBER) + "123");
|
||||
@@ -48,8 +50,11 @@ public class MetadataParserTest {
|
||||
assertThat(meta.changeNumber).isEqualTo(123);
|
||||
assertThat(meta.patchSet).isEqualTo(1);
|
||||
assertThat(meta.messageType).isEqualTo("comment");
|
||||
assertThat(meta.timestamp.getTime())
|
||||
.isEqualTo(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC).getMillis());
|
||||
assertThat(meta.timestamp.toInstant())
|
||||
.isEqualTo(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -58,7 +63,7 @@ public class MetadataParserTest {
|
||||
// the text body of the message.
|
||||
MailMessage.Builder b = MailMessage.builder();
|
||||
b.id("");
|
||||
b.dateReceived(new DateTime());
|
||||
b.dateReceived(Instant.now());
|
||||
b.subject("");
|
||||
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
@@ -77,8 +82,11 @@ public class MetadataParserTest {
|
||||
assertThat(meta.changeNumber).isEqualTo(123);
|
||||
assertThat(meta.patchSet).isEqualTo(1);
|
||||
assertThat(meta.messageType).isEqualTo("comment");
|
||||
assertThat(meta.timestamp.getTime())
|
||||
.isEqualTo(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC).getMillis());
|
||||
assertThat(meta.timestamp.toInstant())
|
||||
.isEqualTo(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -87,7 +95,7 @@ public class MetadataParserTest {
|
||||
// the HTML body of the message.
|
||||
MailMessage.Builder b = MailMessage.builder();
|
||||
b.id("");
|
||||
b.dateReceived(new DateTime());
|
||||
b.dateReceived(Instant.now());
|
||||
b.subject("");
|
||||
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
@@ -111,7 +119,10 @@ public class MetadataParserTest {
|
||||
assertThat(meta.changeNumber).isEqualTo(123);
|
||||
assertThat(meta.patchSet).isEqualTo(1);
|
||||
assertThat(meta.messageType).isEqualTo("comment");
|
||||
assertThat(meta.timestamp.getTime())
|
||||
.isEqualTo(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC).getMillis());
|
||||
assertThat(meta.timestamp.toInstant())
|
||||
.isEqualTo(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public class RawMailParserTest extends GerritBaseTests {
|
||||
assertThat(have.to()).isEqualTo(want.to());
|
||||
assertThat(have.from()).isEqualTo(want.from());
|
||||
assertThat(have.cc()).isEqualTo(want.cc());
|
||||
assertThat(have.dateReceived().getMillis()).isEqualTo(want.dateReceived().getMillis());
|
||||
assertThat(have.dateReceived()).isEqualTo(want.dateReceived());
|
||||
assertThat(have.additionalHeaders()).isEqualTo(want.additionalHeaders());
|
||||
assertThat(have.subject()).isEqualTo(want.subject());
|
||||
assertThat(have.textContent()).isEqualTo(want.textContent());
|
||||
|
||||
@@ -16,8 +16,9 @@ package com.google.gerrit.server.mail.receive.data;
|
||||
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import com.google.gerrit.server.mail.receive.MailMessage;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.ZoneOffset;
|
||||
import org.junit.Ignore;
|
||||
|
||||
/**
|
||||
@@ -82,7 +83,10 @@ public class AttachmentMessage extends RawMailMessage {
|
||||
.htmlContent("<div dir=\"ltr\">Contains unwanted attachment</div>")
|
||||
.subject("Test Subject")
|
||||
.addAdditionalHeader("MIME-Version: 1.0")
|
||||
.dateReceived(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC));
|
||||
.dateReceived(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
return expect.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,8 +16,9 @@ package com.google.gerrit.server.mail.receive.data;
|
||||
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import com.google.gerrit.server.mail.receive.MailMessage;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.ZoneOffset;
|
||||
import org.junit.Ignore;
|
||||
|
||||
/** Tests parsing a Base64 encoded subject. */
|
||||
@@ -58,7 +59,10 @@ public class Base64HeaderMessage extends RawMailMessage {
|
||||
.addTo(new Address("ekempin", "ekempin@google.com"))
|
||||
.textContent(textContent)
|
||||
.subject("\uD83D\uDE1B test")
|
||||
.dateReceived(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC));
|
||||
.dateReceived(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
return expect.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,8 +16,9 @@ package com.google.gerrit.server.mail.receive.data;
|
||||
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import com.google.gerrit.server.mail.receive.MailMessage;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.ZoneOffset;
|
||||
import org.junit.Ignore;
|
||||
|
||||
/** Tests a message containing mime/alternative (text + html) content. */
|
||||
@@ -98,7 +99,10 @@ public class HtmlMimeMessage extends RawMailMessage {
|
||||
.htmlContent(unencodedHtmlContent)
|
||||
.subject("Change in gerrit[master]: Implement receiver class structure and bindings")
|
||||
.addAdditionalHeader("MIME-Version: 1.0")
|
||||
.dateReceived(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC));
|
||||
.dateReceived(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
return expect.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,9 @@ package com.google.gerrit.server.mail.receive.data;
|
||||
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import com.google.gerrit.server.mail.receive.MailMessage;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.ZoneOffset;
|
||||
import org.junit.Ignore;
|
||||
|
||||
/** Tests that non-UTF8 encodings are handled correctly. */
|
||||
@@ -62,7 +63,10 @@ public class NonUTF8Message extends RawMailMessage {
|
||||
.addTo(new Address("ekempin", "ekempin@google.com"))
|
||||
.textContent(textContent)
|
||||
.subject("\uD83D\uDE1B test")
|
||||
.dateReceived(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC));
|
||||
.dateReceived(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
return expect.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,8 +16,9 @@ package com.google.gerrit.server.mail.receive.data;
|
||||
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import com.google.gerrit.server.mail.receive.MailMessage;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.ZoneOffset;
|
||||
import org.junit.Ignore;
|
||||
|
||||
/** Tests parsing a quoted printable encoded subject */
|
||||
@@ -59,7 +60,10 @@ public class QuotedPrintableHeaderMessage extends RawMailMessage {
|
||||
.addTo(new Address("ekempin", "ekempin@google.com"))
|
||||
.textContent(textContent)
|
||||
.subject("âme vulgaire")
|
||||
.dateReceived(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC));
|
||||
.dateReceived(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant());
|
||||
return expect.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,8 +16,9 @@ package com.google.gerrit.server.mail.receive.data;
|
||||
|
||||
import com.google.gerrit.server.mail.Address;
|
||||
import com.google.gerrit.server.mail.receive.MailMessage;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.ZoneOffset;
|
||||
import org.junit.Ignore;
|
||||
|
||||
/** Tests parsing a simple text message with different headers. */
|
||||
@@ -124,7 +125,10 @@ public class SimpleTextMessage extends RawMailMessage {
|
||||
.addCc(new Address("Patrick Hiesel", "hiesel@google.com"))
|
||||
.textContent(textContent)
|
||||
.subject("Change in gerrit[master]: (Re)enable voting buttons for merged changes")
|
||||
.dateReceived(new DateTime(2016, 10, 25, 9, 11, 35, 0, DateTimeZone.UTC))
|
||||
.dateReceived(
|
||||
LocalDateTime.of(2016, Month.OCTOBER, 25, 9, 11, 35)
|
||||
.atOffset(ZoneOffset.UTC)
|
||||
.toInstant())
|
||||
.addAdditionalHeader(
|
||||
"Authentication-Results: mx.google.com; dkim=pass header.i=@google.com;")
|
||||
.addAdditionalHeader(
|
||||
|
||||
Reference in New Issue
Block a user