From e9ab97ae141239d0d2a9317eb7113e2b08bf3a89 Mon Sep 17 00:00:00 2001 From: Sascha Wiedenfeld Date: Fri, 12 Jun 2020 14:15:13 +0200 Subject: [PATCH] Compile each file match pattern only once #1409 --- .../java/com/github/dockerjava/core/GoLangFileMatch.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/GoLangFileMatch.java b/docker-java-core/src/main/java/com/github/dockerjava/core/GoLangFileMatch.java index 445c00120..be82e6262 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/GoLangFileMatch.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/GoLangFileMatch.java @@ -5,7 +5,9 @@ import java.io.File; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; @@ -52,6 +54,8 @@ private GoLangFileMatch() { private static final String PATTERN_CHARS_TO_ESCAPE = "\\.[]{}()*+-?^$|"; + private static final Map PATTERNS = new HashMap<>(); + public static boolean match(List patterns, File file) { return !match(patterns, file.getPath()).isEmpty(); } @@ -74,7 +78,7 @@ public static List match(List patterns, String name) { } public static boolean match(String pattern, String name) { - return buildPattern(pattern).matcher(name).matches(); + return PATTERNS.computeIfAbsent(pattern, GoLangFileMatch::buildPattern).matcher(name).matches(); } private static Pattern buildPattern(String pattern) {