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/14 08:35:28 UTC
[10/13] james-project git commit: JAMES-2420 DLPConfigurationItem
should have an Id property
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 <ma...@apache.org>
Authored: Wed Jun 13 17:13:58 2018 +0200
Committer: benwa <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org