JAMES-2420 checks that expression is a valid Pattern
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ab900b8f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ab900b8f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ab900b8f Branch: refs/heads/master Commit: ab900b8f8e30b9980b770b29e959d4d31b7605f5 Parents: 386387e Author: Matthieu Baechler <matth...@apache.org> Authored: Wed Jun 13 17:18:26 2018 +0200 Committer: benwa <btell...@linagora.com> Committed: Thu Jun 14 15:23:13 2018 +0700 ---------------------------------------------------------------------- .../org/apache/james/dlp/api/DLPConfigurationItem.java | 13 +++++++++++++ .../apache/james/dlp/api/DLPConfigurationItemTest.java | 11 +++++++++++ 2 files changed, 24 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ab900b8f/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 727322b..04747cb 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 @@ -21,6 +21,8 @@ package org.apache.james.dlp.api; import java.util.Objects; import java.util.Optional; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; import org.apache.commons.lang3.StringUtils; @@ -122,6 +124,8 @@ 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, @@ -131,6 +135,15 @@ public class DLPConfigurationItem { targetsRecipients.orElse(NOT_TARGETED), targetsContent.orElse(NOT_TARGETED))); } + + private static boolean isValidPattern(String regex) { + try { + Pattern.compile(regex); + return true; + } catch (PatternSyntaxException e) { + return false; + } + } } public static class Targets { http://git-wip-us.apache.org/repos/asf/james-project/blob/ab900b8f/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 2646f74..b0d8f9b 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 @@ -107,6 +107,17 @@ public class DLPConfigurationItemTest { } @Test + void expressionShouldBeValidPattern() { + assertThatThrownBy(() -> + DLPConfigurationItem.builder() + .id(UNIQUE_ID) + .expression("*") + .build()) + .isInstanceOf(IllegalStateException.class); + } + + + @Test void builderShouldPreserveExpression() { DLPConfigurationItem dlpConfigurationItem = DLPConfigurationItem.builder() .id(UNIQUE_ID) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org