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) {