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