JAMES-2420 DLPConfigurationItem should have an Id property
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/386387ef Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/386387ef Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/386387ef Branch: refs/heads/master Commit: 386387ef6c321d4a45df67ca355e655afc4ad8ef Parents: e08277e Author: Matthieu Baechler <matth...@apache.org> Authored: Wed Jun 13 17:13:58 2018 +0200 Committer: benwa <btell...@linagora.com> Committed: Thu Jun 14 15:23:13 2018 +0700 ---------------------------------------------------------------------- .../james/dlp/api/DLPConfigurationItem.java | 67 +++++++++++++++++++- .../james/dlp/api/DLPConfigurationItemTest.java | 47 +++++++++++++- .../org/apache/james/dlp/api/DLPFixture.java | 2 + 3 files changed, 112 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/386387ef/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 bda1c24..727322b 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 @@ -22,11 +22,54 @@ package org.apache.james.dlp.api; import java.util.Objects; import java.util.Optional; +import org.apache.commons.lang3.StringUtils; + import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; +import com.google.common.base.Strings; public class DLPConfigurationItem { + public static class Id { + + public static Id of(String id) { + Preconditions.checkNotNull(id, "id should no be null"); + Preconditions.checkArgument(StringUtils.isNotBlank(id), "id should no be empty"); + return new Id(id); + } + + private final String value; + + private Id(String value) { + this.value = value; + } + + public String asString() { + return value; + } + + @Override + public boolean equals(Object o) { + if (o instanceof Id) { + Id id = (Id) o; + return Objects.equals(value, id.value); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hash(value); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("value", value) + .toString(); + } + } + public static class Builder { private static final boolean NOT_TARGETED = false; @@ -35,6 +78,7 @@ public class DLPConfigurationItem { private Optional<Boolean> targetsContent; private Optional<String> explanation; private Optional<String> expression; + private Optional<Id> id; public Builder() { targetsSender = Optional.empty(); @@ -42,6 +86,7 @@ public class DLPConfigurationItem { targetsContent = Optional.empty(); explanation = Optional.empty(); expression = Optional.empty(); + id = Optional.empty(); } public Builder targetsSender() { @@ -69,9 +114,16 @@ public class DLPConfigurationItem { return this; } + public Builder id(Id id) { + this.id = Optional.of(id); + return this; + } + public DLPConfigurationItem build() { + Preconditions.checkState(id.isPresent(), "`id` is mandatory"); Preconditions.checkState(expression.isPresent(), "`expression` is mandatory"); return new DLPConfigurationItem( + id.get(), explanation, expression.get(), new Targets( @@ -125,6 +177,7 @@ public class DLPConfigurationItem { public String toString() { return MoreObjects.toStringHelper(this) .add("senderTargeted", senderTargeted) + .add("senderTargeted", senderTargeted) .add("recipientTargeted", recipientTargeted) .add("contentTargeted", contentTargeted) .toString(); @@ -135,11 +188,13 @@ public class DLPConfigurationItem { return new Builder(); } + private final Id id; private final Optional<String> explanation; private final String regexp; private final Targets targets; - private DLPConfigurationItem(Optional<String> explanation, String regexp, Targets targets) { + private DLPConfigurationItem(Id id, Optional<String> explanation, String regexp, Targets targets) { + this.id = id; this.explanation = explanation; this.regexp = regexp; this.targets = targets; @@ -157,12 +212,17 @@ public class DLPConfigurationItem { return targets; } + public Id getId() { + return id; + } + @Override public final boolean equals(Object o) { if (o instanceof DLPConfigurationItem) { DLPConfigurationItem dlpConfigurationItem = (DLPConfigurationItem) o; - return Objects.equals(this.explanation, dlpConfigurationItem.explanation) + return Objects.equals(this.id, dlpConfigurationItem.id) + && Objects.equals(this.explanation, dlpConfigurationItem.explanation) && Objects.equals(this.regexp, dlpConfigurationItem.regexp) && Objects.equals(this.targets, dlpConfigurationItem.targets); } @@ -171,12 +231,13 @@ public class DLPConfigurationItem { @Override public final int hashCode() { - return Objects.hash(explanation, regexp, targets); + return Objects.hash(id, explanation, regexp, targets); } @Override public String toString() { return MoreObjects.toStringHelper(this) + .add("id", id) .add("explanation", explanation) .add("regexp", regexp) .add("targets", targets) http://git-wip-us.apache.org/repos/asf/james-project/blob/386387ef/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 4a38bf1..2646f74 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 @@ -32,6 +32,7 @@ public class DLPConfigurationItemTest { private static final String EXPLANATION = "explanation"; private static final String REGEX = "regex"; + public static final DLPConfigurationItem.Id UNIQUE_ID = DLPConfigurationItem.Id.of("uniqueId"); @Test void shouldMatchBeanContract() { @@ -48,9 +49,45 @@ public class DLPConfigurationItemTest { } @Test + void innerClassIdShouldMatchBeanContract() { + EqualsVerifier.forClass(DLPConfigurationItem.Targets.class) + .allFieldsShouldBeUsed() + .verify(); + } + + @Test + void idShouldThrowOnNull() { + assertThatThrownBy(() -> DLPConfigurationItem.Id.of(null)).isInstanceOf(NullPointerException.class); + } + + @Test + void idShouldThrowOnEmpty() { + assertThatThrownBy(() -> DLPConfigurationItem.Id.of("")).isInstanceOf(IllegalArgumentException.class); + } + + @Test + void idShouldThrowOnBlank() { + assertThatThrownBy(() -> DLPConfigurationItem.Id.of(" ")).isInstanceOf(IllegalArgumentException.class); + } + + @Test + void idShouldBeMandatory() { + assertThatThrownBy(() -> + DLPConfigurationItem.builder() + .expression("my expression") + .targetsRecipients() + .targetsSender() + .targetsContent() + .explanation(EXPLANATION) + .build()) + .isInstanceOf(IllegalStateException.class); + } + + @Test void expressionShouldBeMandatory() { assertThatThrownBy(() -> DLPConfigurationItem.builder() + .id(UNIQUE_ID) .targetsRecipients() .targetsSender() .targetsContent() @@ -60,9 +97,10 @@ public class DLPConfigurationItemTest { } @Test - void expressionShouldBeTheOnlyMandatoryField() { + void expressionAndIdShouldBeTheOnlyMandatoryFields() { assertThatCode(() -> DLPConfigurationItem.builder() + .id(UNIQUE_ID) .expression(REGEX) .build()) .doesNotThrowAnyException(); @@ -71,6 +109,7 @@ public class DLPConfigurationItemTest { @Test void builderShouldPreserveExpression() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() + .id(UNIQUE_ID) .expression(REGEX) .build(); @@ -80,6 +119,7 @@ public class DLPConfigurationItemTest { @Test void builderShouldPreserveExplanation() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() + .id(UNIQUE_ID) .explanation(EXPLANATION) .expression(REGEX) .build(); @@ -90,6 +130,7 @@ public class DLPConfigurationItemTest { @Test void dlpRuleShouldHaveNoTargetsWhenNoneSpecified() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() + .id(UNIQUE_ID) .expression(REGEX) .build(); @@ -103,6 +144,7 @@ public class DLPConfigurationItemTest { @Test void targetsRecipientsShouldBeReportedInTargets() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() + .id(UNIQUE_ID) .targetsRecipients() .expression(REGEX) .build(); @@ -117,6 +159,7 @@ public class DLPConfigurationItemTest { @Test void targetsSenderShouldBeReportedInTargets() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() + .id(UNIQUE_ID) .targetsSender() .expression(REGEX) .build(); @@ -131,6 +174,7 @@ public class DLPConfigurationItemTest { @Test void targetsContentShouldBeReportedInTargets() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() + .id(UNIQUE_ID) .targetsContent() .expression(REGEX) .build(); @@ -145,6 +189,7 @@ public class DLPConfigurationItemTest { @Test void allTargetsShouldBeReportedInTargets() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() + .id(UNIQUE_ID) .targetsContent() .targetsSender() .targetsRecipients() http://git-wip-us.apache.org/repos/asf/james-project/blob/386387ef/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java index 9eea6fc..4b7e86c 100644 --- a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java +++ b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java @@ -21,11 +21,13 @@ package org.apache.james.dlp.api; public interface DLPFixture { DLPConfigurationItem RULE = DLPConfigurationItem.builder() + .id(DLPConfigurationItem.Id.of("id1")) .explanation("explanation") .expression("regex") .targetsSender() .build(); DLPConfigurationItem RULE_2 = DLPConfigurationItem.builder() + .id(DLPConfigurationItem.Id.of("id2")) .explanation("explanation2") .expression("regex2") .targetsSender() --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org