Repository: james-project Updated Branches: refs/heads/master 6553f4b50 -> 8d9287ff9
JAMES-2132 MDN Original Message ID field is optional. Value is Compulsory As stated in https://tools.ietf.org/html/rfc8098#section-3.2.5: The Original-Message-ID field indicates the message-ID of the message for which the MDN is being issued. It is obtained from the Message-ID header field of the message for which the MDN is issued. This field MUST be present if and only if the original message contained a Message-ID header field. The syntax of the field is as follows: original-message-id-field = "Original-Message-ID" ":" msg-id The msg-id token is as specified in RFC-MSGFMT [RFC5322]. Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d4303c56 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d4303c56 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d4303c56 Branch: refs/heads/master Commit: d4303c56e4f089a8b0d1bc0ded7a2b066004b3c3 Parents: eb16708 Author: benwa <btell...@linagora.com> Authored: Mon Aug 28 17:31:00 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Thu Aug 31 18:00:19 2017 +0700 ---------------------------------------------------------------------- .../java/org/apache/james/mdn/MDNReport.java | 11 +++-- .../james/mdn/fields/OriginalMessageId.java | 10 ++--- .../org/apache/james/mdn/MDNFactoryTest.java | 46 ++++++++++---------- 3 files changed, 31 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/d4303c56/mdn/src/main/java/org/apache/james/mdn/MDNReport.java ---------------------------------------------------------------------- diff --git a/mdn/src/main/java/org/apache/james/mdn/MDNReport.java b/mdn/src/main/java/org/apache/james/mdn/MDNReport.java index 9dce948..1423074 100644 --- a/mdn/src/main/java/org/apache/james/mdn/MDNReport.java +++ b/mdn/src/main/java/org/apache/james/mdn/MDNReport.java @@ -82,13 +82,12 @@ public class MDNReport { public MDNReport build() { Preconditions.checkState(finalRecipientField.isPresent()); - Preconditions.checkState(originalMessageIdField.isPresent()); Preconditions.checkState(dispositionField.isPresent()); return new MDNReport(reportingUserAgentField, gatewayField, originalRecipientField, finalRecipientField.get(), - originalMessageIdField.get(), + originalMessageIdField, dispositionField.get()); } @@ -104,11 +103,11 @@ public class MDNReport { private final Optional<Gateway> gatewayField; private final Optional<OriginalRecipient> originalRecipientField; private final FinalRecipient finalRecipientField; - private final OriginalMessageId originalMessageIdField; + private final Optional<OriginalMessageId> originalMessageIdField; private final Disposition dispositionField; private MDNReport(Optional<ReportingUserAgent> reportingUserAgentField, Optional<Gateway> gatewayField, Optional<OriginalRecipient> originalRecipientField, - FinalRecipient finalRecipientField, OriginalMessageId originalMessageIdField, Disposition dispositionField) { + FinalRecipient finalRecipientField, Optional<OriginalMessageId> originalMessageIdField, Disposition dispositionField) { this.reportingUserAgentField = reportingUserAgentField; this.gatewayField = gatewayField; this.originalRecipientField = originalRecipientField; @@ -129,7 +128,7 @@ public class MDNReport { return finalRecipientField; } - public OriginalMessageId getOriginalMessageIdField() { + public Optional<OriginalMessageId> getOriginalMessageIdField() { return originalMessageIdField; } @@ -142,7 +141,7 @@ public class MDNReport { + gatewayField.map(value -> value.formattedValue() + LINE_END).orElse("") + originalRecipientField.map(value -> value.formattedValue() + LINE_END).orElse("") + finalRecipientField.formattedValue() + LINE_END - + originalMessageIdField.formattedValue() + LINE_END + + originalMessageIdField.map(value -> value.formattedValue() + LINE_END).orElse("") + dispositionField.formattedValue() + LINE_END; } http://git-wip-us.apache.org/repos/asf/james-project/blob/d4303c56/mdn/src/main/java/org/apache/james/mdn/fields/OriginalMessageId.java ---------------------------------------------------------------------- diff --git a/mdn/src/main/java/org/apache/james/mdn/fields/OriginalMessageId.java b/mdn/src/main/java/org/apache/james/mdn/fields/OriginalMessageId.java index f72d7cb..83666dc 100644 --- a/mdn/src/main/java/org/apache/james/mdn/fields/OriginalMessageId.java +++ b/mdn/src/main/java/org/apache/james/mdn/fields/OriginalMessageId.java @@ -19,21 +19,19 @@ package org.apache.james.mdn.fields; -import java.util.Optional; - public class OriginalMessageId implements Field { - private final Optional<String> originalMessageId; + private final String originalMessageId; - public OriginalMessageId(Optional<String> originalMessageId) { + public OriginalMessageId(String originalMessageId) { this.originalMessageId = originalMessageId; } - public Optional<String> getOriginalMessageId() { + public String getOriginalMessageId() { return originalMessageId; } @Override public String formattedValue() { - return "Original-Message-ID: " + originalMessageId.orElse(""); + return "Original-Message-ID: " + originalMessageId; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/d4303c56/mdn/src/test/java/org/apache/james/mdn/MDNFactoryTest.java ---------------------------------------------------------------------- diff --git a/mdn/src/test/java/org/apache/james/mdn/MDNFactoryTest.java b/mdn/src/test/java/org/apache/james/mdn/MDNFactoryTest.java index 0cd3cde..9749d81 100644 --- a/mdn/src/test/java/org/apache/james/mdn/MDNFactoryTest.java +++ b/mdn/src/test/java/org/apache/james/mdn/MDNFactoryTest.java @@ -58,7 +58,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -87,7 +87,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -116,7 +116,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -145,7 +145,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -174,7 +174,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -203,7 +203,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -232,7 +232,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -261,7 +261,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -289,7 +289,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -316,7 +316,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -342,7 +342,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -370,7 +370,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -398,7 +398,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -427,7 +427,7 @@ public class MDNFactoryTest { Optional.empty())) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -455,7 +455,7 @@ public class MDNFactoryTest { "UA_name", Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -468,7 +468,7 @@ public class MDNFactoryTest { } @Test - public void generateMDNReportShouldFormatNullOriginalMessageId() { + public void generateMDNReportShouldFormatWhenMissingOriginalMessageId() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Automatic) @@ -483,7 +483,6 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.empty())) .dispositionField(disposition) .build() .formattedValue(); @@ -492,7 +491,6 @@ public class MDNFactoryTest { .isEqualTo("Reporting-UA: UA_name; UA_product\r\n" + "Original-Recipient: rfc822; originalRecipient\r\n" + "Final-Recepient: rfc822; final_recipient\r\n" + - "Original-Message-ID: \r\n" + "Disposition: manual-action/MDN-sent-automatically;deleted/error,failed\r\n"); } @@ -526,7 +524,7 @@ public class MDNFactoryTest { .gatewayField(new Gateway("host.com")) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -557,7 +555,7 @@ public class MDNFactoryTest { .gatewayField(new Gateway("postal", "5 rue Charles mercier")) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -587,7 +585,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(new OriginalRecipient("roomNumber", "385")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -616,7 +614,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("final_recipient")) .originalRecipientField(OriginalRecipient.ofUnknown("#$%*")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -645,7 +643,7 @@ public class MDNFactoryTest { Optional.of("UA_product"))) .finalRecipientField(new FinalRecipient("roomNumber", "781")) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build() .formattedValue(); @@ -675,7 +673,7 @@ public class MDNFactoryTest { "UA_name", Optional.of("UA_product"))) .originalRecipientField(new OriginalRecipient("originalRecipient")) - .originalMessageIdField(new OriginalMessageId(Optional.of("original_message_id"))) + .originalMessageIdField(new OriginalMessageId("original_message_id")) .dispositionField(disposition) .build(); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org