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 <[email protected]> Authored: Thu Jun 14 15:42:52 2018 +0200 Committer: benwa <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
