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

Reply via email to