mirror of
https://github.com/aikar/commands.git
synced 2026-05-31 06:11:55 +00:00
use ExpiringMap for Pattern Cache
This commit is contained in:
@@ -46,6 +46,12 @@
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.jodah</groupId>
|
||||
<artifactId>expiringmap</artifactId>
|
||||
<version>0.5.8</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
@@ -70,6 +76,10 @@
|
||||
<pattern>co.aikar.locales</pattern>
|
||||
<shadedPattern>co.aikar.commands.locales</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>net.jodah.expiringmap</pattern>
|
||||
<shadedPattern>co.aikar.commands.lib.expiringmap</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@@ -24,8 +24,11 @@
|
||||
package co.aikar.commands;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import net.jodah.expiringmap.ExpirationPolicy;
|
||||
import net.jodah.expiringmap.ExpiringMap;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
@@ -51,7 +54,12 @@ final class ACFPatterns {
|
||||
|
||||
private ACFPatterns() {}
|
||||
@SuppressWarnings("Convert2MethodRef")
|
||||
static final Map<String, Pattern> patternCache = Maps.newHashMap();
|
||||
static final Map<String, Pattern> patternCache = ExpiringMap.builder()
|
||||
.maxSize(200)
|
||||
.expiration(1, TimeUnit.HOURS)
|
||||
.expirationPolicy(ExpirationPolicy.ACCESSED)
|
||||
.build();
|
||||
|
||||
public static Pattern getPattern(String pattern) {
|
||||
return patternCache.computeIfAbsent(pattern, s -> Pattern.compile(pattern));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user