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 2018/06/19 09:53:49 UTC

[3/8] james-project git commit: JAMES-2429 provide Targets as a Stream of enum value

JAMES-2429 provide Targets as a Stream of enum value


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

Branch: refs/heads/master
Commit: 380721c0c3b03a2d181e9d61c3332f7d94c958cb
Parents: 9c67375
Author: Matthieu Baechler <ma...@apache.org>
Authored: Thu Jun 14 15:42:52 2018 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Jun 19 16:52:40 2018 +0700

----------------------------------------------------------------------
 .../james/dlp/api/DLPConfigurationItem.java     | 73 ++++++++++----------
 .../james/dlp/api/DLPConfigurationItemTest.java |  6 ++
 .../cassandra/DLPConfigurationItemDTO.java      |  2 +-
 3 files changed, 45 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/380721c0/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationItem.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationItem.java b/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationItem.java
index 75c1b7d..79d5e94 100644
--- a/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationItem.java
+++ b/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationItem.java
@@ -19,10 +19,12 @@
 
 package org.apache.james.dlp.api;
 
+import java.util.EnumSet;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
+import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -72,51 +74,52 @@ public class DLPConfigurationItem {
     }
 
     public static class Builder {
-        private static final boolean NOT_TARGETED = false;
 
-        private Optional<Boolean> targetsSender;
-        private Optional<Boolean> targetsRecipients;
-        private Optional<Boolean> targetsContent;
+        private EnumSet<Targets.Type> targets;
         private Optional<String> explanation;
         private Optional<String> expression;
         private Optional<Id> id;
 
         public Builder() {
-            targetsSender = Optional.empty();
-            targetsRecipients = Optional.empty();
-            targetsContent = Optional.empty();
+            targets = EnumSet.noneOf(Targets.Type.class);
             explanation = Optional.empty();
             expression = Optional.empty();
             id = Optional.empty();
         }
 
         public Builder targetsSender() {
-            this.targetsSender = Optional.of(true);
+            this.targets.add(Targets.Type.Sender);
             return this;
         }
 
         public Builder targetsSender(boolean targetsSender) {
-            this.targetsSender = Optional.of(targetsSender);
+            if (targetsSender) {
+                return targetsSender();
+            }
             return this;
         }
 
         public Builder targetsRecipients() {
-            this.targetsRecipients = Optional.of(true);
+            this.targets.add(Targets.Type.Recipient);
             return this;
         }
 
         public Builder targetsRecipients(boolean targetsRecipients) {
-            this.targetsRecipients = Optional.of(targetsRecipients);
+            if (targetsRecipients) {
+                return targetsRecipients();
+            }
             return this;
         }
 
         public Builder targetsContent() {
-            this.targetsContent = Optional.of(true);
+            this.targets.add(Targets.Type.Content);
             return this;
         }
 
         public Builder targetsContent(boolean targetsContent) {
-            this.targetsContent = Optional.of(targetsContent);
+            if (targetsContent) {
+                return targetsContent();
+            }
             return this;
         }
 
@@ -153,10 +156,7 @@ public class DLPConfigurationItem {
                 id.get(),
                 explanation,
                 ensureValidPattern(expression.get()),
-                new Targets(
-                    targetsSender.orElse(NOT_TARGETED),
-                    targetsRecipients.orElse(NOT_TARGETED),
-                    targetsContent.orElse(NOT_TARGETED)));
+                new Targets(targets));
         }
 
         private Pattern ensureValidPattern(String input) {
@@ -174,26 +174,33 @@ public class DLPConfigurationItem {
     }
 
     public static class Targets {
-        private final boolean senderTargeted;
-        private final boolean recipientTargeted;
-        private final boolean contentTargeted;
-
-        public Targets(boolean senderTargeted, boolean recipientTargeted, boolean contentTargeted) {
-            this.senderTargeted = senderTargeted;
-            this.recipientTargeted = recipientTargeted;
-            this.contentTargeted = contentTargeted;
+
+        public enum Type {
+            Sender,
+            Recipient,
+            Content
+        }
+
+        private final EnumSet<Type> targets;
+
+        private Targets(EnumSet<Type> targets) {
+            this.targets = targets;
         }
 
         public boolean isSenderTargeted() {
-            return senderTargeted;
+            return targets.contains(Type.Sender);
         }
 
         public boolean isRecipientTargeted() {
-            return recipientTargeted;
+            return targets.contains(Type.Recipient);
         }
 
         public boolean isContentTargeted() {
-            return contentTargeted;
+            return targets.contains(Type.Content);
+        }
+
+        public Stream<Type> list() {
+            return targets.stream();
         }
 
         @Override
@@ -201,24 +208,20 @@ public class DLPConfigurationItem {
             if (o instanceof Targets) {
                 Targets targets = (Targets) o;
 
-                return Objects.equals(this.senderTargeted, targets.senderTargeted)
-                    && Objects.equals(this.recipientTargeted, targets.recipientTargeted)
-                    && Objects.equals(this.contentTargeted, targets.contentTargeted);
+                return Objects.equals(this.targets, targets.targets);
             }
             return false;
         }
 
         @Override
         public final int hashCode() {
-            return Objects.hash(senderTargeted, recipientTargeted, contentTargeted);
+            return Objects.hash(targets);
         }
 
         @Override
         public String toString() {
             return MoreObjects.toStringHelper(this)
-                .add("senderTargeted", senderTargeted)
-                .add("recipientTargeted", recipientTargeted)
-                .add("contentTargeted", contentTargeted)
+                .add("targets", targets)
                 .toString();
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/380721c0/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationItemTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationItemTest.java b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationItemTest.java
index 8887568..e185d15 100644
--- a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationItemTest.java
+++ b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationItemTest.java
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
+import org.apache.james.dlp.api.DLPConfigurationItem.Targets.Type;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.Test;
 
@@ -149,6 +150,7 @@ public class DLPConfigurationItemTest {
             softly.assertThat(dlpConfigurationItem.getTargets().isContentTargeted()).isFalse();
             softly.assertThat(dlpConfigurationItem.getTargets().isRecipientTargeted()).isFalse();
             softly.assertThat(dlpConfigurationItem.getTargets().isSenderTargeted()).isFalse();
+            softly.assertThat(dlpConfigurationItem.getTargets().list()).isEmpty();
         });
     }
 
@@ -164,6 +166,7 @@ public class DLPConfigurationItemTest {
             softly.assertThat(dlpConfigurationItem.getTargets().isContentTargeted()).isFalse();
             softly.assertThat(dlpConfigurationItem.getTargets().isRecipientTargeted()).isTrue();
             softly.assertThat(dlpConfigurationItem.getTargets().isSenderTargeted()).isFalse();
+            softly.assertThat(dlpConfigurationItem.getTargets().list()).contains(Type.Recipient);
         });
     }
 
