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 2017/09/01 01:18:38 UTC

[25/27] james-project git commit: JAMES-2132 More functional style on MDN reports formatting

JAMES-2132 More functional style on MDN reports formatting


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

Branch: refs/heads/master
Commit: 599bec32c02a181f3713c0849d15dc0f10974609
Parents: 1f443cd
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 30 16:15:53 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri Sep 1 08:16:14 2017 +0700

----------------------------------------------------------------------
 mdn/pom.xml                                     |  4 ++
 .../java/org/apache/james/mdn/MDNReport.java    | 47 +++++++++-----------
 2 files changed, 26 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/599bec32/mdn/pom.xml
----------------------------------------------------------------------
diff --git a/mdn/pom.xml b/mdn/pom.xml
index 7eb7d4b..9e8441a 100644
--- a/mdn/pom.xml
+++ b/mdn/pom.xml
@@ -34,6 +34,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.james</groupId>
+            <artifactId>james-server-util-java8</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/599bec32/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 9682485..2d84c86 100644
--- a/mdn/src/main/java/org/apache/james/mdn/MDNReport.java
+++ b/mdn/src/main/java/org/apache/james/mdn/MDNReport.java
@@ -23,16 +23,19 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.james.mdn.fields.Disposition;
 import org.apache.james.mdn.fields.Error;
 import org.apache.james.mdn.fields.ExtensionField;
+import org.apache.james.mdn.fields.Field;
 import org.apache.james.mdn.fields.FinalRecipient;
 import org.apache.james.mdn.fields.Gateway;
 import org.apache.james.mdn.fields.OriginalMessageId;
 import org.apache.james.mdn.fields.OriginalRecipient;
 import org.apache.james.mdn.fields.ReportingUserAgent;
 import org.apache.james.mdn.fields.Text;
+import org.apache.james.util.OptionalUtils;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
@@ -217,34 +220,28 @@ public class MDNReport {
     }
 
     public String formattedValue() {
-        return reportingUserAgentField.map(value -> value.formattedValue() + LINE_END).orElse("")
-            + gatewayField.map(value -> value.formattedValue() + LINE_END).orElse("")
-            + originalRecipientField.map(value -> value.formattedValue() + LINE_END).orElse("")
-            + finalRecipientField.formattedValue() + LINE_END
-            + originalMessageIdField.map(value -> value.formattedValue() + LINE_END).orElse("")
-            + dispositionField.formattedValue() + LINE_END
-            + formatErrors()
-            + formattedExtensionValue();
-    }
-
-    private String formatErrors() {
-        if (errorFields.isEmpty()) {
-            return "";
-        }
-        return errorFields.stream()
-            .map(Error::formattedValue)
+        Stream<Optional<? extends Field>> definedFields =
+            Stream.of(
+                reportingUserAgentField,
+                gatewayField,
+                originalRecipientField,
+                Optional.of(finalRecipientField),
+                originalMessageIdField,
+                Optional.of(dispositionField));
+        Stream<Optional<? extends Field>> errors =
+            errorFields.stream().map(Optional::of);
+        Stream<Optional<? extends Field>> extentions =
+            extensionFields.stream().map(Optional::of);
+
+        return Stream.concat(
+            definedFields,
+            Stream.concat(errors,
+                extentions))
+            .flatMap(OptionalUtils::toStream)
+            .map(Field::formattedValue)
             .collect(Collectors.joining(LINE_END)) + LINE_END;
     }
 
-    private String formattedExtensionValue() {
-        if (extensionFields.isEmpty()) {
-            return "";
-        }
-        return extensionFields.stream()
-            .map(ExtensionField::formattedValue)
-            .collect(Collectors.joining(EXTENSION_DELIMITER)) + LINE_END;
-    }
-
     @Override
     public final boolean equals(Object o) {
         if (o instanceof MDNReport) {


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