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 ro...@apache.org on 2016/07/19 08:04:26 UTC

[4/4] james-project git commit: JAMES-1800 Pretty print filters

JAMES-1800 Pretty print filters


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

Branch: refs/heads/master
Commit: 635607f23615b872bc21b7024455e0f524d24e47
Parents: cabe435
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Jul 13 16:39:12 2016 +0200
Committer: Matthieu Baechler <ma...@linagora.com>
Committed: Tue Jul 19 09:58:59 2016 +0200

----------------------------------------------------------------------
 .../org/apache/james/jmap/model/Filter.java     |  2 +-
 .../james/jmap/model/FilterCondition.java       |  5 +++++
 .../apache/james/jmap/model/FilterOperator.java | 22 +++++++++++++++----
 .../james/jmap/model/FilterOperatorTest.java    | 23 ++++++++++++++++++++
 4 files changed, 47 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/635607f2/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Filter.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Filter.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Filter.java
index 7509fba..2b8605b 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Filter.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Filter.java
@@ -25,5 +25,5 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = FilterDeserializer.class)
 public interface Filter {
-
+    String prettyPrint(String indentation);
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/635607f2/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
index 7185cb0..de5ea81 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
@@ -343,4 +343,9 @@ public class FilterCondition implements Filter {
         header.ifPresent(x -> helper.add("header", x));
         return helper.toString();
     }
+
+    @Override
+    public String prettyPrint(String indentation) {
+        return indentation + toString() + "\n";
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/635607f2/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterOperator.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterOperator.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterOperator.java
index f8ba52c..d1534b3 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterOperator.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterOperator.java
@@ -21,6 +21,7 @@ package org.apache.james.jmap.model;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -114,9 +115,22 @@ public class FilterOperator implements Filter {
 
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("operator", operator)
-                .add("conditions", conditions)
-                .toString();
+        return prettyPrint("");
+    }
+
+    @Override
+    public String prettyPrint(String indentation) {
+        return indentation
+            + MoreObjects.toStringHelper(getClass())
+                    .add("operator", operator)
+                    .toString()
+            + "\n"
+            + conditionListToString(indentation + "  ");
+    }
+
+    private String conditionListToString(String indentation) {
+        return conditions.stream()
+            .map(condition -> condition.prettyPrint(indentation))
+            .collect(Collectors.joining());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/635607f2/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterOperatorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterOperatorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterOperatorTest.java
index b2b1638..f7646bb 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterOperatorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterOperatorTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.Test;
 
+import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
@@ -101,4 +102,26 @@ public class FilterOperatorTest {
     public void shouldRespectJavaBeanContract() {
         EqualsVerifier.forClass(FilterOperator.class).verify();
     }
+
+    @Test
+    public void toStringShouldBePretty() {
+        FilterOperator testee = 
+                FilterOperator.and(
+                    FilterCondition.builder().inMailboxes("12","34").build(),
+                    FilterOperator.or(
+                        FilterOperator.not(
+                            FilterCondition.builder().notInMailboxes("45").build()),
+                        FilterCondition.builder().build()));
+                
+        String expected = Joiner.on('\n').join(
+                            "FilterOperator{operator=AND}",
+                            "  FilterCondition{inMailboxes=[12, 34]}",
+                            "  FilterOperator{operator=OR}",
+                            "    FilterOperator{operator=NOT}",
+                            "      FilterCondition{notInMailboxes=[45]}",
+                            "    FilterCondition{}",
+                            "");
+        String actual = testee.toString();
+        assertThat(actual).isEqualTo(expected);
+    }
 }


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