Добавлена ошибка при добавлении паттерна с неправильной регуляркой

This commit is contained in:
serega6531
2020-03-13 02:13:14 +03:00
parent 065960dba1
commit 1854cf174b
2 changed files with 12 additions and 2 deletions

View File

@@ -99,7 +99,7 @@ public class PatternMatcher {
return a <= x && x <= b; return a <= x && x <= b;
} }
private java.util.regex.Pattern compilePattern(Pattern pattern) { static java.util.regex.Pattern compilePattern(Pattern pattern) {
return compiledPatterns.computeIfAbsent(pattern.getValue(), java.util.regex.Pattern::compile); return compiledPatterns.computeIfAbsent(pattern.getValue(), java.util.regex.Pattern::compile);
} }

View File

@@ -8,11 +8,13 @@ import ru.serega6531.packmate.model.FoundPattern;
import ru.serega6531.packmate.model.Pattern; import ru.serega6531.packmate.model.Pattern;
import ru.serega6531.packmate.model.Stream; import ru.serega6531.packmate.model.Stream;
import ru.serega6531.packmate.model.enums.PatternDirectionType; import ru.serega6531.packmate.model.enums.PatternDirectionType;
import ru.serega6531.packmate.model.enums.PatternSearchType;
import ru.serega6531.packmate.model.enums.SubscriptionMessageType; import ru.serega6531.packmate.model.enums.SubscriptionMessageType;
import ru.serega6531.packmate.model.pojo.SubscriptionMessage; import ru.serega6531.packmate.model.pojo.SubscriptionMessage;
import ru.serega6531.packmate.repository.PatternRepository; import ru.serega6531.packmate.repository.PatternRepository;
import java.util.*; import java.util.*;
import java.util.regex.PatternSyntaxException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@@ -71,9 +73,17 @@ public class PatternService {
} }
public Pattern save(Pattern pattern) { public Pattern save(Pattern pattern) {
log.info("Добавлен новый паттерн {} со значением {}", pattern.getName(), pattern.getValue()); if(pattern.getSearchType() == PatternSearchType.REGEX) {
try {
PatternMatcher.compilePattern(pattern);
} catch (PatternSyntaxException e) {
throw new IllegalArgumentException(e.getMessage());
}
}
final Pattern saved = repository.save(pattern); final Pattern saved = repository.save(pattern);
patterns.put(saved.getId(), saved); patterns.put(saved.getId(), saved);
log.info("Добавлен новый паттерн {} со значением {}", pattern.getName(), pattern.getValue());
subscriptionService.broadcast(new SubscriptionMessage(SubscriptionMessageType.SAVE_PATTERN, saved)); subscriptionService.broadcast(new SubscriptionMessage(SubscriptionMessageType.SAVE_PATTERN, saved));
return saved; return saved;
} }