@@ -179,6 +182,7 @@ public class DLPConfigurationItemTest {
             softly.assertThat(dlpConfigurationItem.getTargets().isContentTargeted()).isFalse();
             softly.assertThat(dlpConfigurationItem.getTargets().isRecipientTargeted()).isFalse();
             softly.assertThat(dlpConfigurationItem.getTargets().isSenderTargeted()).isTrue();
+            softly.assertThat(dlpConfigurationItem.getTargets().list()).contains(Type.Sender);
         });
     }
 
@@ -194,6 +198,7 @@ public class DLPConfigurationItemTest {
             softly.assertThat(dlpConfigurationItem.getTargets().isContentTargeted()).isTrue();
             softly.assertThat(dlpConfigurationItem.getTargets().isRecipientTargeted()).isFalse();
             softly.assertThat(dlpConfigurationItem.getTargets().isSenderTargeted()).isFalse();
+            softly.assertThat(dlpConfigurationItem.getTargets().list()).contains(Type.Content);
         });
     }
 
@@ -211,6 +216,7 @@ public class DLPConfigurationItemTest {
             softly.assertThat(dlpConfigurationItem.getTargets().isContentTargeted()).isTrue();
             softly.assertThat(dlpConfigurationItem.getTargets().isRecipientTargeted()).isTrue();
             softly.assertThat(dlpConfigurationItem.getTargets().isSenderTargeted()).isTrue();
+            softly.assertThat(dlpConfigurationItem.getTargets().list()).contains(Type.Content, Type.Sender, Type.Recipient);
         });
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/380721c0/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemDTO.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemDTO.java b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemDTO.java
index 02b6e4e..433e07f 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemDTO.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemDTO.java
@@ -40,7 +40,7 @@ public class DLPConfigurationItemDTO {
         return new DLPConfigurationItemDTO(
             dlpConfiguration.getId().asString(),
             dlpConfiguration.getExplanation(),
-            dlpConfiguration.getRegexp(),
+            dlpConfiguration.getRegexp().pattern(),
             targets.isContentTargeted(),
             targets.isSenderTargeted(),
             targets.isRecipientTargeted());


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