From 0014d7725ab3f82d2fba4f0677c3966324504876 Mon Sep 17 00:00:00 2001 From: Kresnadi Budisantoso Date: Wed, 6 Apr 2022 11:38:20 +0200 Subject: [PATCH] RED-3761 prevent compiledPrefixPattern to be nullable by testing prefixPattern parameter --- .../v1/server/redaction/model/Section.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java index a14af066..73b35204 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java @@ -261,27 +261,31 @@ public class Section { @Argument(ArgumentType.BOOLEAN) boolean patternCaseInsensitive, @Argument(ArgumentType.INTEGER) int group, @Argument(ArgumentType.REGEX) String valuePattern) { - Pattern compiledValuePattern = valuePattern == null ? null : Patterns.getCompiledPattern(valuePattern, patternCaseInsensitive); - Pattern compiledPrefixPattern = prefixPattern == null ? null : Patterns.getCompiledPattern(prefixPattern, patternCaseInsensitive); + if (StringUtils.isEmpty(prefixPattern)) { + return; + } + + var compiledValuePattern = valuePattern == null ? null : Patterns.getCompiledPattern(valuePattern, patternCaseInsensitive); + var compiledPrefixPattern = Patterns.getCompiledPattern(prefixPattern, patternCaseInsensitive); Set expanded = new HashSet<>(); - for (Entity entity : entities) { + for (var entity : entities) { if (!entity.getType().equals(type) || entity.getTextBefore() == null) { continue; } if (valuePattern != null) { - Matcher valueMatcher = compiledValuePattern.matcher(entity.getWord()); + var valueMatcher = compiledValuePattern.matcher(entity.getWord()); if (!valueMatcher.matches()) { continue; } } - Matcher matcher = compiledPrefixPattern.matcher(entity.getTextBefore()); + var matcher = compiledPrefixPattern.matcher(entity.getTextBefore()); while (matcher.find()) { - String match = matcher.group(group); + var match = matcher.group(group); if (StringUtils.isNotBlank(match)) { @@ -290,7 +294,7 @@ public class Section { continue; } - Set expandedEntities = findEntities(match + entity.getWord(), type, false, entity.isRedaction(), entity.getMatchedRule(), entity.getRedactionReason(), entity.getLegalBasis(), Engine.RULE, false); + var expandedEntities = findEntities(match + entity.getWord(), type, false, entity.isRedaction(), entity.getMatchedRule(), entity.getRedactionReason(), entity.getLegalBasis(), Engine.RULE, false); expanded.addAll(EntitySearchUtils.findNonOverlappingMatchEntities(entities, expandedEntities)); } }