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:51 UTC

[5/8] james-project git commit: JAMES-2429 keep compiled Pattern once checked for validity

JAMES-2429 keep compiled Pattern once checked for validity


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

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

----------------------------------------------------------------------
 .../james/dlp/api/DLPConfigurationItem.java     | 25 ++++++++++++--------
 .../james/dlp/api/DLPConfigurationItemTest.java |  2 +-
 2 files changed, 16 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9c67375e/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 6c48b8d..75c1b7d 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
@@ -148,24 +148,27 @@ public class DLPConfigurationItem {
         public DLPConfigurationItem build() {
             Preconditions.checkState(id.isPresent(), "`id` is mandatory");
             Preconditions.checkState(expression.isPresent(), "`expression` is mandatory");
-            Preconditions.checkState(isValidPattern(expression.get()), "`expression` must be a valid regex");
 
             return new DLPConfigurationItem(
                 id.get(),
                 explanation,
-                expression.get(),
+                ensureValidPattern(expression.get()),
                 new Targets(
                     targetsSender.orElse(NOT_TARGETED),
                     targetsRecipients.orElse(NOT_TARGETED),
                     targetsContent.orElse(NOT_TARGETED)));
         }
 
-        private static boolean isValidPattern(String regex) {
+        private Pattern ensureValidPattern(String input) {
+            return isValidPattern(input)
+                .orElseThrow(() -> new IllegalStateException("`expression` must be a valid regex"));
+        }
+
+        private static Optional<Pattern> isValidPattern(String regex) {
             try {
-                Pattern.compile(regex);
-                return true;
+                return Optional.of(Pattern.compile(regex));
             } catch (PatternSyntaxException e) {
-                return false;
+                return Optional.empty();
             }
         }
     }
@@ -226,10 +229,10 @@ public class DLPConfigurationItem {
 
     private final Id id;
     private final Optional<String> explanation;
-    private final String regexp;
+    private final Pattern regexp;
     private final Targets targets;
 
-    private DLPConfigurationItem(Id id, Optional<String> explanation, String regexp, Targets targets) {
+    private DLPConfigurationItem(Id id, Optional<String> explanation, Pattern regexp, Targets targets) {
         this.id = id;
         this.explanation = explanation;
         this.regexp = regexp;
@@ -240,7 +243,7 @@ public class DLPConfigurationItem {
         return explanation;
     }
 
-    public String getRegexp() {
+    public Pattern getRegexp() {
         return regexp;
     }
 
@@ -257,9 +260,11 @@ public class DLPConfigurationItem {
         if (o instanceof DLPConfigurationItem) {
             DLPConfigurationItem dlpConfigurationItem = (DLPConfigurationItem) o;
 
+            Optional<String> regexp = Optional.ofNullable(this.regexp).map(Pattern::pattern);
+            Optional<String> otherRegexp = Optional.ofNullable(dlpConfigurationItem.regexp).map(Pattern::pattern);
             return Objects.equals(this.id, dlpConfigurationItem.id)
                 && Objects.equals(this.explanation, dlpConfigurationItem.explanation)
-                && Objects.equals(this.regexp, dlpConfigurationItem.regexp)
+                && Objects.equals(regexp, otherRegexp)
                 && Objects.equals(this.targets, dlpConfigurationItem.targets);
         }
         return false;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c67375e/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 b0d8f9b..8887568 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
@@ -124,7 +124,7 @@ public class DLPConfigurationItemTest {
             .expression(REGEX)
             .build();
 
-        assertThat(dlpConfigurationItem.getRegexp()).isEqualTo(REGEX);
+        assertThat(dlpConfigurationItem.getRegexp().pattern()).isEqualTo(REGEX);
     }
 
     @Test


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